Programming Industry Landscape

The programming industry has become a vast landscape. There are literally hundreds of different areas of technology you can go into. It should be no surprise that the world runs on computers and everything from toys to microwave ovens to smartphone apps run on computer code. In this article, I will touch upon several areas with brevity and hopefully offer each category their own in-depth posts to come.

Mobile Applications

It’s no secret that Mobile Apps have become a major cornerstone of the software industry today. Most major companies have at least an iOS app if not an Android one as well. The path as a mobile developer has a few different directions. There are easier paths with JavaScript using React Native or Apple’s Swift and there are more challenging paths with C#, Java, Objective-C, and C++. You don’t have to learn all of these but depending on your region there are differences in salary compensation and opportunity.

Front-End Web Development

This is my personal specialty but it’s not for the faint of heart. This is probably the least straightforward career. One that is always shifting with new tech stacks almost every year. But this is also, one of the most visual and artistic of all the software development fields. That’s really what has kept me in the front-end. Even though I do full-stack I still love to build things I can see and show. This area requires a minimum of understanding 3 languages (HTML, CSS & JavaScript) and at least one relevant framework (React, Angular, or Vue, etc..).

Video Game Development

I spent several years writing games and even teaching game engine development. In my opinion, it’s what of the most challenging software engineering fields. Game development is logically very complex but also often involves physics, linear algebra, and trigonometry. Almost any interview in gaming will have whiteboard exercises with trig. In recent years games have been popularly developed with Unity3D using C# as the language of choice. Job opportunities are usually focused in certain cities so don’t be surprised if there are none nearby.

Back-End

The back-end is great in that the amount of technology to learn is few and if the company has an ops team you don’t have to make a lot of server decisions. Most can get by just mastering NdeJS, Java, PHP or Ruby. Although as of 2016 there seems to be a growing trend of companies shifting off Ruby and PHP in favor of Java r NodeJS. There is a lot of weight given to those who also master popular algorithms and design patterns. So it’s a bit mathematical and theoretical but not by a whole lot.

Big Data Engineer

Large companies have become wealthy because they have hit concurrent user numbers of 500k and above. This traffic load presents the company with very challenging problems. When a company doesn’t optimize their data flow as their userbase rapidly grows then they are looking at a lot of downtime and server outages. I have seen this first hand at several companies that I’ve worked at. It happens, sometimes you just grow faster than you expect and that’s a good problem to have. But this is where a company either has to shell out a lot of money to HP for their Big Data services (Very Costly), or they build an in-house big data team.

These engineers work on performance tuning all the business logic. They have to look at the whole tech infrastructure and make decisions that will help the company scale in cost-effective ways. You are probably someone who has a broad understanding of servers, databases, and back-end languages. You are the type of person that likes to run methods side by side for benchmark tests. I would say this is a goal career but not something you can apply to on raw talent alone.

Dev-Ops

You can think of Developer Operation as IT Support for Engineers. This is much more sophisticated than your average IT support. This team is in charge of maintaining the systems that run the company products (Web Servers, Databases, Build Pipelines, Deployment Process and Development Environments). A team member has a deep understanding of how the internet works, cloud technology, AWS, Google App Engine, Databases, Docker, and so much more. And they can program in popular configuration languages like python and yml. You are like a general mechanic for all things internet technology. All the tools that the engineers want to use have to go through Dev-Ops approval and control.

Data Engineer and Architect

A data architect is someone who has mastered database technology and has a deep understanding of how to organize and structure data. The data structure is one of the most concrete things you can build for a company. Once the structure is in place it can be very cumbersome to modify the structure if it wasn’t designed to scale or query easily. It can really cripple many teams if the data is poorly structured. This individual masters SQL and NoSQL database technology along with algorithms for querying, parsing and manipulating the data. Data design patterns is also a must.

Data Science and Machine Learning

This is a very interesting field and one that is growing in popularity. Companies don’t have to guess anymore what their customers are thinking. Now with a team of data scientist, the company can make more intelligent decisions based on data gathered from customer behavior. This career leans heavily in statistics, linear algebra and calculus. The popular programming languages are Python and R, however, there have been some tools ported to JavaScript but I wouldn’t count on getting a job in Data Science with JavaScript. At least not yet. It hasn’t earned respect in this domain yet.

Hardware and Robotics Programming

This is very heavily rooted in computer science foundations. It has a pretty broad spectrum of job opportunities. Video Game and Animation studios will need help writing Graphics Card controllers. There’s plenty of work in the military writing custom controllers for bomb-defusing robots to radio encryption. There’s also work in medical prosthetics. You might be thinking limbs but there are very small mechanical devices that, for example, regulate the flow of blood to the eye. These tiny devices also need controllers. Most of the work in this field will require expert knowledge of C and in some cases C++.

Within each of fields is a greater discussion which I will expand upon. But I just wanted you to get a sense of the different areas of the programming industry and let you explore deeper into the ones that peak your interest.