Developers have many options for where to focus their development, skills and career. Here is a broad overview of the areas you can work in, if you are new to the field this may help you narrow down your focus and if you're an old hand then feel free to add more in the comments.
Loosely subdivided down into 3 categories of Frontend, Backend and Full-stack the world of web development is broad and ever changing.
Frontend work is concerned with the creation of the user interface and user experience (two fields in their own right that, while don’t concern themselves with coding, offer deep and interesting careers) and handling the interactions with other services such as third party remote APIs and the applications own backend.
The backend of the web is the 90% of the iceberg you can’t see. It’s where the majority of the web’s code lives and is responsible for handling requests, fetching data, running through business logic tasks and generally keeping the wheels on the bus. While there are many applications that are useful with only frontend code, there will come a time in nearly any project that some backend heft will need to be brought to the party.
Full-stack is the combination of both of these areas, people working in this category tend to have a preference one way or the other but the trade off for breadth is that their skills likely don't run as deep in either end as someone focussed specifically on front or back. The trade off however is that you can get a whole system up and running with less people. I consider my self full stack and rely on specialists when things get tricky.
DevOps is the name given to a reasonably recent field that has emerged to blur the lines between development (the building of software) and operations (the deployment and maintenance of software).
If this field is new to you I highly recommend reading the Phoenix Project and the Unicorn Project, which are fictional stories that explain and reveal the concepts of DevOps through the trials and tribulations of a company called Parts Unlimited and their transformation from the older practices around software to embracing DevOps.
If you have recently learned to code then it is unlikely that this is the area you would want to go into, however it is very much in demand at the moment and if you have a love of "tinkering" with computers from a previous hobby or role, then this could be an excellent way to get into the industry.
Data Science is all the rage at the moment and is in very high demand. Certainly, salaries in this discipline are leading the way and most large companies are adding a Data Scientist to every team and smaller companies are rapidly hiring data scientists now because they see the value of the data they have on their clients and customers.
Data Science has existed in many forms for 30 years or more, it is essentially using data to make informed decisions. It is often lumped together with Machine Learning and Artificial Intelligence and while these disciplines are different the lines are very blurred and they are more marketing terms than anything. The best description I have read, that I sadly can't remember the origin for, is:
- Data Science: Analysing what has happened
- Machine Learning: Predicting what will happen
- Artificial Intelligence: Deciding what will happen
Data is the foundation to all of them.
Embedded programmers don’t get the attention of web and app developers, but we interact with their work hundreds of times per day. Every time you use a microwave, TV remote, washing machine, drive a car, or swipe into a building with a key card, embedded code gets executed. Embedded code is often referred to as firmware, as it’s baked into the little black electronic chips you see on printed circuit boards and is considered “firm” as it may be hard or even impossible to change once flashed onto the host chip.
The best example of relatable firmware programming is Arduino. Arduino uses a standard Atmel microcontroller on a nice board and has some magic instilled in it to massively reduce the barrier to entry for this field.
The first code I ever wrote “in anger” was embedded code for a little wireless microcontroller which I had made that could transmit a light sensor reading back to a laptop to be displayed on the screen. There is something equally amazing and terrifying about writing code to run on little tiny black squares on a circuit board. For some reason, nothing else in programming matches the joy of simply making an LED flash on and off.
There are a few ways of making Apps.
- You can use the native languages for iOS and Android, which are Swift and Kotlin respectively
- You can learn Dart and the Flutter framework or C# and the Xamarin framework.
All of them end up with apps running on a a smart phone distributed in the main from an App Store. The world of smart phone apps is one of the biggest social and technological changes we have experienced in last 20 years, and probably second only to the internet in the last 100 years. If you want to make apps then you need to decide on one of the above approaches.
There are of course many sub categories to all of these and if you think any are large enough to warrant their own write up please chime in below. Industries like automotive sector use their own special languages and PLC programmers also have specific skills and knowledge as well.