There are many different types of programming. Each type has its own unique challenges and everyone has their favorite type. Some common types are: web development, app development, game development, backend development, embedded system development, operating system development, and research development.
Web development is a design-centric type of programming. It focuses on how each piece should be positioned relative to each other piece. The amount of code written to process data is often purposefully minimal, so it can be handled by backend development. Those with an eye for colors, layout, and spacing will do well here. Though there are plenty of jobs available where the design is handled by another party.
Web developments lends itself well to independent developers as a single developer can handle the entire project and there are many freelance opportunities available.
App development is a middle ground between the other types. It involves design, backend work, occasionally complex algorithms, and possibly even some embedded or operating system work. The design is often easier than web development due to well-known standards and provided user-interface tools. It may be necessary to build the entire app separately for each of the operating systems (in different languages). There are tools to avoid that by indirect means such as React Native, Xamarin, Corona, Appcelerator Titanium, and even the game engine Unity.
App development can lend itself well to independent developers. It does suffer from many of the same drawbacks as game development, but to a lesser extent. Development time depends on the complexity of the app, but minimum-viable prototypes can be made within a week. A single person development team is possible, but teams work well as development can be divided up among different specialties. Some entrepreneurs may find it ideal to get competent enough to make rough prototypes for feedback or to use to pitch to investors.
Game development is one of the most challenging forms of programming. Those seeking a challenge, with knowledge of physics, and/or interest in game design will do well. Some of the toughest computing problems must be solved by game developers. Physics simulations of water and light, AI enemies that challenge human players without overwhelming them, and algorithms for the AI to use to navigate 3D space are just a few of the complex problems.
Luckily, because these challenges are known, re-usable systems have been made to handle much of the work. These systems are called game engines and are the foundation on which games are built. Game engines handle simulating physics and convert the 3-dimensional objects in game to a 2-dimensional image to display on screen. Even with a pre-made game engine, there are still many problems in game development unique to each game (such as a world with portals) that make it a challenging and rewarding pursuit.
Game development can be difficult for independent developers as it traditionally requires a large, well-synced team as there are many necessary roles to fill. Even small studios can have at least twenty people on a project and larger studios can have hundreds. Regardless of team size, games often take years to create and only a small proportion succeed. Game devs also usually make many, many failing games before producing a success. Don’t underestimate the work involved in making your own game.
Backend development involves dealing with large amounts of data. The backend is the server where all the data is stored. Backend developers must focus on efficiency as any minor inefficiency is multiplied by the large number of times the inefficiency is encountered. For example, if a login takes 0.25 seconds instead of 0.1 seconds that may not seem like a big deal, but when millions of users are logging in and out that difference wastes a lot of server time. It requires thinking critically about how information is related, stored, and accessed. Security is also an important consideration. Though there may be a security specialist on your team depending on the situation.
Backend developers can do well as independent developers. A single person may be sufficient and experience can lead to quick development cycles.
Embedded system development
Embedded system development is for situations where extremely simple computer chips are used. For example, an elevator has an embedded system. You don’t need a full computer to read a button press and go to the correct floor, but there is a bit of logic in how much distance must be covered, knowing which elevator is closer, and perhaps attempting to keep elevators on the right floors to minimize wait time. Embedded systems programming generally has much less abstraction than other forms of programming which means a deeper understanding of how computers work is required.
It may be difficult for an inexperienced developer to find work as there are few remote jobs available and those hiring are likely looking for experts.
Operating system development
Operating system development also requires efficiency, reliability, and a deeper level of understanding. Developing an operating system is a large undertaking and done almost exclusively by large companies. If you’re interested in learning more, Unix is an open-sourced operating system and anyone can view the code and contribute. However, operating system development is not well suited to independent developers.
Research development is development done to advance the field of computer science. This can be AI, computer vision, natural language processing, or many other studies at the bleeding edge of human knowledge. It is traditionally done by graduate or doctorate level programmers in academia or major companies. It also takes teams of people to complete and may never be used in a real world application. For these reasons, it is typically not suited to independent developers.
Best type of programming
I recommend learning web development if you would consider yourself more a designer than a logician or app development if the converse is true. Both are well-suited for single programmers to use to create their own businesses, create prototypes to use to get funding, to freelance, or to find a traditional job. They also have large communities of beginners and experts to reach out to for help, fantastic learning material, and programming languages that reinforce proper coding technique.
If you are considering getting into game development, I’m working on a whole article and even a game on the subject. Stay tuned and subscribe for updates.
Interested in getting started as a developer, finding the best tools for that new program you’re building, or going from a regular programmer to a super programmer? Check out my posts on the topic!
Curious about more computery things? Find my breakdown wildly inaccurate? Just kind of want to talk about it? Leave me a comment and I’ll respond with text!