Are You an Effective Software Developer?

In a recent article I wrote about preferring Effective Software Development (ESD). I prefer being effective over being labeled as “agile” (whatever that might mean to you personally). This preference raises many questions for me. How do I define effectiveness? How do I know if I’m being effective or not? How can I become more effective? Is there any way I can help those around me be more effective? As you can imagine, these questions lead to many others.

I like the Wikipedia description of effectiveness. The description defines positive effectiveness in terms of efficacy and efficiency. Efficacy is the ability to produce a desired effect or achieve a goal. In a software development context, that might mean the ability to produce timely business value. Efficiency is the amount of effect that can be produced with a given amount of resources such as time or number of developers.

I think of efficacy as a primary component of effectiveness and efficiency as a secondary component. In fact, it’s sometimes desirable to intentionally reduce efficiency to increase efficacy. This is the idea behind having “slack” resources. The demands on a team are often dynamic and having slack resources for the peak demand times can improve the team’s overall efficacy. The challenge here is to know the right amount of slack to allow when future demands are uncertain. Of course, being highly inefficient will often not be efficacious. For example, wasting time on unnecessary or valueless activities might cause us to miss schedule milestones.

How do I know if I or my team are efficacious? I have to identify the desired effects I want to produce or the goals I want to achieve. A few examples might be:

  • I want to produce something useful or valuable for my employer
  • I want interesting work (learning new technologies, continually improving my skills)
  • I want to generate sufficient income for my non-work goals like hobbies, travel, or retirement.
  • I want balance between work, play, self development, and other activities

Of course, this list could become quite large and would be significantly different for different people. Sometimes the goals conflict and trade offs are required. Sometimes the trade offs are guided by values, but often observing the trade offs we make is a great way to discover our deeper and possibly unconscious and conflicting values. Create your own list. Are you achieving achieving those goals? How do you know? Do you judge your efficacy based on your feelings or by some quantitative method or some combination of the two?

So, are you as effective as you’d like to be? If so, that’s great. Ask yourself again every a few weeks. If not, what are you able and willing to do to improve your effectiveness? You might consider whether you have sufficient feedback. Are you evaluating yourself often (think of it as a personal retrospective)? It’s difficult to accurately predict the future effects of our actions so it’s good to get feedback frequently and adjust accordingly. Rapid feedback is a form of communication that allow us to courageously take action knowing we be able to quickly adjust our actions. This is starting to sound like the values of the first edition of Extreme Programming Explained. I don’t believe that’s a coincidence.

Comments

  1. Jungle Henge wrote:

    I really like the goals you want to achieve .
    but for me, I can’t balance the work and my other achieves. Because every project for me are very busy, and lack for skills. Every time when I want to use some new technologies, the employer’s efficacy can not be achieved. So how chould I achieve the other goals. Thank You !

  2. Steve Bate wrote:

    Can you be more specific about which goals are difficult to balance?

  3. Jungle Henge wrote:

    Yes, the goals like to learn new technologies and improve my skills. My company only use the mature technologies like EJB, JSP and so on,but I want to use AJAX to improve the customer’s experiences, and to make the Web page more beautiful. Our manager can’t abide by our advices, he said that those may increase the risks of the projects.

  4. Steve Bate wrote:

    So, it appears the conflicting goals are your desire to learn and apply new technologies and your desire to please your current employer. Obviously, any advice I give here is just some guesses at what could be done. Do you believe your employer has good reasons for concern about the risk of these technologies? If not, what can you do to educate your employer and provide a strong case for the benefits (business benefits!) of these new approaches? Is your desire to learn the new skills strong enough to spend your spare time learning them and possibly applying them on an open source project, for example? The experience might lower the risk for using the technologies at your jobs. Changing employers is another option, but without the new skills you may have limited options. I also realize there may be additional conflicting goals like spending time with your family versus learning new skills in your spare time. Again, these are just suggestions. Look at the relative personal importance of your conflicting goals and whether you are making the best tradeoff in your current situation.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*

*


*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word