If you look at software development from the outside, you may feel like it’s very, very complex. So complex, you can’t even start to learn it. For example, if you try software engineering with JavaScript, suddenly, there is:
- React
- JSX
- CSS preprocessing
- Webpack
- Grunt, Browserify, etc.
So, if you are beginning with software engineering, or any development for that matter, what do you do? How do you wrap your head around all this complexity?
Tools come when they are needed
When you look at experienced programmers, you see them surrounded by all these fancy tools and technologies. And you don’t even know what these tools are used for. It may seem like unless you know these tools, you won’t be able to make software at all.
But that’s not the case.
In reality, you can make working software using very simple tools, like plain HTML, CSS, and JavaScript. For simple tasks, you don’t need complicated frameworks or module management. All you need is a text editor and some “hello-world” style code. For simple sites and consumer-grade software, that will be more than enough.
But once you’ve mastered these simple tools, you start thinking:
- Hmm… My web app requires a lot of CSS code. And if I have to change something in one part of it, I also have to change it all around, which takes a lot of time. What if I could automate all this CSS? Suddenly — boom — you are reading about CSS preprocessing.
- I’ve been working on this project for two months, and now I have over a dozen JavaScript modules that load on every page. What if I could bundle them all up into a single neat file? Boom, you’re reading up on Webpack.
- These static HTML pages are really starting to add up. I think I should automate them in some way so that I don’t have to manually copy-paste bits of code for each one. Boom, you’re building your CMS, or learning about Jekyll and static site generation.
In other words, as long as your tasks are simple, you don’t need fancy tools. But soon enough, your job requires more sophisticated solutions, and that’s when all these technologies come into play.
You learn step by step
Everyone starts with “Hello world.” Then everyone tries their first loops. Then everyone goes through creating their first app. Then comes the second app. For everyone, it’s a step-by-step process. Nobody starts using Webpack on day one.
When you see someone use advanced tools, it’s because they’ve mastered these tools step by step. And if you work in software development, you will go through these steps as well.
Today you might upload your files over FTP. In five to seven months, you’ll see yourself deploying Docker containers and monitoring your microservices over API like it’s nothing. It’s not a requirement for your job, but often you’ll realize that it’s more convenient that way. To you, it will be second nature.
Programmers tend to overemphasize tools
You’ll notice that many developers spend time discussing tools. Which stack is better? Which framework works best? Which language is faster for a particular piece of hardware? There is a lot of talk about tools, and it may seem like it’s important.
Well, it’s not.
If you take ten programmers and give them a single task, each one will solve it with different tools. And every solution will work. There might be tiny tradeoffs and differences in performance, but unless you’re talking Amazon-grade software, a user of the program would barely notice those differences.
Most tasks in programming can be solved in a number of ways, and one’s particular choice of tools is a matter of preference, not necessity. One programmer can start building a backend on Python, another can start with PHP, a third programmer can go into Ruby, and all the backends work just fine. You don’t need to know all their approaches to make your software run.
Just get into it
Bottom line: we have hundreds of tools for developers. But you don’t need to know all of them. Just learn the ones required for your current task, do it step by step, and in a year, you’ll have your own toolkit that works for you. And other beginners will look up to you and think, “Man, this developer is using some advanced tools!”
And you’ll remember yourself a year ago, and you’ll feel like, “Yeah. I just had to get started.”
If you found this article helpful, consider exploring the resources on Practicum. We offer online education and mentorship to help you learn essential skills and start a successful career in tech. Beginners are welcome!