5 Habits of a Successful Software Engineer

Want to transform your career?  Adopt habits that allow you to make that transformation through small, incremental changes.

"Champions don't do extraordinary things.  They do ordinary things, but they do them without thinking, too fast for the other team to react." - Charles Duhigg, The Power of Habit: Why We Do What We Do in Life and Business.

Here are five habits that can build your success as a Software Engineer - five areas that, in my experience, have been the most impactful.

Learning

It should be no surprise to find learning at the top of this list.

The thought of continuous learning should excite you, because as a Software Engineer, it is required to be successful.

The software world is always evolving and you'll need to adapt.  You'll need to learn new technologies, new skills, or even an entirely new sub discipline of Software Engineering.

Learning is key to developing your career as a Software Engineer.  Invest in your career by spending a minimum of 4-5 hours per week learning.  If you're trying to learn a new technology or concept quickly, you may find that you need as much as 30-40 hours per week outside of your normal working hours.

Community Involvement

There are many ways to get involved in the Software Engineering community.  How you get involved isn't the important part.  Just doing so will create connections and opportunities for success.  Here are a few common ways Software Engineers get involved in the developer community.

  1. Open source - build experience and your network by finding an open source project to get involved with.  Even if you're not comfortable writing code right away, open source teams are often seeking help in other ways, such as documentation or product management.  Github is a great place to look for your favorite project.
  2. Meet-ups - find a group with topics that you're interested in learning about.  Have conversations with other attendees.  You'll very likely learn something from them.  Try using Meetup to find a local or online meet-up group.
  3. Online communities - contribute to an online community, such as Stack Overflow or Reddit.  Reading about concrete examples of Software Engineering on a regular basis allows you to develop a strong working knowledge over time.  Answering questions that other Engineers have allows you to test and gain feedback on your understanding.
  4. Mentoring programs - seek out a mentor or mentee through a mentoring program.  Mentorship enables you to accelerate your professional development more quickly than you can do on your own.

Sharpening your tools

Have you ever seen an Engineer whose hands never leave the keyboard?

One who makes it look as though they're using mind tricks to control their computer?

Kinda like what  you first pictured Software Development to be?

If you take the time to truly sharpen your development environment and tooling, this is possible.

Use some of your learning time to hone your development environment.

Start by doing some research and experimentation about the tools that are available.  Specifically, I'd recommend focusing in on three things that are largely portable and durable skills:

  1. Text editor
  2. Shell
  3. Operating system

Choose one of each and hone your skills over time.  Learn a new keyboard shortcut each week.

There is an excellent book on this topic called Small, Sharp Software Tools: Harness the Combinatoric Power of Command-Line Tools and Utilities.

Taking notes

Note taking is critical.  It can greatly reduce switching time.

It's something that takes effort to do well, but it is worth the time investment.

You'll want notes for some of the obvious reasons, like remembering what you did, where you're at, what that new API endpoint was.

You'll also want notes to help you be a better communicator.  Taking notes will enable you to communicate more effectively with your team.  You will be able to provide better context in your update at daily stand-up; you'll better explain a problem you're facing when another Engineer is helping you; you can remember that question that you wanted to ask someone when you meet with them.

But your notes will come in handy for other things as well.  You can see your progress over time.  You can search for how you solved a problem the last time you encountered it.

Depending on your note taking methods, you may even be able to share your notes and empower others as well!

Start up and shut down routines

Expanding on the idea of taking notes - I'm a big advocate of Software Engineers using their notes for daily start up and shut down routines.

At the end of your work day, take just five minutes to take notes.  Just jot down any thing that you think will be helpful context when you start back up in the morning.

Then, at the beginning of your work day, go back to those notes.  They'll help you jump right back where you left off without such a high cost of context switching.