A Juniors Choice

How do you want to grow?

When you go into programming, should you go for the latest framework or learn the basics first? Build a website with build steps or as pure as possible?

Last year I taught a class at german college „Hochschule der Medien“ with a Professor and one thing we continuously discussed was the level of abstraction a junior should learn at when going into programming. Until a few years ago my take on this was to always learn the basics first so you know what problems these frameworks, build tools and CI pipelines actually try to solve. I changed my opinion on this a little bit.

When working with beginners I’m trying to grasp what the soon-to-be developer is trying to achieve.

  1. Learn programming to work as a developer
  2. Create a product where coding is a means to get there

Especially with limited time (like a semester at college) this question is very hard to answer. Do we want our students to walk out with programming basics or with the ability to ship a fancy product? There are so many tools out there to create beautiful websites in no time, but then the basics are missed. What’s more important to you?
If we can answer that question I’m recommending the following:

When you want to work as a developer

Gor for the basics first. You don’t have to start at the bottom of the abstraction level (= no abstraction). So when building a website, build it as pure as possible but feel free to use some libraries like jQuery or a CMS and static hosting. Use a GUI for git if you like and modern code editors like VS Code. You can go deeper later ( like using git via terminal or setting up your own server).

You will learn important basics and can move up the abstraction layers later. Setup a build script once yourself after realizing why there is a benefit. When you built a handful of websites with jQuery you will start to abstract certain functionality yourself — and boom: you’re building your own framework right now. That’s when you realise what react and vue are actually there for.

When you want to ship a product

You want to ship something? An minimal viable product for your idea? A website for your non-digital business? Use every tool and abstraction there is to make it as easy as possible to get up and running. You can dig into the details later. Like setting up a standard Wordpress theme or starting via create-react-app will get you up and running in minutes but you will use tools which underlying principles you don’t understand yet. When you arrive at the limits of your abstraction layer, you can start to dig in. I do the same with tools that I use on the sidelines too. Like a server. I only dig into it when I absolutely have to – because usually the infrastructure is a tool for me to host my site. There is no need to dig in as I don’t care how it’s hosted as long as it works. This thinking applies to any tool that’s just there to get you where you want to go. You don’t learn how to build a car because you want to drive somewhere either, right? Your users won’t care how your product is built as long as it works. But as you want to go into programming eventually, don’t shy away from getting your hands dirty to understand what a virtual DOM or the critical request chain is.

So if you are a beginner, think about what you want to achieve and learn what is needed to reach this goal. After a few years you will have both: shipping your products and a deep understanding of the language and tools you use. 
But until then, I hope this helps you choosing the way to go for now.

There are lots of other things to consider when you’re just starting out with development — if you’re interested in some more insights and advice, let me know on Twitter.

Have a great time getting started 👨‍💻👩‍💻.

All the best,
Sumit


If you like these articles you should check out my mailing list where I send them out weeks before they appear here plus some exclusive ones 🙌.