Book Review: Becoming a More Effective Developer
A lot of programming books teach you about a new framework, language, or computer science theory, but very few teach you how to actually be effective at your day job. The book, The Effective Engineer is a great one to learn all the ways in which you can be the best developer you can be.
This book goes through three main points:
- Developing the right mindset
- Executing effectively
- Building long term value
Each of these has some really good and actionable insights on how you can become better as a programmer.
Developing the right mindset
As Carol Dweck mentions in her book Mindset, the most successful people have a certain mindset in terms of how they view their learning. They believe that your brain can be changed and you can learn anything once you put in the work. That's definitely true for programmers.
A large part of being a software developer is that you are continuously learning new things. Whether new frameworks, languages, or software theory, there is no shortage of things to learn.
A majority of the time this learning comes from actual work on the job. No longer being able to learn on the job is a reason a lot of developers change jobs, so it's definitely cared about. Sometimes, though, that learning may need to be supplemented outside of the job. This is where you hear some developers doing projects and learning during nights and weekends.
The book goes through a few ways developers can actually do this learning, such as reading code from developers who are more experienced and to have them review your own code.
Focus on doing the right things (efficiency) vs doing things well (being efficient).
Doing things to be efficient may include items such as replying to emails, updating status reports more than they need to be, and other tasks that make it seem like you're busy but doesn't actually contribute much to the project you're working on.
That's where prioritization comes in. Once you take some time each day or week to prioritize what needs to be done, you'll have a clear way to move forward with the actual project.
This is similar to Getting Things Done in that you define clear tasks and prioritize the ones that need to be done. I would also argue to break up bigger tasks into much smaller ones.
Now that we have the right mindset for our productivity, we also need to know how to execute them. A few things from the book stand out in what I believe will help the most.
Master Your Environment
Do you use Visual Studio for all of our development? Then knowing as much as you can about it can save you so much time in terms of keyboard shortcuts or knowing when to move to the command line for certain tasks. Speaking of the command line, knowing PowerShell or bash can save you a ton of time as there are snippets and commands that can do a lot that you may not even know of.
Improve Your Estimation Skills
All too often you, as a developer, will get asked by your boss or a manager how long a certain task will take. How often have you said, "I don't know?" Improving your estimation skills is an easy way to be thought of as a senior programmer.
The main way to improve this is to just keep track of your tasks. Once you are asked to estimate you can refer back to your tasks and get an idea of how long it took you to do something similar.
There's also the book Software Estimation that can give a lot more details in improving your estimation details.
Building long term value
To be the best programmer you can be is to build long term value for your company and your clients. The book offers some great ways in order to help you build that long term value.
Balance Quality with Practicality
How often have you come across this scenario: you implement a new feature and the deadline is very close, however your boss wants you to go ahead and get it in to start testing. You mention how many more tests you need to write, yet your boss says to not worry about that and just check it in. Often referred to as technical debt, us programmers can perfectionists in that we want our code to be perfect before we send out for all to work on and see.
Having this type of balance on having your work be perfect vs. being practical in your work can be beneficial in terms of providing value to your company or clients.
Invest in Your Team
I think the biggest thing you can do for long term value is investing in the team. This can be done in many ways, such as the following:
- Providing a nice way to onboard new team members: Having a good onboarding solution will make new team members so much more productive and have them committing code within their first week on the job. This leads to higher morale overall across the team.
- Collaborating on all aspects of the code: This includes having efficient code reviews on all pull requests, and team members not afraid to volunteer for certain bug fixes or features.
- Building a great culture: This can be a hard one to accomplish, but if done correctly this will build higher morale with the team which will reflect team members making sure they give everything their best.
Of course there are other ways to help invest in your team, but these are some of the ways that can have the most impact.
This book is definitely worth reading for a lot of ideas on how you can easily improve your effectiveness as a programmer. For even more you can checkout the book's blog.