What Is Software Development?
Software development is the creation of software, frameworks, or applications. Softwares allow us to use devices such as phones, computers, and other electronics that have computing capabilities. There are two main types of software; application software, and systems software.
Android, Fire OS, and iOS are operating systems that enable us to interact with smartphones and tablets devices and fall into the category of systems software. Any software that manages hardware falls under the umbrella of systems software. Other examples include Mac OS, Linux, and Kai OS which powers some phones.
To build systems software, developers use various high-level programming languages such as Java, FORTRAN, Pascal, Python, C++, and C#.
You’re probably reading this on some type of browser. A browser is one type of application software. Application software enable you to carry out activities such as sending emails, watching movies, or playing games.
Productivity applications such as Excel, Google Docs, and Google Calendars also fall under application software.
Now lets talk about how to get into software development.
How to Be a Software Developer
You need to narrow down what kind of software you want to build and then study the relevant programming languages. It is important to note that software development involves a lot of problem-solving. It requires;
- Willingness to work with teams
- Exceptional attention to detail
- Good work ethic to work on projects that can run for days, weeks, months or even years
- Ability to learn and ideate on the job
Software Development Pathways You Can Choose
There are several types of software development and they lead to different career paths. They include:
Web developers can build websites and web applications. Any website you visit, whether google.com, amazon.com, or even facebook.com is built by website developers. There are three categories of web developers; Front End, Back End, and Full Stack.
Front End Developers
They develop code that runs in web browsers. Some people refer to them as client-side developers. Front end developers are the ones who create an avenue for users to interact with software.
To use a simplistic illustration, if a website is a car, front end developers design the outer frame and body, fascia, the seats, doors, windows, steering wheel, pedals, and other parts that you use to operate the car.
For instance, when you visit moringaschool.com on your browser you see the front end of our website. The same applies to any other site or app you use; you usually interact with its front end.
Front end developers need to understand how people interact with software, and then develop applications that are easy to use.
A good front end developer will also have design skills to create applications and websites that look good and feel smooth to interact with.
Front end developers develop sites that match user needs, behaviors, and expectations so that users can intuitively understand how to use web applications and navigate websites.
Below is an illustration of how websites work:
Source: Vintage agency
Back End Developers
If software was a car, backend developers are the ones who would design the engine, transmission, drivetrain, braking mechanism, and cooling system. See, they design and build the parts that would make the car run.
Some of the job roles of these developers include maintaining databases, ensuring smooth communication of information between the front end and back end, and creating the core application logic.
To illustrate, when you visit a website such as moringaschool.com you’ll see a lot of information about what we do and who we are. That is the front end. This information you see is stored in databases that you don't see and it serves relevant information to the browser when someone visits our site.
In websites and apps such as Facebook where you need to log in, passwords and user details are stored in the backend. Once you input information, the backend communicates to the front end interface to verify your details and serve information from your profile.
Another example would be; if a hotel is the website, the kitchen is the backend, where they prepare and cook food. The eating area is the frontend so those who serve would be front end developers and those who cook would be the backend developers. Cooked food would be the content you see when you visit the website.
Full Stack Developers
These are developers who have mastered both front and back end development. They cook and serve.
You can also define developers depending on the type of applications they build. Using that criteria we have the following types of developers;
Operating Systems Developers
These developers write operating system software. So the people who made Windows, Android, Mac OS, Linux, and Unix are operating systems developers.
Embedded Systems Developers
Such developers write code that runs on hardware. They form a small proportion of the programmer population - about 3%. These developers create code that runs car computers, fridges, microwaves, and other devices. Why are they so few? Because there aren’t that many different types of hardware.
They build or compile programming languages. Language compilers form the smallest percentage of programmers (1%)
Mobile Applications Developers
Since smartphones became popular, there has been a growing demand for mobile developers. Thank mobile developers for mobile focused social media apps such as WhatsApp, Youtube, Facebook, and other apps such as camera apps, calendars, banking apps, messaging apps, and calculators.
Mobile developers tend to specialize in either Android or iOS.
They develop applications that run on desktops and laptops. A popular example is VLC, which is a popular media player. Desktop browsers such as Chrome, Mozilla Firefox, and the ubiquitous Microsoft Edge also fall into this category.
What about productivity apps? Desktop versions of apps such as Excel, Word, and Adobe Creative Suite also fall into the category of desktop apps. Desktop applications are distinct between various operating systems such as Ubuntu, MacOS, and Windows. So developer also tend to specialize in developing apps for particular operating systems.
They specialize in developing games. Some specialize in video games and others in mobile games. Game developers make up more than 7% of all developers.
Dev Ops Engineers
You can also call them system administrators, if you go back 10 years ago. Dev ops is short for Development Operations. Dev ops engineers maintain infrastructure and servers. They write code that automates and manages servers to enable data transfer and proper functioning of centralized apps in the networks or branches.
They develop, set up and maintain cloud infrastructures that companies use to store data. Popular cloud vendors include Amazon, Google, and Oracle. Cloud developers often specialize on cloud solutions from a specific vendor. Such developers also need to understand business processes to design cloud solutions that enhance efficiency.
Development of software is a process that involves several stages. Below are the steps a developer takes when creating software.
- Initial research
At this stage, someone realizes they have a problem and explore solutions. For instance, the owner of a small shop might realize they are taking too long to calculate prices and serve her friendly customers, especially in the evenings. She has memorized many prices but she usually has to check the price of at least one item every few minutes, then she calculates and charges the customer.
This is slow and she has made a few mistakes such as underpricing items, and that has cost her money. She has also overpriced some items unknowingly. There’s this time she charged one customer 250 shillings for a kilogram of rice that sells for 180 shillings. When the customer found out, he got so angry that she couldn’t placate him with her sincere apologies. He no longer comes to her shop.
Customers wait in line so long that by the time they pay and leave, none is smiling. So the shop needs a system that will automate the calculation of prices to prevent long customer queues while minimizing errors. One of the solutions might be to automate processes such as reading and calculating prices.
The shop owner has found out she can get a Point Of Sale (POS) software. She has engaged a software developer who has researched important factors such as budget, infrastucture, tech literacy, and needs.
The developer comes up with an idea or concept of what software to create. In the case of the small shop, the developer might conceptualize a software that scan barcodes and tallies prices to automate calculations. Probably the software will work on a tablet or laptop depending on the device that the shopkeeper can afford and operate.
At this stage, the developer looks at the problems and specifies the capabilities that the software must have to solve the problem. In our example, the solution must allow the shop owner to serve customers faster and price items right to prevent overcharging or undercharging for items.
For instance, what operating systems will it work with? Windows or Android? Where will it store files? How will it integrate with the content management system? In our example of the shop, the content management system is where the shop stores information about goods in stock, prices, warranties, and offers.
The developer lists all the features and capabilities the software must have and those become the specifications. So the software in our example might include specifications on what hardware it will work with e.g. barcode scanners and compatibility with operating systems e.g Android 9 or Windows 10. Other specifications can include the generation of sales reports and password protection. These specifications will tell what the successful software should be able to do.
The next step is designing all the aspects of the software including the backend, user interface, and all elements that will help make the project successful. In the design stage, the developer ensures that the app meets all required specifications and will work efficiently. Here the developer also creates a software that is easy to use and understand.
In this process, the developer creates algorithms and commands using language-specific syntax that can be run and executed by the software. The developer builds an executable program that can carry out proper machine level outputs.
In our example, the program that can read barcodes, display prices, and calculate then display totals, and print a receipt. All these are machine-level outputs expected when the program runs.
This process is useful for providing an end user manual that a developer or non-developer can reference, to familiarize themselves with the software. Documentation at this point may vary from a README that instructs other developers on how to execute or contribute to the software, installation menu, or how to integrate the software into a third party application. It is important to note that this process goes hand in hand with the programming phase.
- Testing and Bug Fixing
This is the final stage before deployment. The developer tests software in a controlled environment to ensure it works as it should. In case of errors, the developer will make changes and improvements. This is usually an iterative process that never stops in any software development cycle since every user is a tester. And, with usage comes more information to improve the software.
After doing all the above the software is deployed, and the shop is able to handle higher customer volumes fast. So the software helps optimize the use of resources and keep customers happy even in the evening when lots of people come to buy lots of stuff.
Other Career Possibilities
There are other types of software engineers who combine coding with other skills. For instance, Data Scientists combine statistics with software development to work with large data sets. Many people in Digital Marketing roles increasingly need to understand some front end development skills for analytics, tagging, and SEO. Finance professionals are increasingly engaging with data science skills for functions such as risk analysis and fraud detection.
About the author: