7 Habits of Badass Software Engineers
In my line of work I often encounter freshly minted developers, who either just graduated from a coding boot camp, or joined our organization as an intern, or as a recent computer science graduate. I often get asked about what makes an effective and productive software engineer in the real world. After putting some thought into this topic, I came up with 7 habits. Over the years, every amazing software engineer I have had the pleasure of working with has had at least 6 out of the above 7 habits. The 7th habit is hard to come by.
- Uses the best tools for his/her trade.
- Solves problems using efficient algorithms.
- Exterminates Code smells.
- Embraces a life of continuous learning.
- Writes a lot of code
- Is a Polyglot
- Is a teacher and passes on the knowledge.
Use the Best Tools
Using great tools is very important in a real-life programming job, especially when dealing with legacy code, large codebases, huge amounts of data, and hard-to-find bugs. Simple yet effective code editors, text editors, build tools, package managers, diagnostic tools are essential for producing good work. Never compromise on tools and always be on the lookout for great tools that help you accomplish things quickly.
Use Efficient Algorithms
Many software developers nowadays are completely unaware of even the simplest sorting or searching algorithm. This is such a shame. Strong algorithmic thinking is one of the key characteristics of a good software engineer. The tools and tricks of modern high-level languages are good to have but sometimes when things go wrong, or when a difficult computer science problem is at hand, the ability to construct an efficient algorithm is useful.
Identify and Eliminate Code Smells
“A code smell is a surface indication that usually corresponds to a deeper problem in the system” — Martin Fowler.
I highly encourage junior developers to learn and practice the SOLID principles. Writing SOLID code is the doorway to scalable and reusable software. It also allows you to exterminate code smells. Many of us write software that serves a business need. Software that is designed and architected well saves money and time for the business. On the flip side, a software system that is constructed poorly can lead to disaster!
Embrace a Life of Continuous Learning
Technology is changing as we speak. We need to adopt an agile mindset when it comes to our careers, adapting to change and learning as we go. Constant and never-ending learning is the only answer. These days it is not hard to learn technology with all the high-quality online courses available. Develop a learning ritual. Make sure you are learning something new every month.
Read and Write a Lot Of Code
Programming is a practiced skill. To get good at this and stay relevant, you have to read and write as much code as possible. Side projects, passion projects, consulting gigs, bug fixes, code reviews, open-source contributions, prototypes, there are so many ways to take your skill to the next level. The drive and passion to execute are more important than endless theoretical diatribe. Remember the ABC of this profession — Always Be Coding!
Be A Polyglot
After a few years in the industry, software developers tend to develop a comfort zone when they gain familiarity with certain platforms, technologies, and programming languages. As humans, it is hard for us to get out of our comfort zone. However, we must develop a working knowledge of more than one programming language. This broadens our horizons and enables us to look at a problem from different angles. Besides, it is fun to know a bunch of cool programming languages!
Teach and Pass On the Knowledge
Finally, at the end of the day, it is our moral duty to pass on the knowledge to a younger generation. Be a source of inspiration to kids who are thinking about getting into STEM or Computer Science. Be a role model professional that young minds can look up to.
Programming as a profession is demanding but for anyone willing to put in the work, it can be life-changing. I hope you find the above 7 habits useful and worthy of pursuit. All the best!