It’s taken years for me to develop the traits, that don’t come naturally, in the following list.  I’m still working on most of them.  There are some, maybe many, days when I’m a complete failure at some of them.  So, don’t be hard on yourself!  All of the items in this list are needed for you to get better as a Software Developer and apply to life in general.

In the previous post, I covered questions you should ask yourself before starting a Software Development career.  In this one I’m going to list 20 traits that I see are common in successful developers. I originally had 15 but kept finding more in my research and preparation for the post.  The list isn’t in any order of importance but most aspects are more important if you’re going to make this work.  Some of these may overlap with the ‘quiz’ in the last blog post but iteration is good, right?

  1. Learner – Do you have a drive to learn new things?  If so, good because technology, including the development field, is constantly changing.  Let’s put together a long-term learning plan of 3 to 6 months to help you stay focused with an intentional list of items/topics to work through that will help you achieve your goal.  Later in this blog series, we’ll dive into creating your learning plan.
  2. Tester – As a developer you have to test everything.  I’m not a Test Driven Development purist but I believe that you need test cases for every high level requirement down to unit tests for each module/class/method.  Always create a test before releasing code.  This will save you time/grief later.
  3. Problem Solver – Do you enjoy a challenge or does it get you down?  Every problem is a learning opportunity. Unexpected problems will arise or you’ll come across something that stumps you while developing a solution.  Make ‘problem solver’ part of your skill set.  You’re most of the way there once you master solving problems.  Learn how to work through problems in general and how to apply technologies to those problems.
  4. Implementer – You have to follow-through.  Executing the implementation phase can make/break the success of your system.  Creating software is fun and what we’re here for.  You’ve got to find enjoyment in seeing your product work flawlessly or as designed and make your users’ lives easier/better.
  5. Strategic – Some days will be more strategic than others.  I’m talking about being smart and intentional here setting long term and short term goals that you can focus on.  We’ll discuss goal setting a little later when we get into your 90 day plan to become a Software Developer.
  6. Visionary – This is having the ability to envision or imagine things and is akin to creativity.  I guess you could call it thinking outside of the box.  The idea is that you go beyond the base requirements to provide extra or better features in a product.  Now, you want to build these in at design time as you don’t want to create your own scope creep.
  7. Planner – I’m talking more day-to-day execution here.  You’ve got to be able to prioritize and focus so that you can get the small pieces done to eventually get the bigger ones done.  If you can’t execute your plan at every level then you’ll miss deadlines and get into trouble.  You need to come up with a system/routine.  I’ve used simple to-do lists at the basic level up to large projects plans to keep track of tasks.  A kanban board is an excellent way to visually see your work.
  8. Persistent – You’ve got to keep going and see things through to completion, this goes beyond implementation of a particular project.  I’m talking about an overarching mindset that drives you to make the best thing that you can.  If you leave things, even small things, undone or half-done then they’ll come back to bite you.  When you think you’re done, then go a step further.  You’ve got to be ‘done done’ before a task is completed.
  9. Curious – Question things and ask others why they did something a certain way.  Don’t be degrading though, if you think you can do it better, when asking a teammate about their code.  You need to take it on yourself to learn things that you’re hopefully interested in.  Always be on the lookout for new things to dig into.  This is a little different from the learner trait but compliments it.  Curiosity is more of the catalyst to get you into learning ‘mode’.
  10. Hopeful/Optimistic – It’s important to know that you can overcome a problem or a large project.  Attitude is a key indicator in success.  Also, you need to surround yourself with folks that are optimistic.  If you find that a teammate is constantly being negative then try to help them see the benefits of a positive attitude.  Now, you’ve got to be realistic and not delusional but you’re much better off believing that you can achieve something, especially when you have the strengths of a team.
  11. Detailed – I’ve already discussed the importance of being detailed in the quiz email/post.  Even one precision point on a data type can cause major problems with your program.  I like to call this going slow to go fast.  If you take your time and pay attention to things through all phases of development then you’ll save time later.  Don’t rely on the QA or testing group to catch issues.  Performing unit tests on all of your code can aid with this.  It’s going to reflect poorly on you if you’re constantly releasing buggy code.  It doesn’t matter how ‘flashy’ your stuff is, if it doesn’t work then it’s a failure and will cost you later when going back to fix things..
  12. Tool Oriented – The primary tool as a developer is the IDE or Integrated Development Environment.  This would be Visual Studio for me where I spend most of my time. Tools are available and you need to love the ones you’re using.  Nowadays, tooling and knowing how to properly use your tools are key to being a good developer.
  13. Mentor/Mentee – You need to be willing and want to help others.  You also need to be willing to ask for help. My advice is to ask as soon as possible and build healthy relationships with those around you.  Be on the lookout for a mentor.  Even if you feel that you don’t have the experience to be a mentor to someone else try doing this as soon as you can as well.  When you’re helping and seeing someone else succeed it brings out the best in you.
  14. Humble – We all make mistakes and each of us have our strengths.  Pride or arrogance will get you in trouble and eventually make you look like a fool.  Understand that you’re not always ‘correct’. I’ve seen this as a big issue for programmers so learn to humble yourself.  You’ll get way more respect for holding your tongue than jabbering too much to be heard.
  15. Confident – This is close to being prideful but it’s not.  Confidence is knowing that you’ve done the work and have the intelligence but need others to succeed. 
  16. Patient – You need to be patient with yourself and others.  Everybody learns and works at different paces.  Plan for things to take longer than you think.  When you get into writing systems there are always things that come up but you’ve got to build a time buffer in to handle them.
  17. Thick-Skinned – You will get criticized and won’t always be constructive.  People are going to be people.  If you run across some that seem like they’re out to get you don’t let them get to you.  Try to gain understanding and insight into what they’re saying and ask them to explain further.  This will only make you better.
  18. Salesperson – This is probably the last thing that you want to be right?  Think about it though.  Your employer or free lance client is your customer.  You need to treat them as such, just like your favorite store treats you.
  19. Leader – Even if you’re not the manager or a leader by title you’ve got to be able to at least lead yourself.  Lead yourself with excellence.  Leadership is serving others, not the other way around.  Go out each day looking to show somebody something new and provide value that only you can provide to the world.
  20. Listener – Listen more than you speak.  When you do speak make sure that it counts and you’re not doing it just to fill space.

I know there are more traits but I think that I’ve listed plenty to work on.  Pick you’re five areas where you need the most improvement and be intentional about working on them.  If you’re thinking that’s just who I am and you don’t think you can become a patient person then I beg to differ.  You’ve got to put some effort into it.  Remember your WHY?  If anything develop these traits for that reason!