Ignorance is bliss. Or is it? – Taking shortcuts in software development

Tomislav Bradač

Ignorance is bliss. Or is it? – Taking shortcuts in software development

As developers usually do, I was procrastinating on X, and this tweet(?) caught my attention:

I recognized myself immediately, but I was not sure if it is a bad or a good habit. Projects have timelines and hard deadlines. It is expected of us to deliver the feature on time and with as little bugs as possible. And today, with AI shoved into every tool with more than five users, it is easier than ever to skip reading a ton of documentation and get the (right) answer immediately. But is it a bad thing?

Junior developers – your job is to learn

Imagine this scenario – you have landed your first job. First time working in a team and probably on a large project with a lot of business logic and legacy codebase. The amount of information you get from your colleagues is overwhelming. You’re assigned a mentor, complete the onboarding process, roll up your sleeves and jump into the IDE of choice.

The situation described in the tweet from the beginning of the post sounds like a great way to start contributing to your team right away. However, it also carries the greatest risk to your chance to climb the ladder and develop your career. It is often not expected of you to perform at the level of someone with more experience, a middle/senior developer. But this is your chance to learn. Quick fixes, such as a random solution from Stack Overflow, Reddit or a tweet, present a great danger; the danger of getting something to work, but not knowing why and how it works. This is one of the most important tasks of a mentor – do not allow your mentees to take shortcuts!

On the other hand, an example of using AI instead of writing the code yourself is writing boilerplate code. For instance, writing tests – if you understand the concept of testing the code, then there is nothing wrong with asking your AI assistant of choice to write the boilerplate code for a test class. Just make sure all the right use cases are covered, and you’re done. This leaves you with more time to focus on skills that actually matter.

My experience tells me that working on a large project often intimidates not just junior developers but even more experienced ones. While debugging code, sometimes we are afraid to “step-into“ a certain function provided by our framework and miss out on understanding the inner workings of the framework we are using. When code execution hits your breakpoint, you look at the trace window and see 20 lines your request has travelled through, and it looks scary. Ignorance really can feel like bliss, can’t it? But if you take the time and go a few steps back, all those layers start to make sense and often the logic is simpler than we imagined.

Complex business logic and modern frameworks mean that there is a large amount of code, demonstrating that technology can be quite overwhelming.

Overwhelming technology

I am a back-end developer but sometimes I have to do a bit of the front-end stuff. I know the basics of Javascript, but keeping up with all the news in the Javascript world can be a bit too much. Seeing the size of a node_modules directory sends shivers down my spine— and not in a good way. In such cases, I’m happy to take the helping hand of our good friend, ChatGP.

But here’s the thing: I do it intentionally and I am aware of the consequences it brings. I’m not planning to become a full-stack developer (if that’s even a thing) nor to dig deeper into the Javascript ecosystem. If taking shortcuts deprives you of knowledge in your domain, try to avoid it. Or at the very least, take time to explore the topic in more detail once the immediate fire is extinguished.

When to educate yourself?

Of course, reading blog posts, tweets, and similar content does have value. You gather information about general topics that are currently popular, but it is on a higher, conceptual level. If you plan to acquire that lasts, you probably need to apply the solution you’re reading about. Only with practice does this knowledge truly stick.

In the team I work in, there was often a need to set aside time for education. At first it may sound great, but experience has shown that this time is often skipped because of more urgent tasks at hand. What would you actually do during that reserved time? Scroll through Twitter or read a blog post? That may be okay, too, but at least in my case, the useful information I read tends to be forgotten rather quickly if not applied right away to a task or problem I’m solving.

The best time to educate yourself about a certain problem is when you are actively trying to solve it. This allows you to explore the problem more deeply and focus on it. After reading about all the best practices, you have the opportunity to confirm that the theory actually works in practice. There is even a scientific concept that explains why we quickly forget information we didn’t have the chance to use -the Ebbinghaus Forgetting Curve. The rate at which we forget newly acquired information over time is exponential. We tend to forget a staggering 70% of what we learn within just 24 hours if we don’t reinforce it through practice.

Conclusion

So, is ignorance bliss? As with any advice in IT, it depends. I’ve made a simple flow diagram that summarises this blog post in a single picture:

Do you often find yourself faced with this problem?

It depends on your personal development plan. If you like the field of expertise you’re involved in, make sure your foundation is solid. It will make things easier in the future. Skills we skip learning at the beginning of our professional journey often come back to bite us, and if it happens repeatedly, it can easily become frustrating.

Taking shortcuts on tasks that do not enhance your knowledge or improve your ability to solve more complex problems frees up time to focus on learning skills that do the opposite. Take the time to truly understand that library you added to your dependency tree, which became the backbone of your app. Dig deep into the core of the framework you are using — there might be some cool concepts and effective ways to solve problems you might encounter in the future. Your future self will thank you.