To be a better developer, develop better skills

You do want to get better. Work on amazing projects. Solve larger problems, even make more money and improve the world!

So you learn new things.

You study.
You read books.
You read blogs and watch YouTube videos.
You follow tutorials and online courses.

It all takes a lot of time…


How much time do you spend trying something for yourself, in a real (even if small), project?

I don’t mean trying things following a tutorial. A real project. Solving some kind of problem.

When we spend more time learning and less time developing, we are missing a BIG opportunity.

I understand…

When you learn something, it gives you a good feeling.
Things make sense.

You feel powerful, making progress. Like you are getting better!

But when you go to apply them, it is another story…

You feel bad. You try and it does not work. You feel stupid, incompetent… Like you are not moving…

When you acquire skills, you make mistakes, it feels wrong. But only when it feels wrong you are actually acquiring skills!
This is the paradox of skills…

Here is the thing…

The only thing that matters is acquiring and improving skills.

Learning for the sake of learning is totally overrated.

The only thing that changes your brain is applying. Is acquiring skills.


Acquiring skills is a biological process…
Pretty much like acquiring muscles in the gym…

It is uncomfortable.
It takes time…
We feel pain…
We feel stupid… Like it is not working.

But… It is the ONLY thing that works.

Learning feels good. Because it makes sense.
Learning is like riding a bike in the park on weekends. It feels good indeed.

But does not improve our muscles. (Ok, ok, it does a little bit, but not enough for you to become strong!)

If you want to be a great developer, you need to build great muscles.

I mean… Great skills!

So… There are 3 things about skills that every Java developer needs to understand.

One we already said above…

It is ALL about Skills. Not learning.

And skills only improve when you DO THINGS.

It is better to do a few things, and have great skills, then to try to learn many things…

No Limits.

The second thing you need to understand about skills:

Science has not discovered the LIMITS of our skills yet!

That means: you can ALWAYS get better. You can always go one level up.

But for that, you need to practice.

And not only practice. You need to practice with the deliberate intent of improving the skill.

Deliberate practice is a practice that forces you a little bit more. Every day.

Deliberate practice is not about learning, it is about doing. Improving a specific skill.

Like, reading code that you don’t quite understand. Every. Day. And then going for something a bit harder tomorrow.

That gets to our third point…

Different types of skills need different types of practice.

So, to practice correctly, you have to understand what type of skill you are trying to acquire.

The good news is that there are only two types:

Hard Skills.
And Soft Skills.

I know you’ve heard that hard skills are the technical ones.
And that soft skills are those annoying “people things” like communication and empathy.

That’s very misleading. Deeply so…

And this misconception it is preventing you from becoming a great developer!

Yes, hard skills are “technical” skills.

But NOT on the sense we developers talk about technical!!!!!

We say hard skills are technical because they are about techniques. Not technical as in technology…

Hard skills are PRECISE skills.

Skills that you apply EXACTLY the same way.
Every time.

Like hitting a chord on a guitar. Or that exact feet movement when flipping your skateboard in the air. Or… The precise movement of your fingers when typing on the keyboard. Or even the precise way you have to write statements in a programming language.

Hard skills you improve by applying a technique (so we call them “technical skills”).

Precisely. The same thing. Over and over. And over again.
Until it gets ingrained in your brain, and you stop thinking about it…

I know what you are thinking right now…

But Bruno… What I do every day, it is not usually precise, nor exact. I can’t just stop thinking about it. It changes all the time!

Yep. Because what you do as a software developer is mostly a Soft Skill…

Soft Skills have nothing to do with communication or empathy. Although dealing with people is generally a soft skill, soft skills are not dealing with people…

We call them Soft Skills because they are malleable. Fuzzy. Different.

Every time we apply them, they change. And adapt.

Soft Skills are “pattern matching” skills. You adjust and apply things differently depending on the situation you are at.

Like presenting at a rock concert. You don’t mindlessly play your guitar, but you connect with your audience. Or skating with friends down the street. You are constantly adjusting your speed and deciding which maneuver to do to overcome the obstacles.

Or… Software Development…

You are constantly changing course, adapting, trying different strategies to solve problems.

Software development is deeply “technical” (and people associate with “hard skills”), but it is not a technique…

Software development is a SOFT skill.

And the only way to learn soft skills?

Put yourself in different situations, that forces you to apply the skill differently.

Maybe you are one of the many developers that used to think software development is a hard skill. That leads to a big problem: trying to improve a soft skill, by applying hard skills methods to it.

We think that if we aimless repeat things many times — we call that practice — we will be better developers.


We only get better if we deliberately force ourselves to improve the right skills.


You can always be better at development by developing better skills.

Anything meaningful that you do is a combination of hard and soft skills.

And you only develop skills by doing the right things for each skill.

And not simply doing, but doing a bit harder than before.

That’s uncomfortable and painful…

So, here is the receipt to be a better developer:

  • shy away from the easy “learning path”. Learning gives you good feelings but is of limited use.
  • focus on doing things. It is uncomfortable, we feel stupid and incompetent, but it also is the only thing that works.
  • Apply “just-in-time” learning. Don’t learn in hopes to do it one day. Do it. And when stuck, learn enough to keep doing. Yes, this is hard! Very uncomfortable…
  • Think about which skills are “hard”, precise. They need technique and repetition. Repeat until it is ingrained. Until you do it without thinking. Obvious things are language skills, IDE shortcuts, git commands, keyboard.
  • Pay attention to which skills are “soft”, malleable. To improve on them you will need to put yourself in different situations. That’s also uncomfortable. Obvious things are applying technologies to problems, deciding on design patterns, code review.


So the trick is to be uncomfortable?

Yes. But with a purpose. Deliberately.

Uncomfortable is not about pushing a new code experiment to production. It is not going to the rock concert to play a song you never played before. It is not learning a new flip at high speed at a steep hill…

Uncomfortable is not being reckless…

Uncomfortable is about jamming a new song with your friends. It is trying a more daring maneuver in low speed at a parking lot. It is having fun solving a small problem with new technology. Or rewriting a personal tool using the latest Java version.

Uncomfortable is painful and tiring. But is also good. And fun.
It is risky and adventurous!

Uncomfortable is about doing. And I wonder if there is any other profession that we can do so much with so little!

That’s why I love software development!

Published on Java Code Geeks with permission by Bruno Souza, partner at our JCG program. See the original article here: To be a better developer, develop better skills

Opinions expressed by Java Code Geeks contributors are their own.

Want to know how to develop your skillset to become a Java Rockstar?

Join our newsletter to start rocking!

To get you started we give you our best selling eBooks for FREE!


1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design


and many more ....


Receive Java & Developer job alerts in your Area

I have read and agree to the terms & conditions


Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Newest Most Voted
Inline Feedbacks
View all comments
2 years ago

The job of the developer is really actual nowadays, but it is necessary to work hard, if you want to be successful, I sully agree with you

Last edited 2 years ago by TookyTooker
Rahul Thakur
2 months ago

I love this article.. this article gives me super direction which will be more effective thanks

Back to top button