A question for all the experienced programmers here. How can one be an efficient coder? What are the things a newbie should do in order to boost their productivity?
Productivity is not limited to software engineering. The most of productivity hacks and many great articles and answers you may find on Medium or Quora already, mostly, in the business, entrepreneurship, success, life lesson sections.
I will try to give a short personal vision on how productivity is different in the software engineering:
First let's take a look on what is an "efficient software" or Software quality and especially ISO 9126 from the Wikipedia.
Here is a full table of Characteristics and Subcharacteristics for the ISO 9126-1 Quality Model
An efficient software engineer, obviously, is a sr. software engineer (How do you define a Senior developer?) who is able to build a functional, reliable, usable, maintainable, efficient, portable software.
To do so and boost your productivity my recommendations are:
Key to productivity is in your organization and discipline.
@ Level Newbie - Realize you're not the hottest dev under the sun. Don't worry about efficiencies. Poop garbage.
@ Level Intermediate - Realize no-one is the hottest dev under the sun and learning never ends. Ever. Then learn them hotkeys and work that muscle memory. Read your earlier garbage and refactor. Read someone else's code.
@ Level Advanced - Right posts, give advice.. then read it back to yourself as if written from someone else ;.)
Install a social media blocking extension in your browser ... which, I kind of really need to do, because that combined with not being able to get out of bed and stay out of bed in the morning are the primary killers of efficiency for me.
Try to thing clear, but not perfect. It's important to visualize the things to to and the best way to do it, but not the most optimized. Try to keep things separated, that one change in one thing don't affect the other, and mantain your code clean.
J03
Just another bit in the byte
Luis Orduz
Software Engineer
If we're focusing in productivity and productivity alone*, then the best thing you can do (maybe even the only one) is bringing the pain forward.
That is to say: whenever you're writing code and you find yourself doing something you don't like, do it more; eventually, you'll start looking for ways to avoid doing it and that's where you enter (or go deeper into) the field of automation and reusage.
That simple thing improves one's coding speed immensely.
* Quality of code, depth of understanding, width of your toolbelt, etc, are all entirely different matters (although some of them might improve as well).