Developers

Brain surgeons (neurosurgeons) and skin doctors (dermatologists)

Doctors make for a good analogy for developers. Doctors get an in-depth study of medicine in medical school, then do a deep dive study for several years known as a residency, in their specialty. In day-to-day work most doctors practice only their practice their specialty. They understand what other doctors are doing, but since they don’t do it all the time, and only studied it superficially, they don’t know the in’s and out’s of other specialties.

In an emergency, could they get by? Probably? Maybe? How about ‘most of the time’?

Would you want your dermatologist operating on your brain?

But I certainly wouldn’t want my dermatologist operating on my brain. That would be a terrible idea! The dermatologist has never done brain surgery. She might have an idea where to start or where to go, but there is a big difference between a brain surgeon and a dermatologist.

On the flip side, you probably don’t want your brain surgeon working on your face. He might know all the nerves in your face really, really well, but what medication is the right one for your acne given all the variables in your life? That is in a totally different realm than what she deals with every day.

Types of Developers

The world of software development is similar to this. Different developers focus on different things. There is overlap, but there is always going to be a relative advantage in one area vs. another.

Generally, developers can be broken up into two different major areas or specialties when it comes to cloud SaaS development.

If you are a developer reading this list, please remember this is an overview, not an in-depth study. The goal is to help people understand what kind of variety there is in development, not to delve into the aspects of these systems or to define any overlap.

These are the areas of development and some of what they encompass.

Frontend Development - Make things look and work well for users across the spectrum of devices.

  • HTML

  • CSS

  • JS

Backend Development - Make things function and build logic.

  • PHP

  • ASP

  • PYTHON

  • NODE.JS

  • Angular.JS

  • Java

  • Lots and lots of other languages

Mobile App Development - Focuses on the development of Android, iOS, and hybrid apps.

  • React.js

  • Ionic

  • Phonegap

  • Swift

  • Objective C

  • C#

  • C++

  • Java

Database Development - Store the data, retrieve the data, make the storage and retrieval as efficient as possible.

  • SQL

  • MsSQL

  • MySQL

  • PostgreSQL

  • Mongo DB

  • Loads of other database systems

DevOps / SysAdmin - Sets up and manages your hosting environments and troubleshoots issues as they pop up.

  • AWS

  • DO

  • Apache

  • Nginx

  • SQS

  • Lambda

  • Ansible

AI

  • R

  • Python

  • Lisp

  • Prolog

  • Java

Think of each of these systems as a language that you could speak. If you know English, you could probably learn Spanish easier than Russian or Thai. The alphabet is the same, the verbs have similar kinds of conjugations, etc. But it is still a different language and you’d need time to learn it. Also, to be conversational is necessary to have a conversation, but if you want to write a book in it, you’ll need to be fluent. The same is basically true for computer languages.

The Lead Developer

In most SaaS platforms, you will want to have a 'Lead Developer'. This team member has specific jobs that other developers do not.

Your lead developer will:

  • Review code being submitted by other developers

  • Accept 'Pull Requests' which pull developers code into the project

  • Lead and manage the development team

  • Understand when developers are and are not doing their jobs

  • Help you find new developers that are a good fit for the project

A great lead developer is a huge asset to the project. The converse also holds true, a poorly chosen or incompetent lead developer can destroy your project.

The myth of the ‘Full Stack Developer’

You may have heard of the ‘Full Stack Developer’. This is someone who has knowledge of all the layers in a system. A lot of people call themselves Full Stack Developers, and some really are, but most are not. No matter how good you are at the different areas, you are still going to have a specialty in one over the over. You simply cannot devote your life to learning two things and, all other things being equal, be as good as someone who has devoted their life to learning one thing. There is ALWAYS a relative advantage in one place or another.

In this book we break developers into just front-end and back-end developers, since very often, this is how developers think of themselves and where their specialties lie.