Do you want to be a full stack developer and have no experience? So did I! Well, some time ago but I can still see juniors walking the same path I did. So I decided to write this short piece of advice – take it or leave it, but would love to see your opinion in comments.
So, where should I begin? That’s probably the first question which appears for every person who decided to either join a project, write a book or become a full stack engineer. Naturally that’s what I’m going to write about.
First things first, how do we get someone to just not quit in the first say two weeks?
I think that if you start with doing front end your chances of quitting during the first two weeks are much, much smaller.
Why? Well, it is simple it is just way more interesting at the very beginning and it keeps you engaged, simply because you see the results of your work immediately even with only the few skills you have. You know putting a button which when clicked changes the text in a div – well it’s pretty cool :)
Another important point to mention is that often inexperienced people do not understand why they need back end or what you can do with back end or even what the h*** back end is for until they have gained several maybe months, who knows, years of experience.
Also, front end is largely learned only by practice - looking for how to 'draw' something in the browser. Trial and error until you liked how it happened. Remember, seniors, all those sleepless nights trying to figure out why this is not 5px left from where it should be?
Again, back end needs more serious theoretical training before you start writing quality code.
What I suggest is that you need to gain basic knowledge in several areas:
Аlgorithms and data structures: this is the foundation on which everything else in the backend is built. Basic tricks for saving and transforming data. You learn to balance memory usage and CPU time so that your program runs fast.
Computer device: how ram memory and CPU work. How much does it cost to read something from a RAM, hard drive, database or other server
Networks: OSI model
For programming languages – especially for beginners I would recommend Javascript, because it can be used anywhere, even in the browser console. My piece of advice – just learn it, it will be useful at many places.
Just to add one: if you decide to move to backend development with NodeJs.
Over time, the more you raise the level, the less important it is in what language you write, so whatever popular programming language you use - it can't go wrong. The basics of programming are the same in every language (ok almost every).
Applying for a job… Yes, that’s the elephant in the room. What do you need to do? Well, when it's time to apply for a job, it's good to have at least one completed project in a language. Whether it's a calculator or a 2 page site - it doesn't matter. The fact that you have something done from scratch will set you apart from other inexperienced candidates. Of course, the way it is made is also very important.
Using a version control system as git is an advantage. This is something that is used in every company so that different developers can share code easily and have a history of the code.
Unit tests are the other thing that is a mandatory requirement for every project, so it would be good to include this in your projects. These are small tests that test pieces of your code. Every piece of code that does something significant must have a test that checks that the code is working correctly. There are many types of tests, but unit tests are the most basic and everyone should be able to write them. They do not save you 100% from bugs, but they should catch more serious problems, mainly after changing old code or adding new features.
The last unwritten rule in any project is to use package manager. Examples: npm or yarn on Javascript, maven or Gradle on java, etc. This allows you to use foreign libraries in your code when you run it, but at the same time you don't have to keep them downloaded. All you have to do is note which libraries and which versions of the libraries you need. Then anyone who wants to release the project can download them. This saves downloading unnecessarily large dependent libraries.
Choose the languages according to which field you want to develop. There is no rule about which language to start with, nor are necessarily 'bad' languages. If you want to do machine learning / AI, you might want to start with Python. For website creation: HTML / CSS / Javascript is the surest way to gain basic knowledge. If you want to develop in enterprise backend development: Java, NodeJs, C #, Go, PHP all these languages are in demand and will not disappear soon. For mobile development, there are several areas:
Native development
Android: Kotlin
iOS: Swift
Hybrid:
Flutter, which uses the Dart language
React native - javascript
Xamarin - C #
For FE development - React, Angular, VueJs, Svelte, as the basis of all of course is javacript
Where to read and learn new things? I personally have used mostly Coursera.org, Udemy.com, and Pluralsight.com for video courses.
As a tip: research the course authors well. The best are those whose authors are actively involved in the development of the technology.
For the backend, I think it's good to read a few books on algorithms and basics of programming.
For or against university courses is a much debated topic, but for me the courses in mathematics and basics of programming are super valuable (at least in FMI).
Anyway, what I believe is truly important is passion! If you don’t have passion for programming and making things work than I can assure you – it’s not going to happen for you. Do what you love and if that is developing software – then welcome to our club!
Author: Milen Hristov
Comments