10x series: Using development tools efficiently

Vadym Barylo
Level Up Coding
Published in
7 min readDec 20, 2022

--

Have you ever thought about this magical 10x measurement? Why 10? Why not 15, or 5? Maybe it is somehow correlated with average human physical capabilities and known extremes?

Usain Bolt

Usain Bolt is the greatest sprinter of all time. He won several Olympic games and many worldwide championships. His personal best is 9.58 seconds for a 100-meter run. The average school standard is ~15–17 seconds. So it is just less than 2 times worst than the fastest man in the world can do. It looks like either Usain Bolt is not a good enough member for our dream team or this kind of sport is not suitable to compare with.

Let us accept that we are evolutionary good runners as we improved this capability to escape from wild animals and survive. As a result, we are already almost on top of what we can achieve and there is no big room for improvement.

Fine, maybe swimming? This capability is not at the top list of most required to survive. So is not improved by default.

Kyle Chalmers

Kyle Chalmers is one of the fastest swimmers worldwide. His personal best is about 48 seconds for a 100-meter distance using freestyle technic. Olimpic games, worldwide championships, and many other achievements in his portfolio.

To claim that you can swim just better than average — you have to show a result in a range of up to 2 minutes. Just 2–3 times slower than the best in this industry. Not a 10x again, strange? Maybe swimming is also less about physical power and more about proper technic?

Oleksiy Novikov

Ukrainian strongman Oleksiy Novikov was recognized as the strongest man in the world for several years. One of his personal best is 246 kg for Flintstone Barbell (behind the neck) press. An amazingly heavy barbell. Just reading such numbers makes me fill uncomfortable. But… after the first 2 months in the gym, the average weight you can already afford for this exercise is about 50–60 kg. It is about 4–5 times lighter than the top player in this industry.

So our physical limits are around 3x from average (with 5x exceptions for real extremes).

Ok, let’s switch from muscles to brain activity. The average reading speed for adults is about 220–350 words per minute. The average speed reading course promises to increase this speed to about 1500 WPM preserving comprehensive and thoughtful reading. It is also about 5x from the average.

The most exciting are extreme cases in this area. Howard Berg is the world’s fastest reader with a personal best of 25,000 WPM, which is about 100x better than the average. It is like reading 80 book pages in 1 minute. Astonishing.

So we can conclude that our physical and mental limits are in the relatively same range, the only mental limits are much higher for extreme cases. So still is not fully clear what is the magician 10x? And why do we expect any average engineer can be just better than 10 other engineers in the same room?

The concept of 10x developer lies in the space of routine task optimization. A well-optimized sum of regular tasks will produce a way better result than a non-optimized flow.

What are we measuring?

The first and probably most important for a software developer is representing business ideas using code. It does not matter how fast is your typing speed — it is important how efficiently you can use the developer environment to cover business ask. This includes much efficient use of development tools.

Let’s compare the speed of code writing with and without the use of hotkeys any development tool provides. We can use IntelliJ Idea as a coding instrument.

Code generation

The majority of projects are operating with the domain model objects represented with language-specific constructions, e.g. classes in OOP or functions in FP (functional programming). Usually, the smallest project might have dozens of classes to represent business models and transfer objects. So before designing behaviors and interactions we need to re-create dozens of domain model views in the project. Concluding, the time we spend defining primitives multiplied by the number of these primitives makes a huge difference.

Let’s measure the time taken to define a class (record or DTO-like) with a couple of properties (also a constructor to initialize properties, and getters) using vanilla coding and with using IDE shortcuts and hotkeys.

The shortcut used: “ALT + Insert” to create constructor/getters/setters instead of declaring manually

Depending on the number of fields only basic IDE shortcuts can improve your design productivity at a minimum of 3x times.

So far so good. The most routine work (that requires little engineering) we can make a few times performant. Let’s keep going. Taking into account, that in most cases we might have linked test classes (if following TDD) for each business entity, we can measure productivity improvements for the dozen of test classes we need also to support.

The shortcut used: “CTRL + ALT + T” to wrap code with IF, TRY/CATCH, FOR, and many others

Declare test classes with test methods can be at a minimum 6x faster by using basic IDE hotkeys. Fantastic.

But you will be surprised — even primitive procedure calls and storing the result into the variable can be at least 2x performant.

Also, simple conditional execution can be optimized about 2x times.

Other time improvement techniques:

When refactoring — often needed to encapsulate specific behaviors in private methods for further reuse.

The shortcut used: CTRL + ALT + M to move a piece of code into a separate method

Other interesting shortcuts into the handy collection.

Jump between code

  • CTRL + SHIFT + LEFT/RIGHT — Select the prev/next word
  • CTRL + ]/[ — Move to current code block end/start
  • CTRL + SHIFT + ]/[ — Select to code block end/start
  • CTRL + M — Scroll to center

Reformat code

  • CTRL + ALT + O — optimize imports
  • CTRL + ALT + L — reformat code
  • SHIFT + ALT + Up/Down — move selected code
  • CTRL + SHIFT + Up/Down —move method
  • ALT + J — select similar words
  • CTRL/SHIFT + Enter — Insert new line after/before current line and jump here (very important time safer when need to add at the beginning or at the end of the block, I promise)

Extracting code

  • CTRL + W — select words
  • CTRL + ALT + V — extract to variable
  • CTRL + ALT + M — extract to method
  • CTRL + ALT+ F — extract to field
  • CTRL + ALT + C — extract to constant
  • CTRL + ALT + P — extract to the parameter of the current function

Inspection:

Code inspection technics improve designing speed as we can get faster feedback about surrounding context to make a faster and better decision.

  • CTRL + H — to see the class hierarchy
  • Ctrl + P — show supported parameters in more detail without digging into the implementation
  • CTRL + Q — shows data about the current selection, e.g. how the variable is declared to understand what data it contains
  • CTRL + B — go to declaration
  • Ctrl + Alt + B — go to implementation

Clipboard

As developers, we do often need to rely on the clipboard data, so the hygiene here also improves writing coding speed significantly.

  • Ctrl + Y — delete the line without moving to the clipboard
  • Ctrl + Shift + V — paste from many available (all previous copies in memory)

And many many other useful code technics to make routine work faster in many times.

Summary

As we can see — just starting to use shortcuts and hotkeys on regular basis can improve our productivity 3x times at a minimum. So we are about 30% of the path to 10x performance. All we need to achieve this —is a printed list of the most important shortcuts in front of us on the wall.

But this is the simplest part of this journey taking into account the initial assumption — business intent is formulated, it is clear and it is properly recognized by the engineer. There is no reason for good performance in activities that have no business sense or when the intent was incorrectly translated to the engineers. So the next 70% are part of the efficient communication with the business layer and booting yourself to support changing environments and business goals fluctuations. We can reasoning about that in the next post.

--

--