Possibility and Probability

A Python programmer with a personality thinking about space exploration

21 November 2016

Becoming a better programmer

by nickadmin

[caption id=”attachment_919” align=”alignright” width=”420”]Becoming a better programmer one step at a time Navy SEALs jump from the ramp of a C-17 Globemaster III over Fort Picket Maneuver Training Center, Va. (Air Force photo by Staff Sgt. Brian Ferguson)[/caption] In the Navy SEALs they have a saying: Everyday you have to earn your trident. The trident is the symbol that sailors earn as they complete the training that makes them part of the elite SEALs. It is possible to lose one’s trident however. To prevent a behavior that might cause this, the SEALs remind themselves that everyday they have to “earn (the right to wear) their trident”. As I spend more time in the programming world I have come to realize there is great wisdom in this approach. A good friend of mine once told me that “Experience and skills are expiring assets.” In other words, if you don’t use them, you loose them. Just because your job title has the word “Senior” in it, you don’t automatically get a pass. You need to earn that title every day. So as a programmer, how can you earn your place? How can you improve who you were yesterday? What does it take to make sure you are becoming a better programmer? Here’s what I’ve been doing.

Read the right books

Right off the bat let me say: If you aren’t reading and learning, you aren’t growing. Every great developer is always learning new things, and to do that you need to read Effective Pythongreat books. If you are a python programmer I highly recommend Effective Python as a reference to read and keep handy. This book is chock full of best practices that every python developer should be familiar with (if not using on a daily basis!). At my office whenever a question about “well, what is the best way to do this?” we tend to use this book as a mediator. It is a really great book and I can’t recommend it enough. If you are python developer and interested in becoming a better programmer, getting this book should be step one.  

Code Katas

Recently I let a stupid bug happen. Thankfully it didn’t cause major damage, but I felt bad for letting it reach production. Also our code reviews did not catch this. It occurred to me that if I and others are missing “basic” things, its time to focus on basics. I decided to do daily “katas” to practice my skills. I’m using Codewars to do a few simple puzzle-type python exercises every morning. These exercises are just series of challenges that vary in difficulty, but typically mimic real-world problems. Sometimes they are about string manipulation, sometimes numbers. Each problem can usually be solved in a few minutes with a small amount of code. There’s no networking or SQL or other “external” requirements. Once you complete the kata (there are tests you run to make sure you are generating the right answer), you get a chance to see how others solved the same problem. This has been very enlightening, occasionally I will see a solution that uses some of Python’s advanced features in ways I’ve never considered. Doing this first thing in the morning has allowed me to arrive at work ready to dive in. As a result I feel my code quality has gone up in the last few weeks.

Touch typing

At a previous job I had a boss who was a Jedi-level touch typist. I have never seen anyone type as fast as he does. When he got going with multiple tmux session it was like a scene out of the matrix. He strongly encouraged us to improve our touch typing skills. In that company we ranged in skill levels but a few did try to improve our touch typing. I’ve decided to try and focus on it now because I find myself composing prose a lot more lately. Touch typing is also relevant for coding, but it is different. I don’t want to say harder, but banging out code is just a different mindset for me compared to writing emails. My goal with this is a better mastery of my tools. A true professional is a master of all the tools in their domain. Since we are typing into computers, it makes sense to be the best typist possible. Becoming a better programmer involves more than just the code you produce, you must be comfortable with all things computer.

Mastering an editor

Speaking of mastering your tools, it is vitally important as a developer to be very good with your editor of choice. If you are using an IDE, you should know a fair amount of the advanced features of it, and use them on a regular basis. I recently felt that I had really mastered PyCharm, and that combined with some workflow issues I was having (too many project being open was eating up all my RAM), I decided to reach for the ultimate test of programmer editor mastery: Emacs. I’ve been an off-and-on user of Emacs for over 15 years. After seeing the Mastering Emacs book I decided I was not a master of this environment and it was the challenge I needed to sharpen my skills. I’m enjoying the book and learning a lot from it. Lesson #1: You will not master Emacs in one sitting. :) But the journey is as important as the destination. As I do my day-to-day python work in Emacs I’m learning more about the language and the editor. If nothing else it is keeping me on my toes.

Becoming a better programmer

Sometimes as we go through our day we forget the basics. Be sure to challenge yourself regularly to “earn your trident”. The only way to become a better programmer is to practice the basics and master them. Remember its worth your time to revisit the basics from time to time. What are you doing to be the best you that you can be?