Hello! This document is for young software engineers. The goal of this document is to provide a foundation (and not overwhelm you).
A good dev environment is a great foundation to build and learn bigger things. Before learning any tech you should invest some time learning these basics. Treat this as if you are setting up your study table.
The shell is one of the most basic (and very powerful) ways to interact with your computer. This is where all the interesting things will start and end when you are writing software.
Resources:
- https://www.youtube.com/watch?v=Z56Jmr9Z34Q
- https://www.youtube.com/watch?v=1jjwaU4nvVI&list=PLrZy_FnT2vQ30DPqr8LnZaMpkWzTbQTg_&index=2
- https://www.youtube.com/watch?v=I_dkeuyRB5s&list=PLrZy_FnT2vQ30DPqr8LnZaMpkWzTbQTg_&index=5
Version control is the correct way to maintain a logical history and backup of your software. Version controlling your work is really important (even if you are working alone).
Resources:
Get comfortable at using one code editor. This will be your weapon of choice for a big chunk of your professional life. The worst time to choose a weapon is during a battle.
A few editors you can explore:
- VSCode (easy to learn, is bulky)
- Emacs (learning takes time, extremely customizable)
- Vim (light-weight, customizable)
Some code editors offer features that cater to a particular set of programmers. For example, Emacs is great to work with if you are focused on customization and configuration. VSCode is great if you want a more GUI-like experience. Most good editors will provide similar functionalities. Pick what works for you.
Resources: https://www.youtube.com/watch?v=Qmb5rh6Ulv4&list=PLrZy_FnT2vQ30DPqr8LnZaMpkWzTbQTg_&index=3
Focus on getting good at a programming language. The best way to learn a programming language is to pick a toy project.
You can pick one of these languages to start with:
- Python (easy syntax, huge ecosystem)
- Javascript (easy syntax, huge ecosystem, multi-paradigm)
- Clojure (slightly difficult, but very powerful)
Some projects you can try:
- A basic Todo app
- A tic-tac-toe game
- Create your own (basic) calculator