Blogs

Software Development

How to Become a Software Developer

Published Jan 28, 2022

The easy route to Software Development

Did the headline get you so excited that you want to dive straight into this article? Don’t get too disappointed because there is no easy route to Software Development. The saying goes, ‘nothing good comes easy’ But do not get too hasty to want to back off, there is some consolation for you. At the end of this article, what you will discover is a practical route to software development. 

What is Software Development?

According to Wikipedia, is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. To put it simply, software entails designing instructions for a computer to perform. 

According to IBM, there are three main aspects of software development namely;

  • System software to provide core functions such as operating systems, disk management, utilities, hardware management and, other operational necessities.
  • Programming software to give programmers tools such as text editors, compilers, linkers, debuggers and, other tools to create code.
  • Application software (applications or apps) to help users perform tasks. Office productivity suites, data management software, media players and, security programs are examples. Applications also refer to web and mobile applications like those used to shop on Amazon.com, socialize with Facebook, or post pictures to Instagram. 

Frequent Questions about Software Development

Like most newbies, you probably have been prompted with certain questions you had hoped could get answered. You are not alone as these questions come up a lot and this article will do its best to answer some of them;

  • What Programming languages are best suited for you: Bad news! This article can not choose for you. Good news! Whichever one you pick will do just fine. Python is widely used for software development, easy to learn, and has tons of resources to help you get up to speed. Java and C# on the other offer a much steeper learning curve. The best part about all the mentioned programming languages is that they all enable a smooth transition to other languages you might opt for as you go along.
  • Do you have to be good at maths: This one has to be a favourite among common questions. It is not far-fetched to see why considering the high level of maths phobia in Nigeria. If this is you, breathe easy because you almost would not be needing maths. Unless you decide to take on projects that rely heavily on Geometry (Useful for graphics designs in gameplay interface), Statistics (for data science), Probability (For calculating odds particularly useful for casino and generally betting setups), Graph Theory, Linear algebra (For game development too), Calculus. For most parts, you would hardly encounter maths. So stuff your numerophobia in a sack, toss it aside, and get started.
  • Do you need a Computer Science Degree? Short answer? No. With millions of learning resources available online, anyone can learn software development in a matter of months with intense practice. If you are worried about being employable without a degree, it will surprise you to know that more and more companies are ditching the idea of having a degree as a primary prerequisite for joining them. Some of those companies are AirBnb, Apple, Google, ebay, IBM, Facebook, Pinterest, and Linkedin. Tesla Billionaire Elon Musk thinks “people don’t need college to learn stuff” and says jobs at his companies should not require a degree. Even back home in Nigeria, quite a few companies have adopted this approach and some have students in tertiary institutions within its ranks. There is also the option of working remotely for organizations outside the shores of the country.
  • What is the best way to learn Software Development? Start by taking courses online, read up on resources in line with the programming language and area of programming you intend to practice. Watch youtube videos. Join online communities. But be careful not to fall into the allure of infinite learning before actually doing something. 

Just as you can not drive a car or ride a bicycle simply by reading, you can not learn software development without trying things out for yourself. This accelerates your learning process by more than a million books. Do not overwhelm yourself with too many resources. Practice! Practice!! Practice!!! Build small projects and always savor every win.

  • Take up Software Development internships wherever you can. This will allow you to work on real-life projects and, of course, accelerate your learning.
  • What do you do when you find yourself stuck? Ask for help from more experienced developers. Ask questions within your Software development community, ask Google. Do not let your ego hinder you from valuable learning moments and best believe that software development will humble you at a lot of stages. Keep an open mind and most definitely, ask better questions. “The man who asks a question is a fool for a minute, the man who does not ask is a fool for life”, Confucius.

Principles that apply to Software Development

While you intend to go into Software development, there are a few principles that you use to stay on track;

  • Keeping it Simple. Your job as a software developer is not necessarily to write codes but more of solving problems. There is no use in writing complicated codes that are useless as the D in Django (Pun intended). Identify the problem, design and implement simple but useful solutions to address them. This will not only help with problem-solving but also make it easy for you if you ever need to review the work. Example of a simple Java Code; 
/*Helloworld.java
public class HelloWorld
{
     public static void main (String[] args) {
       System.out.printIn("Hello World!");
   }
}

Implement Do not Repeat Yourself aka DRY Codes: A common mistake that a lot of newbies make and surprisingly even some experienced developers are guilty of is repeating codes. This is known as Write everything Twice or WET Codes in programming.

IamDevGrant on youtube gives reasons as to why this could be a problem for you and he gives an example and reasons why you should use DRY codes as a principle instead of WET Codes.

  • Apply the Open-Closed Principle. As a matter of principle, you should always allow your class, models, functions, etc to be open to extension but closed to modification. Why is this you may ask? Imagine you have a set of codes in a class that is repeated, and downline you are required to scale the code. It will entail deleting all variables in that class just to make such modifications or even scale, which can be daunting. The source code should not have to suffer disruption for a modification to work.
  • Composition over Inheritance. Inheritance is when you design your types around what they are, composition is when you design your types around what they do. This is a very necessary principle because it makes for easier testability of a class than inheritance and also allows for more flexibility in design. You can check out a very easy-to-understand example here.
  • Single Responsibility Principle. The single-responsibility principle (SRP) is a computer-programming principle that states that every module, class, or function in a computer program should have responsibility for a single part of that program’s functionality, and it should encapsulate that part. All of that module, class, or function’s services should be narrowly aligned with that responsibility. To put it more simply, each class within a modular programme should be assigned to perform a single task. Why is this important? Because it makes your software easier to implement and prevents unexpected side-effects of future changes. See an example here.
  • Separation of Concerns Principle. As the name implies, this entails separating applications into distinct sections, this allows each session to address specific concerns. A concern is a set of information that affects the code of a programme. In software architecture, this can be achieved by establishing constraints or boundaries which could include the use of methods, objects, components, and services to define core behavior within an application. You can also look at it as a way a programme is designed in different containers, such that they have no form of interaction. A good illustration will be seen as described on wikipedia as “Common examples include separating a space into rooms, so that activity in one room does not affect people in other rooms, and keeping the stove on one circuit and the lights on another, so that overload by the stove does not turn the lights off.” 
  • You Aren’t Going to Need It (YAGNI). Do not, based on functionality, try to write codes for something you think you might need in the future. This could result in bloating and you do not want that. Keep it simple and do not create codes for problems that do not exist yet.
  • Document your Code. This principle can not be overemphasized. As with all things, documentation is very important. Learning to leave notes and comments. This will not just be of great use to others with whom you might be collaborating with but also yourself. It makes it very convenient if you have to come back to that project months after you left with easy navigation. As you go along on your software development journey, you will find this principle very handy.
  • Refactoring. To put succinctly, improve a source code constantly without affecting its behaviour. As you start, there will be a lot of figuring out to do. You will try things that will not work out in the first instance and this is perfectly normal. As the saying goes “Strive for progress, not perfection”. Along the line of progression, you will see lots of unnecessary clutters that your programme could do without. Eliminate them, refine your processes and optimize outcomes.
  • Clean codes at all costs. One recurring theme in most of the principles highlighted here is that of simplicity. Less is indeed more. Keep this always at the back of your mind when writing codes that you are writing to proffer solutions. Complicated and cluttered codes impress no one. Do not let that overzealous and unproductive developer be you.

The purpose of this article is to show you what is possible as far as your dreams about getting into Software Development go. Do not hold back on yourself. Learn, implement and build. Get certifications online and offline. Take up internships wherever you can. You can check a few software development companies in Nigeria depending on where you are located, just in case you are looking for where to shoot your shots.

Useful article? Please share it with your followers:

Related Articles
Elevating Your Business: The Power of Effectiv...
Introduction Running a small business comes with its challenges, and managing your stock efficiently is one...

Software development

Introducing IPOS: Your Business's New Best Friend
As a business owner, tracking your goods or services can be challenging. From low stock reminders...

Software development

Things Every JavaScript Programmer Should Know
This article is here to answer the questions things a JavaScript programmer should know, but before...

Software development