Last updated on 2020/02/19
Engineers are like snowflakes, no two are the same.
Every snowflake that has ever formed is constituted from different atoms in a unique configuration. This is similar to Software Engineers where no matter how similar the learning path, no two will ever be identical in their developmental skills and abilities.
However, even with different levels of aptitude, the people that rise to the top and can be considered as the most successful are the ones that build solid a foundation of habits and skills that allow them to perform closer to peak efficiency longer and consistently have higher quality output over a longer period of time.
Over many years both participating in Software Engineering projects and while managing other people performing this role, the following traits have stood out among the most successful people to hold this title. These are a collection of skills and habits that increase efficiency and quality of output and can help anyone reach the next level.
1. Find ways to manage your own time effectively
The best Software Engineers both code and work as managers of their own time in order to stay efficient.
Most Software Engineers are left alone to complete difficult development tasks that require some deep thinking and planning in order to achieve a favorable outcome. This means that the potential for distractions and loss of focus is high.
A good Engineer understands how to avoid these distractions and how to maximize their time in “the zone” where they produce the most output and are nearest to peak efficiency.
2. Follow a coding standard
You should always structure your code in a logical and consistent manner.
If the team that you are on has a common standard to follow, great. If not, then you should be forming your own personal standard. Following a standard provides a framework that over time allows for greater efficiency and consistency in your output.
A personal standard can also help you to identify what pieces of the code you wrote in the past and, when the need arises, helps you to re-learn that specific code when it needs to be reviewed, changed, or re-factored. This is important because you will forget the intricacies of your own code after enough time. Having a familiar style to read when reviewing your past coding projects will help speed up that re-learning effort.
3. Communicate status to your team and boss early and often
The world is an interconnected place and no Engineer works in a vacuum.
There is always someone else that can be considered a stakeholder in any ongoing development. Good Software Engineers recognize this and work to ensure that each and every stakeholder, no matter how relevant, is informed and up to speed on the latest status for any development.
Communication is the foundation for good teamwork and the best Engineers always work hard to keep everyone updated and in the loop.
4. Find others to learn from
There is always more to learn.
No matter how good at one language or method, there will always be something new coming down the pipeline at some point. One of the best ways to grow as a Software Engineer is to follow in the footsteps of smart people who have paved the path ahead.
This does not always need to be a mentor-mentee type of relationship. Other people on your team, bloggers, managers, and open source projects can all provide knowledge and value to your own professional career. The goal here is to never stop learning.
5. Check things in early and often
Modern-day version control is is essentially limitless, easy to use, and requires little effort to complete. So use it!
There is no more excuse for losing work because it wasn’t backed up. There are enough tools in existence to make this effort a trivial task – if you make it a priority in your daily workflow.
Many modern programs auto-save and continually back things up. It is harder today to lose big chunks of work than it has ever been, but it is still possible. Building habits around saving often and checking things in frequently are important to maintaining consistent progress and high efficiency.
6. Balance work and personal life
Work is never ending and businesses will always be able to take more than you can give.
It is all too easy to get lost in concentration on a big project. It can be all-consuming if you let it. But the human brain needs breaks and stimulation other than a computer screen, keyboard, and more coffee in order to stay at peak levels of operation.
There is a reason weekends exist. Take the time to go for a walk, see a play, or walk the dog. The work will be there when you get back and you will be able to average higher output over time with a balanced approach to work and personal life.
7. Keep creating personal projects
It is impossible for any one person to keep up with the fast pace of technology on all fronts.
Even if you are working on something considered to be cutting-edge at the office, there are still many more technology frontiers that you are not exploring or learning.
Personal learning and independent projects are a key aspect to furthering your education in the areas that your normal 8-to-5 job doesn’t cover. This keeps you up to speed and relevant in many other areas of technology that you wouldn’t have an opportunity to lean otherwise.
8. Learn to accurately estimate your own effort
Business are run off of dates and timelines.
No matter how agile your development methodology is, at some point the question will be asked: “When will it be ready?“
This question will be much easier to address with an accurate answer by understanding your own work habits and how much output per unit of time you can realistically complete. The trick is to get to this point of understanding before you are put on the spot in front of the full team. Knowing your own abilities and limitations allows for a much more confident and accurate answer to this question.
9. Document your code
Over time your memory of why you wrote that function in that manner will fade.
There will be a day in the future that looking back on older code requires the same amount of effort to understand whether you or someone else wrote it. Documenting your code provides a means for the immediate context to be available for anyone, including yourself, who comes after to review, maintain, or modify the software.
Making documentation a habit not only preserves intent and meaning over time, it also helps to visualize and work through complex problems better and faster than simply through code alone.
10. Learn how to QA your own work
Nobody knows the strengths and limitations of a piece of software better than the person who wrote it.
Performing your own QA passes over new features and functions prior to handing them off to another person for review is an invaluable tool towards producing stable and complete software.
Learning and practicing skills like Test Driven Development (TDD) and understanding how to effectively perform a 360 degree review of your own code looking for edge cases will put you head and shoulders above the crowd in terms of output quality. No matter how boring or time consuming the process may seem, learning how to effectively QA will make you a better Software Engineer.
The sooner that you as a Software Engineer build the habits and skills for success, the more successful your career will be. Remember to keep reading and learning and to never give up! Thanks for reading!
Comments are closed, but trackbacks and pingbacks are open.