Picking your tech stack before choosing a coding bootcamp is fundamental. In this post, we will cover Frontend, Backend, and Full-Stack development.
Choosing your tech stack it’s a decision that shouldn’t be taken lightly.
Firstly, it will define the purpose of your code. Secondly, it will influence the main nature of your day-to-day problems. Thirdly, it will affect the programming language(s) and tools you are going to deal with. Moreover, the departments you are going to work for. Finally, it will even impact the number of work positions you will find when looking for a coding job.
But, let’s not add more pressure than is needed. You may have already an idea about what you want to do, or at least, which things you don’t want to. That’s a great start.
If you don’t have a clear idea about it, don’t panic. You’ll figure it out with a little help!
In this article, we will cover which strategies you can use to choose your tech stack.
First Approach: Scientists vs Artists
As a developer, you will work on things you like and dislike eventually (like in any other job). However, identifying what you feel more important and matching some of your natural abilities can make the difference between feeling purposeful or finding your day-to-day development a nightmare.
Are you a perfectionist? Like pixel perfect? Do you care about how a product looks or how it works inside?
Probably you already have a preference based on your core principles. For instance, there are two profiles I like to use for developer aspirers; Scientists vs Artists.
Scientists work in critical things that impact our day-to-day lives without even noticing. They are everything about utility and performance, so it’s common for them having very abstract and specific knowledge. Therefore, they need to understand the rules in play in every scenario to improve the odds of good results. Consequently, a small change in an experiment can have massive consequences on a large scale, (good or bad).
Artists, on the other hand, value other things. They work hard to craft their creations so they can communicate stories to the world in new ways. They love aesthetics. Is not just the information, but how is presented, making the difference between boredom and excitement. Small changes in their work become local, never exponential.
Which one do you feel closer to? Do you like to resolve brain puzzles, or do you prefer painting? Do you care about visibility?
Scientists’ attitude is more close to Backend development whereas Artist traits fit better with Frontend. That said, neither of them is restricted to resolve just one kind of problem (but is common to have technical specialization on one of both sides).
Second Approach: Human Body Program
Let’s imagine we have been hired to help program some of the human behaviors and routines. We will not create the program, but define parts, responsibilities, and relations.
We are given a partial list of human body parts:
Cells – Brain – Extremities – Face
And a theoretical scenario:
A fictitious woman called Lidia walks by a street. At some point, recognizes a person and calls him by the name.
Lidia walks by a street. Her brain is in the process of moving the necessary extremities of her body, using information about how to do so stored in the cells. Cells-Brain-Extremities bundle is in play.
Lidia is not just walking. Is thinking, using the Cells-Brain bundle, and is looking around, using the Brain-Face bundle. Her eyes are sending information to the brain, which subsequently is storing and discarding based on the stimulus received, after comparing the information with existing records.
Suddenly, Lidia recognized someone in the street; there is a match. Her Cells-Brain bundle contains information about this person. As a result, using the decision engine located in her brain, Lidia decides to try to call this person by his name. Through the Cells-Brain-Face bundle, shouts his name loud.
I’m sure you got the idea. There are several parts distinguished in the human body with specific purposes and a subset of responsibilities. Programs behave in the same way; there is no main entity that controls everything. As a result, each part has a specific mission and it’s dependent on others to do their functionality.
Let’s take a look to the following table:
|BODY PART||APP PART||TECH STACK||PURPOSE|
|Brain||Business logic||Backend||Make Decisions|
|Face/Extremities||UI/ User Interaction||Frontend||Status/Action/Reaction|
P.S: The purposes defined in the table are relative. It does not mean that a Frontend Developer will not deal with logic, or a Backend Engineer will not deal with storage (or even UI). It means that generally if that happens will be in a lower grade.
Is fairly easy to establish relations between the body and program parts. Tech Stack’s may sound harder, but they are not. They are just a set of tools and languages in a defined area of responsibility; engineers need to control some of them in order to develop a part (or the totality) of a website or application.
After looking at the table, let’s follow the story with examples. If we had to recreate Lidia with software, a Frontend developer would work building Lidia’s face and body (the eyes, the body motion engine, the smile mechanics…). On the other hand, a Backend developer would work in the internal logic that makes possible the inner and outside operations; processing the records sent from the visual sensors and others, choosing which records to keep and which ones to discard, decision making…etc.
In the end, Frontend and Backend are just two big general groups. In order to choose which side and specialty you want to specialize in, I’m going to introduce you to a list of the most common engineer profiles we can find in the industry.
Full Stack Engineer: This engineer is the definition of “jack of all trades”. Is able to switch contexts and develop in multiple languages, being able to develop any product from scratch. In other words, he will be able to do the frontend, the backend, or work in something in the database. A full-stack will have specific knowledge or mastery normally on one of both sides. But, in general, will have multiple years of experience in different languages, architectures, and projects. Some bootcamps promise you’ll be a full-stack engineer right out of the door, but most full-stacks have a good level of seniority before declaring themselves full-stack. Is not the same be able to build the frontend and backend in one language, that being a full-stack engineer (even if technically you can say so).
Data Engineer: This engineer profile has a constant relation with databases. For instance, is in charge of structuring data, extracting it, building data pipes or data warehouses where other workers will be able to query data. Its day-to-day consists of creating and maintaining architectures to transform and store data, guaranteeing the functionality, performance, and scalability of the database.
Data Analyst: Even that has a relation with data, his nature as an engineer is fundamentally different from a Data Engineer. If a Data Engineer looks more like a data mechanic (which needs to have deep knowledge about data structures and databases in general), a Data Analyst is more focused on the data itself and the conclusions it can take out from, making this data digestible. This engineer works with specific languages to play with the data, like Python or R. His profile is more close to the business and analytic side of things.
Data Scientist: This engineer works with analytical functions, SQL, and machine learning. In addition, needs to dominate a variety of data/maths-oriented programming languages (Python, SAS, R, Scala). A data scientist’s work is about understanding past patterns to come out with future predictions. Is an engineer that needs to control math and statistics, be subject expertise and have very good data manipulation knowledge in order to come up with valid forecasts.
I’m sure you are still not sure about which kind of profile to go for, and that’s totally expected. It may be a bit overwhelming at first.
If you are not cleared out, my advice is to try out first before deciding.
Maybe you like the look of some web/app you use every day, but you hate tweaking UI from code until you get what you want. How do you know if you like to build internal logic?
Sometimes the only way to find it out is trying it.
If you are starting from scratch, try FizzBuzz. On the other hand, if you know already a bit and feel more like an artist, try to develop a Vue.js web app from scratch. Are you still hesitating? Try out a tutorial on how to build a cards game, where you will see both sides.
Focus your attention on what kind of problems do you like to solve. Choosing the language(s) you feel comfortable with will make your ride more enjoyable, but in the end, the joy of resolving particular problems will be what will keep you hooked when you’ll be stuck.