Why learning through trial and error is the best way to waste your time and client’s money?

The more I work in different projects, and the more I cooperate with other developers, the more I see “I have no idea what I’m doing, but I’ll try” approach.

I’ve already described a bunch of problems:

It turns out there are more of them. It’s hard to be a good developer.

Learning by example is not learning by trying

Many developers claim that the best way to learn is by looking at examples and modifying them. It is partially correct.

We have a problem We find a similar case We modify the example to fit our needs

That solves our problem and works. How does it work, though? Do we know and understand it? Until we have some problem with a stolen implementation, we don’t actually care. Even then, when something fails, we just find yet another example solution.

First learn then try

Most of the people never read a manual before using some household appliance. It’s usually so intuitive that, even it has a pretty thick manual included, we can plug and just use it.

The similar thing is with software, library, framework or just a small piece of code. Sometimes we are tempted with an ease to use a tool that we feel we understand and be comfortable with it.

Developers don’t want to learn a software, they want to write a software. We are so passionate about coding that we find learning process unnecessary. Or at least reading books. We want to learn tools by using them, without getting familiar with general concepts. We jump into getting started guide, follow examples and a new app is up and running.

Commit, push and see whether it works

This is the most annoying approach of fixing bugs. It may be reasonable when our production environment causes problems, or if CI environment is different than ours. However, when it comes to a building process, I think it’s unacceptable. Just because we don’t know how a build looks like or how production environment works, we shouldn’t just change a code, push changes and see what happens. We should get some DevOps skills, get to know the tools we are using and not wasting time (thus, spend money) on inefficient experiments.

You will notice very quickly how a testing tool was unknown to this developer. A series of trying, fixing and forcing just to make the code run. I believe learning how this testing process works, will simply save lots of time.

Subscribe to get the latest content immediately

https://tinyletter.com/KamilLelonek

Summary

Good developers know how things work.

Great developers know why things work.

Many people will complain now and criticize me. Similar to how my previous blog post was taken:

Yes, I don’t have 15+ years experience. It means there’s still lots of things in front of me. However, it doesn’t mean I can’t see some behaviors already.

In my article about being a senior, I emphasized:

Very often we hear someone has been working for 5 years. It doesn’t necessary mean that they have 5 years experience, though. The experience may be the same as in the very beginning if they do the same stuff in the same team, project, and company.

If you want to make a cutting remark, think first what your experience is? What do you know already?

I have only one request to you. Please learn the thing you want to modify before actually changing it. Don’t blindly replace the code, push it and check whether it builds. Get to know how this tool works, how one can configure it, and what a particular modification causes.