Oct 1 2009

Growing as a Developer

Category: Leadership | Personal GrowthDavid @ 08:00

I was reflecting recently on my own growth as a developer over the last several years.  There are two factors in my own development that I identified as playing a significant and indispensible role.

Partners-In-Crime

I have been privileged over the last couple of years to work with other developers that have spurred me on to new heights in software development.  There has been a mutual give and take of discoveries and lessons learned.  There has even been a friendly sense of competition in challenging one another to keep learning and growing.  Unfortunately two of the most influential developers during this time aren’t as big a part of my professional carrier as they once were.  One has moved on to a new company and the other is in the process of transitioning to another company.

I can’t emphasize enough the importance of having these types of peers.  More over, it is highly important that you and they see the process of learning and growing as something to be shared.  We all know, or have known, those types of developers that, for one reason or another, lock themselves into a citadel of their own knowledge and refuse to help others grow and thereby restrict their own growth.  I am opposed to this type of mentality and believe that we should all strive to challenge each other to grow and to help each other do so.  It is one thing to tell another developer where she needs to grow, it is another to play an active role in helping them to grow.

Pages that Turned Me

In addition to my friends, there have been several books that opened whole new concepts and areas of growth for me.  Below are four books that have enlightened, taught and challenged me.  There have been others, but these were among the first that pointed me in a new direction and helped me to “turn over a new leaf” as a developer.  I would encourage anyone that hasn’t discovered these books to seriously consider making them a part of your library.

Code Complete, Second Edition

     Code Complete: A Practical Handbook of Software Construction
     Author: Steve McConnell

 

 

 

 

    

     Rapid Development: Taming Wild Software Schedules
     Author: Steve McConnell

 

 

 

 Cover Picture

 

 

          Refactoring: Improving the Design of Existing Code
          Author: Martin Fowler

 

 

 

 

          Design Patterns: Elements of Reusable Object-Oriented Software
          Authors: Gamma, Helm, Johnson and Vlissides

 

 

 

Tags: , ,

Aug 6 2009

Know Thyself; Know Thy Team

Category: David @ 14:10

One of the most enjoyable aspects of being a Project Architect/Lead, and one which can sometimes be the source of frustration, is being part of a development team.  Any developer that has been part of a team knows that the production of a quality piece of software is affected by numerous factors, not the least of which is team dynamics. Part of being a leader in a team is not only understanding yourself, but also understanding the people on your team and the overall personality and dynamics of the team given the current members.

One of the tools that has been significant in helping me to understand myself, my strengths and weaknesses, has been the Jung/Myers-Briggs personality assessment.  (For those who have never heard of this before you can check it out here and take a quick online assessment hereto find out what your personality type is.)  It has shed light on some of my own behaviors as well as helped me to identify those areas that I struggle with and why I struggle to change in those areas.  As an INFP I have never felt a high level of excitement over administrative tasks.  That does not mean that I can’t develop adequate administrative skills, it just means that I am not going to develop a sense of fulfillment for that type of work nor will it be something that energizes me.  However, as an INFP I am a die hard idealist.  I love to discuss, expound and implement best practices in my software, but have also had to learn to inject myself with a good dose of realism on certain projects.

Understanding the personality types is beneficial in team dynamics and is two fold.  First you need to understand the personalities of each individual on your team. This is necessary so that you can better help them to develop in those areas where they are weak and also, to ensure that the majority of their time is spent on areas that are in alignment with their personality. This helps to ensure that they are energized by their work instead of drained by it.  As a general rule you want to make sure that the members of your team are working about 60-70% of the time in positions or on tasks that line up with their personality type.

For example, you will find that there are some personality types that are less likely to deviate from previously used practices and tend to work within those practices with great satisfaction, efficiency and high productivity.  This type of team member is a great “work horse” that can get a lot of work done as long as the parameters are defined for them and the direction is clear.  On the other hand, this is generally not the type of personality that you want to put on a task that requires a high level of creativity and thinking outside of the box.  Not that they can’t ever do that, but they will tend to not be as satisfied and energized by that work if it takes up the majority of their time.

Secondly, you not only need to understand the individual personalities on your team, but you also need to understand the overall personality of you team.  If you have a large number of Introverts on your team then you may need to focus more explicitly on communication within your team and with the other stake holders on your project.  If you have a high level of personality types with Judging as a strength you may find your team struggles to improvise under certain circumstances.  Ideally the analysis of your team should help you to adjust the makeup of your team (if possible) so that it is well balanced.

With this in mind here are a couple of questions to think about:

  1. Does a persons personality type affect their predisposition to a particular methodology for the Software Development Lifecycle?
  2. How does the overall personality of your team affect your teams success with a given SDL methodology?

Tags: