Improve your code and design intuition

You should be able to develop your code and design sense to the point where you can look at anyone’s code (including your own) and intuitively know if it’s good or not. This is a critical skill to have if you are responsible for doing code and design reviews.

Here’s some suggestions based on what I’ve done.

Study design patterns and antipatterns

It’s important to know what you should do (via positiva) and what you should NOT do (via negativa).

Studying design patterns is a way to understand what people have typically done to solve a particular design problem. These are good to know. For this my suggestion is:

On the flip-side it’s important to know what NOT to do. Instead of focusing on applying design patterns to every single problem and overengineering your code, it’s a good idea to learn about antipatterns and refactoring.

I suggest reading these two books:

Study good code, code smells, and refactoring

Read the following books:

One of my favorite references for code smells and refactoring is SourceMaking. I like to point to this in code reviews as a teaching tool, like “use Extract Method for this part of the code.”

Lots and lots of practice

  • Do coding katas. I prefer CodeWars. Here is my method:
    • Look for a problem that has been solved by many other people (indicating the problem statement is well-written and understandable) in a language you like – I use this query.
    • Solve the problem on paper using pseudocode
    • Code the solution
    • Look at other peoples’ solutions

Note: It’s ok to give up on a problem, but make sure to go look at other peoples’ solutions to understand what you weren’t able to solve.

  • Do refactoring katas. What I do:
    • Clone a repo
    • Refactor the code little by little. Look for small, easy wins at first. As you refactor small things, larger refactorings will become apparent.
    • Diff the original code with the refactored code so you can see how you’ve improved it

Use different languages and write different types of programs. Don’t get too comfortable!

The main point of this article is to help you improve your code and design intuition. A good way to do this is by getting out of your comfort zone.

Here’s some ideas:

Leave a Comment