Different Breeds of Developers
I’m an offspring of some of them.
Developers are essential.
The software development scenario changes everyday. Specialized types of developers are already showing up in job ads and corporate titles. Understanding the skills that each type of developer needs to have is confusing to newcomers and can be intimidating to non-technical people.
Here, I go through explaining 13 types of developers along with their skill sets and tools in their arsenal. Take note that these descriptions came from the top of my head but they may fluctuate depending on the company, the region, or the industry.
1. Frontend Developer
A Front-end Developer (aka Client-side developer) is responsible for designing and building visually appealing websites with their intended users in mind. This is a person who specializes in the programming of visual User Interfaces (UI), anything that you’re going to see when you go on a website, including its aesthetics and layouts. Basically, they write code for people using browsers that run on a wide variety of devices.
Nobody is closer to the user than front-end developers.
It is very high-level work, normally far removed from the hardware. It requires an understanding of human-machine interaction and design principles more than computer science theory. The truth is that development has a lot to do with both design and programming. They’re not mutually exclusive.
Much of a front-end developer’s life is spent dealing with cross-browser compatibility issues and tweaking details of the visual presentation of a UI.
Front-end development skills include the design of UI /UX using HTML, CSS, JavaScript, and a growing collection of UI frameworks. Tooling and technologies are always changing, so front-end developers always need to stay up-to-date with the newest stuff.
2. Backend Developer
Otherwise known as a Server-side developer, a back-end developer focuses on the logic of software systems, i.e, what makes a system work and how to improve its performance. This guy specializes in the design, implementation, core logic, performance, and scalability of a piece of software or system running on remote machines, like on a server.
Backend is the behind the scenes part of a system. For example, the frontend part of the Google search engine is a simple UI with a title, a text box, and 2 or 3 buttons. The back-end is a colossal complex system, able to crawl the web, index it, and find what you are looking for with a line-up of sophisticated mechanisms.
Backend developers enable clients to acknowledge the front-end interface.
Backend technologies usually consist of languages like PHP, Ruby, Java, C++, and Python. This can affect the average pay grade of a back-end developer: fluency in a language like Go or Rust tends to lead to a higher salary. In fact, back-end developers earn more on average than, for instance, frontend developers, even with the same level of experience.
Here’s an image, although unrelated, demonstrating how backend and frontend differ.
3. FullStack Developer
This guy is a “Frontend + Backend” cocktail and performs the job without breaking a sweat. He can effectively replace both types and therefore works on the underlying logic of a program as well as the UI.
Due to obvious reasons, they are able to better synchronize the Backend and Frontend system designs and reduce the risk of friction between both which is essential to create a fully functional web application.
However, because their focus area is larger, they are sometimes more “Jack of all trades” rather than hyper-specialized in either of them. Still, FullStack developers tend to receive a higher salary as per years of experience than either Frontend or Backend devs.
Web developers are either front-end developers, back-end developers, middle-tier developers or full-stack developers. Web-Development became a very common way to enter the software engineering world in the late 90s and early 2000s. It has a low entry-point, requiring as little as basic HTML and CSS knowledge. With only a few months of experience, an entry-level web developer can start producing code that ships to production systems. It is a particularly attractive option for people who have no CS fundamentals and want to join the programming world.
4. Desktop Developer
Desktop developers work on software made to run on individual laptops or desktop computers. These software applications are designed to run natively on an operating system (such as Windows, Apple MacOSX, or Linux). Some Desktop developers tend to work with multiple OSs while others prefer one specific.
Back in the 80s, this was one of the most common types of engineers, popularized by inexpensive development environments such as Turbo Pascal, Turbo C, Visual Basic, Quick C, Visual Studio, and Delphi.
Desktop devs have some of the same skill set as backend devs but are usually familiar with using SDK and GUI Toolkits like MFC, XAML, Cocoa, .NET, XAML, WinForms, Gtk, etc.
5. Mobile App Developer
A Mobile app developer writes code that runs natively on portable devices such as smartphones, tablets, even wearable gadgets.
These guys understand the intricacies of mobile OSs such as iOS and Android, and the development environment and frameworks used to write software on those systems.
There are some specialized frontend devs that develop mobile apps using web-based platforms and technologies like React-native(JavaScript) and Flutter(Dart). Others tend to work primarily in the languages specific to iOS devices (Objective-C/Swift) and Android devices (Java/Kotlin).
6. Graphics Developer/Designer
Graphics devs compose code for rendering, shading, and other visual effects which create sophisticated images in special effects, video games, movies, TV shows, and other visual means.
They often have extensive background knowledge of mathematics and algorithms, as well as artistic skills and talents., but with the notoriety of open source structures, it’s getting simpler to get to.
Frameworks include DirectX, OpenGL, Unity 3D, WebGL. For more advanced graphic developers, low-level development requires C, C++, and Assembly.
7. Game Developer
A Game developer is a general term to identify a developer specialized in writing games. Due to the complexity of today’s video games, most programmers specialize in a particular area of game programmings, such as sound, visuals, testing, accessibility, etc. Individuals and small teams with no large-scale developer or publisher affiliations are termed as Indie Developers. Some of them create mods for existing games.
Game developers can fall into one of the other categories of developers, but they often have specific knowledge and skills in designing and implementing engaging and interactive gaming experiences.
Frameworks used by game developers include DirectX, OpenGL, Unity 3D, WebGL, and languages such as C, C++, and Java. On mobile devices, Swift and Java are now the technologies of choice for iOS and Android games. Nowadays, for mobile, game development tools like GameMaker Studio, Unity, and Unreal Engine are being used.
8. Database Administrator
Database Administrators (DBAs) set up databases according to a company’s needs and make sure they operate efficiently. Attention to detail and security of data is an essential part of this profession.
Database administrators are some of the most experienced developers in the field, averaging over 9 years.
DBAs are often certified for a specific database platform such as SQL-based implementations (like MySQL and PostgreSQL) and may also include more specific and cutting-edge NoSQL databases (like MongoDB and Cassandra).
9. DevOps
Often called a Site Reliability Engineer (SRE) is responsible to take care of the production process. Their main focus is to ensure application safety during production and that it remains functional to both, users and developers. This demands familiarity with the technologies required for the development of systems to build, deploy, integrate, and administer back-end software and distributed systems.
They generally use cloud providers like AWS and Azure and log management systems like Splunk. They tend to be more experienced which is the reason behind their high salaries. Another reason for their high salaries is their choice of cutting-edge programming language like Ruby and Go.
Technologies used by DevOps Engineers include Kubernetes, Docker, Apache Mesos, the HashiCorp stack (Terraform, Vagrant, Packer, Vault, Consul, Nomad), Jenkins, etc.
10. CRM Developer
CRM stands for Client Relationship Management which is nothing but a role that fluctuates between computer engineering and sales. They specialize in creating and maintaining large enterprise software that collect & stores user, consumer, and business information.
CRM developers are critical in improving sales and customer satisfaction by writing and implementing their specific sort of business and client management code.
There are three categories to enterprise-level software:
- CRM systems (like SalesForce)
- Enterprise Resource Planning (ERP) systems (like SAP)
- Collaborative Document Storage (CDS) systems (like Sharepoint)
11. Software Tester
This type of developer comes under Quality Assurance Developers (or QAs). QAs ensure that code written by other developers does not break the application.
They validate the quality of software systems an in the traditional sense test the code by using the software manually to see if any dominoes fall. some of them also code to automate these tests by simulating usage and checking for errors. This is facilitated for both — individual features (Unit testing) and application features (Integration testing).
Since they work on code written by other developers they tend to possess knowledge of many programming languages, popular among which are Java, Python, and Ruby. They settle in the crowd of least experienced developers and their salaries are comparable or higher than those of Frontend and Mobile developers.
Technologies used by QAs include Python, Ruby, Katalon Studio, and Selenium.
12. Cyber Security developer
This breed nails down on making software-based products and services more secure. They create systems, methods, and procedures to test the security of a software system and fix security flaws. A White-Hat Ethical hacker is one such example who attempts to penetrate systems to discover vulnerabilities (not for malicious reasons, of course).
Security developers understand in detail the many patterns used to attack software systems. More advanced security developers need to read and understand operating systems source code written in C and C++. They might also reverse engineer libraries and commercial software systems to find and exploit vulnerabilities.
They know languages such as Python, Java, C++, and comparable RDBMS languages like SQL. In addition, experience in QA, penetration testing, and cloud computing is required.
Conclusions
I have not mentioned some uncommon ones like Middle-tier, WordPress, or Big data developers because they more or less, fit in one of the mentioned categories. The role of an embedded developer revolves mainly around hardware infrastructure.
There are endless possibilities, regardless if you start with a formal CS education or stumble into web development with personal projects, or try to make loads of money creating an iPhone game.
Once you’re on a track, you can change as your skills and improve knowledge. There’s no end to the stuff one can learn.
If you enjoyed my writing!
- Become part of my professional network
- Follow my Tweets
- In the end, keep up with my posts here