To become a faster developer, you need to think beyond coding speed. You need to improve not only your core skills but also the physical environment, tooling and your approach to problem-solving.
If you are just starting out, don't get bogged down by the details. I have an elaborate setup because I work from home and I have been programming for over 25 years!
You will build expertise over time and fine-tune what works best for you. I am sharing what worked for me.
I cannot stress enough on how important a good sized desk is. You need enough space for your machine(s) and ample room to doodle. Make sure you can place a notepad, tablet, lamp, etc. and still have room to work comfortably.
What goes along with this is a super comfortable chair with armrests. I would highly recommend getting a headrest. If you’re going to spend 10–20 hours a day coding, you need a good chair. Even simple things matter such as how the armrest can adjust or where the neck support is placed, etc.
It is important to work on a fast development machine so you aren’t waiting too long for your code to compile or application to render. The same goes for a good keyboard, mouse, and monitor. These things can add to the fatigue. I remember when working with Java 1.0, my research project took about six months to implement and I literally spent 3 months out of those waiting for the code to compile.
A multi-monitor setup is extremely important. I use a 43″ 4K monitor as my primary monitor and two 24″ HD monitors on either side. This works perfectly for most of the complex applications. The reason is that you need enough real-estate to get a good overview of things like the code editor, debugger for services, debugger for UI, browser, email, stackoverflow/forums, dashboards, SSH sessions, Spotify, dev.to :), etc. Using a laptop is fine, but I find that I am very efficient when I see everything at once and don't have to constantly switch between windows.
Back in the days, it was probably acceptable to use a text editor, but it is definitely not productive now. You need to find the right software tools. You need a very good Integrated Development Environment (IDE) since this is where you spend most of your time. You need to find something that allows you to stay within that environment. Some good choices are Visual Studio Code, Webstorm, Pycharm, etc.
- Data Structures
- Design Patterns
- Problem Solving
You can find tutorials online for all of the above on YouTube, Udemy, Coursera, Udacity, etc. You should also go beyond just learning theory. Start coding these algorithms & data structures as it will help you improve your understanding of how things work and help you learn good coding practices.
Think of ideas to work on to solve your own problems and use those to hone your skills. This is a powerful combination and it helps keep you motivated.
You need to go beyond writing code to thinking in abstract terms. Think of breaking down the problem into big boxes with lines between them on a whiteboard (or notebook). You need to think of how to solve problems on paper first. In a corporate setting, you will also end up writing software design documents. Often, these are helpful at uncovering fundamental issues in the implementation ahead of time. Building good software is all about thinking through the process and breaking the problem down into modules that can be reused.
It is important to learn how to communicate and also interpret what is being communicated to you. If you can understand a problem/feature request from a customer or your team and translate it into proper requirements with an incremental plan on how to modularize the solution, you will save a lot of time during actual development.
Generally, I've spent most of my time on the whiteboard thinking about solving the problem and coordinating with other members of the team. I would say that coding is probably 60% of the work. However, these days I'm working as an Independent Consultant.
At the end of the day, you will spend time on a keyboard and in front of a monitor crafting your code. You need to get familiar with hot-keys / keyboard shortcuts. These are a huge time-saver. This is something I try to observe when I interview candidates.
In addition, you need to automate anything and everything. You are an engineer first and need to apply your skills to make your job easier. If you find that you are repeating yourself, you need to find a way to automate it. Every piece of code that you write, needs to be re-usable. You also need to write test-automation so that you reduce the likelihood of breaking your code and wasting time finding and fixing problems later on.
Familiarize yourself with the plethora of libraries, frameworks and SaaS products that simplify your life. However, build expertise in at least one of them. At the same time, be sure to spend some time understanding how various technologies work and avoid using them blindly.
Finally, before you start coding, take enough time to understand the requirements and make high-level diagrams on paper. If you can solve the problem on paper first, it is just a matter of labor after that.
If this article was helpful, ❤️ it and follow me on Twitter.