A bit of a backstory

Have been doing this craft for some time right now. I do remember the first lines of code that I've written at 14, in C++, #include stdio.h . I remember the first SQL queries that I've written at 16. At the same time writing C++ and Lua scripts for the Trinity Core emulators, fixing bugs for the Illidan encounter in Black Temple. Doing SysAdmin magic for Moodle. F#ucking up a "deploy" because in the FTP client I've pulled the files from right to left, overwriting everything. Trying to code and run an Android project along side a device emulator with only 1 GB of RAM in 2013, during my Erasmus mobility.

Writing my first lines of JavaScript and just falling in love with the ease of producing something visual, that can be accessed by anyone with a browser. Discovering Angular. Falling in love again with Python and Django during my internship. Using them to develop the management application for the 2017 RoJAM event. Going from hate to love with Type Systems and especially TypeScript.

Up to today, when I still find new and exciting things, like Vue or Nuxt. Or (I've been today years old) when I learned that you also can call super() in methods, not only inside the constructor.

So I decided to craft a list of things that I've learned along this awesome journey, that I would really like to revise in 10 years, and see what I can add or withdraw.

10 things that I've learned programming

  1. Read code. Especially well written code. A good place is the open source projects or frameworks, that usually have good abstractions or DP implementations.
  2. Learn multiple languages. The first one is hard, the second one is tough, but then it gets better. Each language has it's special "flavour" regarding paradigms and principles, and knowing multiple languages in which you can express yourself, you will certainly become a better coder.
  3. Code design patterns. Replicate framework functionality. Write algorithms. Make them efficient.
  4. Try to understand the entire system, not just your small part. Know about databases. Understand CSS Layouts. Get insight into how caching works. Learn about async and notifications. It helps a lot to have a broad horizontal development of knowledge.
  5. Have side projects. Express your ideas in code. And don't be afraid to create that fun app that you've always wanted.
  6. Subscribe to a newsletter that gives you recurrent updates from the community.
  7. Don't be afraid to refactor.
  8. Try to get introduced to a type system. It will help with the previous point, and a whole lot more.
  9. If you have a problem that you can't solve today, sleep on it. The right solution will usually come in the morning, and it will take a lot less time.
  10. Try to give back if you can. Join a community. Contribute to an open source project that you use and enjoy. Teach others. Volunteer. Raise awareness. Or simply talk about the new things that you learn.

If you got to here, thank you.