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’?
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.
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.
- Lots and lots of other languages
- Objective C
- Mongo DB
- Loads of other database systems
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.
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.
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.