Better Programming

Advice for programmers.

Follow publication

How to Choose the Right Career Path in Software Development

An exhaustive guide for those just starting out

ARMEL FOPA
Better Programming
Published in
14 min readSep 26, 2019
Software Engineers writing code.
Photo by NESA by Makers on Unsplash

When I got into software development, I was so excited. I wanted to learn everything at once: game development, mobile development, artificial intelligence and everything that has to do with it. I wasted time writing “hello world” and simple programs in about 30 languages, just to figure out which one I should learn. By the end, everything was boring, because I couldn’t create the coolest stuff. However, everything changed when I decided to focus on one thing and learn it very well. That’s when I started reaping the benefits of perseverance.

Let’s face it; not everybody knows exactly what they want to do when they enter the software industry; or even more so, not everybody picks the right thing to make them stand out in a crowd. This is true for beginners and junior developers. But if we look deeper, it’s shocking that even those with some experience in the field also struggle. That’s mainly because software development is rapidly evolving with new tech stacks, frameworks, and languages every single year. As software developers, we, therefore, have to keep learning every single day.

Photo by Hitesh Choudhary on Unsplash

Choosing the ideal path in the software industry involves considering the following:

  1. Knowing what it takes to get there (learning curve, tech stack or languages)
  2. Median salary
  3. Work environment
  4. And finally, your own personal strengths.

Based on the above criteria and the following explanations, you’ll know exactly what’s right for you. You can pick multiple paths — you can “dual-class” — but you should pick at least one to master very well. This will not simply reduce your learning curve, but will also help you land a job faster.

It’s time to focus. Let’s dive in.

Web Development

This path is a very common and easy way to get into software development. Most developers fall into this category or do at least some web development. Nowadays, web development is broken down into two major categories: front-end (client-side) and back-end (server-side). In between, we have full-stack development, which encompasses both.

Front-end

Front-end development includes everything users see in their browsers or applications. Front-end developers are responsible for the look and feel of a web application.

Required skills include designing user interface (UI) and user experience (UX), CSS, JavaScript, HTML, and a growing collection of UI frameworks such as React.js, Vue.js, Angular, and others. Most of these frameworks are based on JavaScript. Barrier for entry to this role is quite, low and just requires you to pick any of the above frameworks to pair with HTML, CSS, and JS, and boom you’re ready to go. To become a front-end developer, you don’t need to pursue any formal training or get a computer science degree. In fact, most front-end web developers are self-taught or went through a boot camp. But an associate or bachelor’s degree is required to advance in the field.

Back-end

Back-end is the term used for activities happening behind-the-scenes. It can be anything from signing in to an account to purchasing a phone from an online store.

Back-end development focus on databases, scripting, and website architecture. Code written by back-end developers helps to communicate the database information to the browser. This path is favorable for people with a computer science or software engineering background.

Entry to back-end development requires, at minimum: knowledge of a server-side language like Java, Python, PHP, Golang, or Ruby; .NET or Node.js (a JS framework for server-side programming); database management system (DBMS)technologies such as MySQL, Mongo DB, Oracle, SQLserver, or others; and exposure to handling servers like Apache, Nginx, or Microsoft IIS. A good background in Linux helps tremendously in administering servers.

Full stack

A full-stack developer is someone with knowledge of both front-end and back-end development, but not necessarily an expert in both. This path is suitable for entreprogrammers (programmer/entrepreneur hybrids). That’s good because you can quickly ship a complete product or even launch your startup using just your own skills. This role is in high demand by many startups which aim simply to put all those features together in a cost-effective way. Nowadays, this path is even easier for beginners. With a language like JavaScript, you can become a full-stack developer by picking a front-end framework like React.js and a back-end framework like Node.js, coupled with a popular DBMS like Mongo DB, and you’re ready to go.

The average salary of a web developer varies from one location to another. According to Glassdoor, the median annual wage for web developers in the U.S. is $75,000. The low end is less than $50,000, and the top-paid developers earn over $117,000. Most web developers work full time.

Mobile Development

This is a decent and straightforward pat, especially with the explosion of the mobile market. If you are someone who loves to interact with mobile applications and is aspiring to build one, then mobile development might be the right niche for you. It’s also very entrepreneurial, as you can build your app or game and make millions—if you’re lucky. There are many platforms for mobile development, but the most popular remain Android, iOS, and Windows Mobile. Android hs the greatest market share worldwide (76.23% according to StatCounter). IOS comes in at second position with 22.17% ; Windows trails behind at 0.2%.

To become an Android developer you have to kick-off your journey with Java, which has been in the game for a long time, or Kotlin, which is the new official language for the Android platform. However, both languages are interoperable and can be used together.

To begin with iOS development, you’ll need to learn Objective-C. However, it’s now being slowly replaced in the Apple ecosystem by a more powerful language called Swift.

Finally, if you’r interested in Windows Mobile, go for a language like C#. From server applications, games, and mobile apps, to web services, you can pretty much create everything in C#. Expectations in the C# community have been completely revolutionized by the Xamarin platform. Xamarin is an app-building tool that makes it simple for C# developers to create apps for Android and iOS users. This leads us to the concept of cross-platform development, which is a term used for apps that are built to run on multiple platforms. The most popular cross-platform builders include React Native, Flutter, Xamarin, Ionic, and PhoneGap.

According to Glassdoor, the national average salary for a mobile developer is $97,445 in the U.S. Salary often ranges between $78,000 and $188,000 a year.

Desktop Development

Desktop application development dominated the software industry for decades. However, with the rise of the Internet, web applications have taken over at an incredible pace. As smartphones became popular, mobile applications came into huge demand, pushing desktop applications into third place. However, desktop development is far from dying out, as many may think. Today most enterprise and professional applications are still desktop based; for example, the IDEs we use for development—although cloud-based IDEs are gradually surfacing in the game.

Desktop developers often use GUI toolkits, such as the ones discussed in the next section.

JavaFX and Swing

JavaFX and Swing are two Java UI frameworks from Oracle. Both are cross-platform. JavaFX is newer and encouraged by Oracle as a replacement for Swing. JavaFX also provides a drag-and-drop feature via Scene Builder which makes development faster and also provides modern UIs. Most desktop apps still maintain Swing. If you’re familiar with Java, this option is suitable. An example application written with swing is JetBrains Intellij.

Qt and WPF

Qt: A cross-platform, C++- based UI framework. You can write UI objects in code or use QML, which is a declarative language somewhat similar to JSON. Popular applications written in Qt include Maya and VirtualBox.

WPF: A popular mature XAML-based Microsoft technology. Using WPF, you can write in C# or Visual Basic .Net (VB.NET).

WPF has powerful templating, styling, and binding capabilities that are fit for big applications.

WPF also has a relatively steep learning curve, runs on any Windows OS, and is a mature technology. Yahoo Messenger uses WPF. Other Microsoft technologies you’ll want to know include Windows Forms, which provides drag-and-drop functionality, and Universal Windows Platform (UWP ), Microsoft’s newest desktop application technology. It’s XAML-based, like WPF, and you can write in C#, VB.NET, and C++. Most applications are written in C#.

Electron

Electron is a framework that allows you to develop desktop apps with web technologies (HTML/CSS/JavaScript). The magic behind Electron is that it uses Node.js and Chromium to create a web view in a desktop window. Electron gained some popularity for a while, and there are great applications developed with it, like Slack, GitHub Desktop, and Visual Studio Code. Though it’s much less capable of interacting with the PC than other technologies, it’s still possible to use Electron’s slim API for basic OS features, or for invoking .dll files directly with Node.js.

Most desktop developers work with established enterprises. According to Glassdoor, the national average salary for a desktop applications developer is $76,195 per year in the U.S. This might not be the same for other locations. Highly-paid desktop developers can earn up to $117,000 or even more, depending on their roles, while low-paid devs earn $58,000 or less.

Video Game Development

Back in the day, when I used to play GTA Vice City and other games, I knew nothing about programming. Since I was (and still am) a very curious guy, I went to the nearby cyber cafe to do some research and build a game for myself. I thought I could build one in a couple of days and invite friends over for the game party I had in mind. Things didn’t quite work as planned but I made an enormous discovery—that programming was something I loved. Life isn’t always what you expect.

Long story short, I still think game development is a great career option. It’s a difficult one, with lots of competition and long hours. If you’re passionate about games, go down this route, but be aware you might switch later. Frameworks used by game developers include DirectX, OpenGL, Unity 3D, WebGL, and languages include C, C++, C#, and Java. JavaScript and HTML5 games are rising in popularity. On mobile devices, Swift and Java are now the technologies of choice for iOS and Android games, respectively.

According to Glassdoor, the national average salary for a game developer is $101,932 in the U.S. and ranges between $66,000 and $148,000 per year.

Embedded Systems

Embedded systems control many devices in common use today. An embedded system is a microcontroller or microprocessor-based system which performs a specific task. Nowadays, almost every device has a brain. Arduinos, PIC, 8051, and Atmel microcontrollers are usually used to design embedded systems. Embedded developers often work with languages such as C, C++, Assembly, Java or proprietary technologies, frameworks, and toolkits. With the rise of the IoT (Internet of Things), AI (Artificial Intelligence), and real-time analytics, embedded systems have evolved to control all kinds of system automation, including home and building. Working in embedded systems is a great option, especially for those with some electronics background. But no matter your background, you can learn pretty much anything if you’re determined.

In the U.S., embedded software developers make between $58,000 and $112,000 per year, with an average salary of $80,000, according to Glassdoor.

Data Science

Data science is a multi-disciplinary field using scientific methods, processes, algorithms, and systems to extract knowledge and insights from structured and unstructured data. Though it’s one of the hottest and most highly-paid jobs in tech, data science on its own is older than you may believe. It’s evolved to use techniques and theories drawn from many fields within mathematics, statistics, computer science, and information science. Again, data science is not a software engineering subset, but most software engineers and computer science graduates with a mathematics background find it easier to switch into.

If you’re a beginner, I wouldn’t consider it a great option for you. Data science is mainly for people who already have some working experience in tech, statistics, or similar roles (although of course, this shouldn’t discourage you if you put your mind to it). Topics and tools that you need to understand when working with data science include:

Although you will not need to know all these technologies right at the beginning, it’s important to keep learning in order to be competitive.

Data scientists often work with large companies and organizations, earning between $86,000 and $190,000 per year with an average salary of $117,000, according to Glassdoor.

Tools and Enterprise

Working in this field involves creating tools to be used within an organization or internal applications to create an easier workflow for your company, which is very noticeable and rewarding. However, enterprise development can be very challenging and requires a unique set of abilities and knowledge. Enterprise developers often have to have a deep understanding of the organization and its politics, which shape how software is built. Again, this path is not recommended if you are just beginning.

Enterprise tools are often object-oriented and are designed to work across several business partners. Enterprise development tools link programs and functionalities together, allowing entities to work effectively and efficiently.

Good enterprise development tools will include Allegro Common Lisp, Java, C++ interfacing, SOAP, and XML support. It should include CORBA ORB database connections for the highest functioning tools, and if needed by the enterprise, it should include foreign function interfaces in the toolsets. Programming languages suited for this path include Java, C#, Python, JavaScript, C, and C++, to name a few.

These developers make between $62,000 and $117,000 with an average of $87,000 per year.

Cloud Computing

As more and more applications move to the cloud, the demand for cloud professionals keeps rising. One of the must-have skills in this field is cloud security. Certified Cloud Security Professional (CCSP) certifications can open up a vast assortment of career opportunities. The infrastructure-as-service wars have been largely decided, with the spoils going to Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform, with AWS claiming the lion’s share.

Skills required include the ability to work with cloud platforms; databases (NoSQL DBs like Mongo DB, Apache CouchDB, or SQL DB); programming (Java, Python, C#, C++, JavaScript, etc.); Linux, data ingestion, infosec, and specific web technologies like REST and Grails.

Cloud developers make between $73,000 and $83,000 averaging $77,000 per year.

Software Testing

Software testing is the process of evaluating the functionality of a software application with an intent to determine whether it meets its specified requirements and to identify any defects. There are two types of testing: manual and automated. If you are new to programming think of this as putting an algorithm through a dry-run. As a software tester you will:

  • Analyze users’ stories, use cases, and requirements for validity and feasibility;
  • Collaborate with other team members and departments;
  • Execute all levels of testing (system, integration, and regression);
  • Design and develop automation scripts;
  • Detect and track software defects and inconsistencies;
  • Apply quality engineering principles throughout the Agile product lifecycle; and
  • Provide support and documentation.

Mastery of automation tools like Selenium, Katalon Studio, TestComplete, unified functional testing, soapUI, or Rational Functional Tester, just to name a few, is very important.

Knowledge of programming is vital. Here are some languages and frameworks to consider for testing:

  1. Javascript. Popular frameworks: cucumber.js, Nightwatch, Protractor

2. Java. Popular frameworks: Gauge, TestNG, JUnit

3. Python. Popular frameworks: PyUnit, Lettuce, Behave

4. C#. Popular frameworks: Visual Studio unit testing framework, SpecFlow, NUnit

5. PHP. Popular frameworks: Codeception, Behat, SimpleTest

6. Ruby. Popular frameworks: Capybara, RSpec, minitest

According to Glassdoor, the national average salary for a software tester is $61,977 in the U.S. For the more experienced, salary can be upwards of $84,000.

DevOps

DevOps stands for development and operations. It’s a set of practices that automates the processes between software development and IT teams, so that they can build, test, and release software faster and more reliably. DevOps is more of a culture that emphasizes a shift in mindset, better collaboration, and tighter integration.

DevOps has evolved so that development owns more operations–and that’s how Chef works. We can’t just throw it over the wall anymore. Our engineers are responsible for QA, writing, and running their tests to get the software out to customers.

— Julian Dunn, Product Manager at Chef

DevOps requires good mastery of programming and scripting.

Knowledge of Gradle, Git, Linux, Jenkins, Docker, Kubernetes, Puppet and other tools like them is a must-have. Also, a DevOps engineer should understand data center-based and cloud infrastructure components and be able to ensure that systems have defense mechanisms in place against common cybersecurity vulnerabilities.

DevOps pros make between $91,000 and $155,000 depending on their location.

Artificial Intelligence

Two decades ago, the concepts of AI and machine learning were limited to sci-fi movies. Now they’re a part of our daily lives, and in the next decade, our society will rely even further on AI, machine learning, deep-learning networks, and more.

AI is not a subset of software engineering, but most computer scientists and software engineers are switching to AI or at least use some AI in their applications. Big companies like Google, for example, have made it possible for developers to easily incorporate AI in their applications through tools such as ML Kit: a machine learning toolkit that comes with many APIs and can label images and detect barcodes, text, faces, and objects, do natural-language processing, and more.

AI is mainly about simulating human intelligence processes. These processes include learning (the acquisition of information and rules for using the information), reasoning (using rules to reach approximate or definite conclusions), and self-correction.

Popular AI cloud services include Amazon AI services, IBM Watson Assistant, Microsoft Cognitive Services and the aforementioned Google AI services.

Here are the top languages for making AI projects:

  1. Python: Python is considered to be the number one choice for AI applications. Its simplicity and powerful libraries make it easier to implement AI algorithms. Some of these libraries include NumPy, a library that helps perform many scientific computations, and PyBrain, which enables us to use machine learning in Python.
  2. R: When it comes to statistical computation, R is one of the most powerful languages out there. Apart from being a general-purpose language, R has numerous packages like RODBC, gmodels, class and tm which are used in the field of machine learning. These packages make the implementation of machine learning algorithms easier.
  3. Java: AI has a lot to do with search algorithms, artificial neural networks, and genetic programming. Java provides many benefits: ease of use, ease of debugging, numerous package services, simplified work with large-scale projects, graphical representation of data, and better user interactions. As Java enables seamless access to Big Data platforms like Apache Spark and Apache Hadoop, it has cemented its place within data-analytics-related AI development.
  4. Lisp: Based on Lambda calculus, Lisp is one of the oldest languages in the field of AI. Lisp can be described as a practical mathematical notation for computer programs. AI developers often turn to Lisp for AI projects that are heavy on machine learning, because it offers rapid prototyping capabilities, support for symbolic expressions, a library of collection types, and is highly flexible and adaptable to their problem-solving needs.

Other languages you might want to look into include C++, JavaScript, and Prolog.

Some of the currently most popular AI tools are IBM Watson, Keras, scikit-learn, Swift AI, TensorFlow, Theano, and Torch.

The majority of AI developer salaries currently range between $97,000 (25th percentile) to $143,000 (75th percentile) across the U.S.

Conclusion

Choosing the right path doesn’t mean you must stick to it until the end of your career, but it’s all about mastering that specific path. Once you’ve achieved mastery, you may decide to expand your vision and knowledge by learning something new. Remember, you must always keep learning.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

ARMEL FOPA
ARMEL FOPA

Written by ARMEL FOPA

I am an adventurer, and risk-taker, always learning and living life on my own terms. Software developer / Entrepreneur