Did you know? In 1936, Russian engineer Vladimir Lukyanov built a mechanical computer known as a Water Integrator that carefully manipulated water in a room full of interconnected pipes and pumps. The water level in various chambers represented stored numbers, and the computer could solve complex mathematical equations. I’m sure the last thing Vladimir wanted was a memory leak, am I right? 🤣
Hey all! 👋 A massive thank you to JetBrains for inviting me on to be a guest author! As a huge fan of both ReSharper and Rider, this is a great honour!
Today I want to talk about developer productivity. This is something I’ve always been interested in – perhaps because I don’t see myself as naturally being super-productive – so over time I’ve intentionally tried to learn tips and tricks to improve and get things done a bit faster.
When reading about developer productivity, I come across the term “10x developer” quite a bit. I find this term interesting, but also quite detrimental. The main thing I dislike about it is the word “developer”. This suggests an individual that is an order of magnitude better than average. A so-called rockstar developer. Well, good for them. But let’s instead change the term to be more helpful to the average developer. Let’s call it “10x development” instead. In software development, there are massive multipliers to be had depending on how a task is approached. A developer who knows lots of productivity techniques and tools will be more productive. But I think the term “10x developer” focuses on the wrong thing. It focused on the individual, rather than the tasks themselves.
Here are a few examples…
You need to fixup namespaces across your entire solution. Do you do it manually in each file? Or do you hit a keyboard shortcut so your IDE does it for you in seconds? How many “X” is that time-saving? 100-1000x maybe? Learning your IDE (Rider of course! 😉), and its various shortcuts – will mean you spend less time doing those things manually yourself.
You spend 2 months building a feature. Or you discover a library that does it for you. 2 months vs 1 hour? 300x?
You have a process that’s repeatable and needs to be done often. You manually do this process each day for the next few years. Or you automate it to get all that time back. 1000x?
You have a performance issue in your app. You manually try to work it out by putting logs and timers in code. Or you’ve previously learnt how to use a profiling tool which very quickly gives you a detailed analysis of what’s going on.
As developers, we have so much opportunity and power to automate tasks, leverage IDEs and tooling, and complete tasks WAY faster. I can’t think of another industry which allows the level of productivity hacking that we have.
And lastly – of course, do make sure you’re being productive on the right things! You don’t want to be more productive at making your big ball of mud codebase even worse! Sometimes a great way to be more productive is to KISS (Keep It Super Simple) 🙂
Developer productivity is a huge (and fascinating) topic, with many aspects to it. I wrote a blog post quite a few years ago that delves into more areas – eg. compound learning; note-taking; and focus. Speaking of focus – the Pomodoro technique is something I use heavily, which I’ve personally found has made a huge difference to my focus levels. I’ve recently recorded a short video about how I use this technique together with taking Pomodoro notes.
Each month, we feature tutorials or tips from our .NET Guide. Here are some pieces of useful knowledge worth filing away in your brain for future development.
C# Params collection
In C#, the params modifier provides a convenient way to allow methods to receive a varying amount of arguments. This means at runtime there’s more flexibility when passing arguments because you don’t have to create a bunch of overloads for the same method. This feature is especially useful when the number of inputs is unknown or varies. But most of all, params makes the calling code more concise than the traditional way to call a method that needs this kind of runtime flexibility.
Can’t recall that PowerShell command? Using Linux or macOS but can’t remember the syntax for a particular shell command? This is a great use case for AI!