When it comes to tech professions, good software engineers are extremely hard to find. The lack of IT talent has become a #1 issue throughout the world, hindering the adoption of many progressive technologies and resulting in skyrocketing salaries, comparable to the contracts of professional athletes. In the United States, the compensation packages of AI specialists typically range from $300,000 to $500,000 per year. To make things worse, there’s a scarcity of professors who can teach aspiring developers, since many get headhunted by companies like Google and Amazon, and juggle academic careers with working for tech giants.
Israel is trying to deal with the scarcity of talent on a wider scale, having launched a government-sponsored educational initiative aimed at saturating the market with quality local developers. Meanwhile, although the territorial price gap remains substantial, IT professionals are still the most demanded and the best-paid workforce throughout the world. So what does it take to be a good programmer/software engineer? Even if you are just making your first steps in the profession, here’s a list of 8 tiny habits that will help you become one.
1) Write clean, readable, and maintainable code
Keep your code as clean and simple as you can. Writing elaborate code is only a good thing if you want to practice; simplifying your code as much as you can actually means honing your coding skills and taking them to the level of true mastery.
Clean code driven development is also a sign of good work ethics. In a world when open source projects are gaining increasing popularity, clean code ensures it can be easily read by anyone. From a product owner’s perspective, clean code ensures fast time to market and makes you a stellar developer. Don’t forget to run regular code reviews and use code review software to do it automatically.
2) Automate as much as you can
If you are frequently doing a set of repetitive actions as you code, think of how you can automate them. Most of IDE’s will offer you this option and even more — it actually makes sense to discover your IDE’s full potential. Use code libraries whenever you can – chances are someone has pre-developed big chunks of code for you, so you can now integrate it into your project and save precious time.
“Learn keyboard shortcuts and the Unix command line”, – says software engineer Edward Prentice in a Quora response. “Almost any IDE will let you run complex build commands and even arbitrary terminal commands – these can be powerful and save you significant amounts of time”.
3) Make small atomic commits
This useful habit may take a while to develop, but it’s totally worth the effort. Adopting this approach became easier with the advent of Git since it allows committing just the number of lines from a larger file and merging earlier commits locally before pushing them into the remote repository. Small incremental commits account for easier bug tracking, are simpler to merge and revert, and, all in all, make development safer. Make sure you commit each bug fix or each task as a separate change, commit each layout change separately and only commit when you have completed a certain block of work.
4) Avoid distractions
It’s no secret that programmers work more effectively if they stay focused on their tasks for large periods of time. What most people don’t know is that it takes up to 20 minutes to focus back on your task once you get distracted. Similarly to the computer processor and operating system, context switching, also known as multitasking, consumes a lot of resources; moreover, it creates anxiety and results in high levels of job-related stress.
Train your mind to stay focused on the process and to omit distractions: limit the time you spend on social networks and have a fixed time for checking emails during the day.
5) Backup your code
Running frequent backups of your code is another small habit that pays out. Keeping multiple code backups and backing up your entire project after having done a substantial amount of editing ensures you can easily go back to the previous code configurations if you need to. Moreover, it’s a good thing from a security standpoint. Better yet, schedule regular backups to get them done for you automatically.
6) Be consistent
Being consistent means consecutively taking your project through logical stages: tackling the most difficult parts first and resisting the temptation to optimize on the go. However, you don’t always have to stick to this rule.
“The temptation is to always work on the fun stuff rather than the necessary stuff”, – says Jeff Standen, software architect, creator of Cerb, in a Quora discussion. – “It’s possible to do a little of both by using fun stuff as kindling before attacking the important stuff.”
Standen, however, is a strong advocate of optimizing last. This doesn’t mean writing sloppy code, but will ensure you won’t spend most of your productive time on something that worked enough already, he says.
7) Be an ardent learner
Software engineering is a constantly changing and quickly developing environment: knowing more than just one programming language, IDE and frameworks will actually enrich your experience and make your approaches to coding more flexible and agile. Top 1% of software developers also get inspired by reading professional blogs and, surprisingly, fiction.
“I read blogs and ideas from others who are experts (or just good) in the field and try to learn from them to improve my own game,” – says Charles Gee, a Computer Scientist with PhD in Applied Mathematics who works, – “But I also just like to have a book/novel on hand and when I’ve given my all at a problem I’ll take a walk with the book in hand and just take my mind off it for a while. It’s amazing how many new ideas come to me by just getting away for a minute.”
A lot of top programmers also write blogs and enjoy sharing what they learn.
8) Foster emotional intelligence
Most developers are believed to be introverted nerds, but in today’s distributed environment, teamwork is what makes a project successful. Learn how to interact with people from different backgrounds, become aware of potentially sensitive issues like gender and cultural differences. Get in the habit of doing something for your team – bring in cookies or organize team-building getaways and encourage other team members who would like to contribute. Having a good working relationship with your colleagues and a nurturing environment on the job always pays out.
Of course, not all developers and software engineers are created equal; some would name running software tests, using project management software like Trello, or keeping records of all they do during the day as their most useful habits. But what if we look at what makes a successful developer from a PM/Scrum master perspective?
All in all, a clean code-driven development, constant self-improvement, understanding the Agile principles and sharing DevOps values are important traits of a good software engineer. Yet, most software development PMs unanimously agree with the following: a great software engineer, the one they would be happy to see on their team, is a person passionate about coding who genuinely enjoys the process. Code quality criteria may differ depending on a project, but the person who loves coding will deliver the best results in any circumstances and under the tightest of deadlines. Most importantly a good developer will work for the kick of it, not just for the sake of a hefty salary.