Following trends with data structures and algorithms, deployment, Node.js, Flask, React and Vue
What is a full stack developer?
In the engineering world, there is this term of full stack engineer or developer. They can get the designs, code the entire stack, spin up servers, databases, and networks. They are good architects and can create data model and structure. Moreover, then they can code backend, and the logic that does the invisible magic and frontend, the things that you see in the UI. So furthermore they know about scripts and that area.
Why companies and entrepreneurs value full stack engineers?
A project requires all of those particular items to get executed. So if you are a developer that does only one thing they companies will hire five more people to get this project out. However, a full stack engineer can do all that by himself, and that makes him 10x times faster.
Probably you ask yourself: How can it be 10x times faster?
So let's say you have more people in the team. They start working on designs and then go and communicate with the other team members. They have to agree on several items, they go back, test it, implement it, discuss again, and again, and find other issues which they solve still. Most of the work is communication, synchronization, and planning. You waste time moving work from people to people. Moreover, if a person is waiting for somebody else, you have one more problem. It just kills productivity and performance.
A full stack person communicates only in his mind. So they can't go into that communication problems or wait for somebody else. The unique thing he needs is to understand the project and execute it from top to bottom.
So that's why they are at least 10x faster.
Full stack devs don't lose time on transporting information from one brain to another.
How fast can I be a full stack engineer?
Long story short: design, frontend, backend, database, and infrastructure.
You have two big options:
A. Learn it in detail! The hard way.
It takes about 10.000 hours to be a pro in a specific domain. Having five areas to cover you need around 50.000 hours. That's huge! Even if you are a passionate engineer and work hard 16 hours a day with no vacation, it will take you about 3125 days. That's about eight years and a half.
B. Learn it! The fast way.
Use the right tools on the market to accelerate each project kickoff. Moreover, learn those tools and how to extend what is offering.
There is Josh Kaufman's book on how to learn anything fast. (The First 20 Hours: How to Learn Anything Fast!) You can learn the basics and take a nice boost on that. So in part-time learning, you could cover all these in about a month including reading the book. That sounds way better.
Option A is a long term goal and is up to you if you want to achieve it. Option B is something you can start today.
To become a full stack developer, you need to learn at least one language.
There are some topics you need to understand as Full Stack Developer:
- How to work with the DOM.
- How to manipulate it and use JSON.
- Any language features such as functional composition, prototypal inheritance, closures, event delegation, scope, higher-order functions.
- Asynchronous control flows, promises, and callbacks are essential.
- Structure your code and modularize
- Use tools like Webpack, Browserify, gulp for building and packing your website
- jQuery exists in most applications, and a solid knowledge of it will be helpful.
- ES6 features
HTML and CSS
Every Full Stack developer needs to know HTML and CSS. HTML allows you to add content on a website and CSS allows you to beautify it. The topics below can benefit you at a job interview or any daily task.
Learn what is the CSS Box Model and then what are the benefits of CSS preprocessors at a higher level and how can those help you with development.
Bootstrap and CSS Media Queries to target different devices and write responsive CSS.
Another big leap you can get is using frontend toolkits.
Those inventions will accelerate your work and make you deliver frontend faster.
We can help you with that (together with Creative Tim's already integrated Kits).
Frontend - Vue, React, Angular
Let's explain things more simply:
Angular is a swiss army knife. Is like an entire well-equipped kitchen that gives you all the tools necessary to build the dinner - which is your web app. If I am a big corporation with many developers, I like Angular to keep everyone working in the same pattern.
React is like an oven. You use more tools to cook things, but it gives you the flexibility to choose libraries based on your needs. In a company with strong senior developers that can take decisions, React.js is the one I like.
Vue is the microwave that allows you to get up and running fast and make your cooking life efficient and comfortable if I am a startup or a freelancer with strict deadlines I like Vue.js.
That's why a lot of online programs and boot camps choose to teach Node.js. Express is a popular framework, but Hapi.js can be a great choice.
Most popular REST API's frameworks are Django and Flask.
Most Python programmers would agree that the most significant advantage of Python is that it is easy to pick up. You can use it for a tone of things like scripting, testing including test automation, machine learning, maths, scientific and numeric applications, IoT integrations.
So depending on what you need you can structure your backend with JS and Python hybrids or use only one.
Both have REST API libraries so you can easily integrate them with any Frontend.
At some point, during the lifetime of your project, you will have to store the state and the information from customers. There are some topics you need to know in general of:
- Benefits and advantages of SQL databases
- Advantages of NoSQL databases, e.g., MongoDB.
- Which is better in any situation
- Different database connections based on your preferred language: JS/Python to Mongo/Mysql
- An overview of Redis or Memcached that are the most used in-memory data stores.
- How to use the web storage for sessions, cookies, and cached data in the browser.
- How to scale databases, ACID, CRUD, and ORM
The one thing that is most important is to have storage, a cache and to understand basic principles. Mongo and Redis will help you kickstart on database level.
Learning bash scripting or chef is not an easy task.
There many options to deploy your servers today: Azure, Google Cloud, AWS and Digital Ocean.
I want to get help with Docker and Kubernetes, so I can deploy applications as fast as possible.
The important thing is to build my architecture in a way that makes it scalable and in case my project has the success I will have it ready for a tone of customers. Architecture is straightforward if I know the basics in advance.
Foundation: Data Structures and Algorithms
Some computer science key topics will boost your productivity a lot: tree traversal, sorting, algorithm analysis, matrix manipulation.
Not all companies require applicants to have a science degree but you will a
A big part of being a good developer and writing efficient code or using the right tools is to understand basic algorithms and data structures and being able to analyze trade-offs.
Some topics you should follow:
- Understand hash tables at a deeper level. Hash Tables is the data structure underlies objects in JS (and dictionaries in Python and hashes in Ruby).
- How trees and graphs can be beneficial as data structures.
- Basics of Big-O analysis, so you don’t do silly things like creating a nested loop three levels down if you don’t need to!
- What are the tradeoffs on using objects vs. arrays
- Why is caching essential when going to big data
- Pros and cons of in-memory vs. disk databases
- When to use queues and stacks?
Learning everything is not an easy task, but with the right guidance on the architecture, you can do amazing things. So you can learn by following examples.
Who is this for?
I am a newbie developer and want to code a clean solution with the right architecture.
This requires a mentor or a tutor to help figure out things with when I need assistance.
Some blockages arise and I need to figure out with the proper guidance.
I also need to understand how things work and to improve my programming skills.
More then this I need to fix some bugs and be able to address them.
My problem with the code will not just disappear on their own.
What should I do when I get blocked?
Join our community here and learn faster!