Friday, February 24, 2012

Personal Attitudes Toward Solving IT Problems

Building Trust with the Client or Why Soft Skills are so Important

I used to think the most important goal of developing software was to do everything the client says to do, verbatim, without argument or regard for the consequences. However, in my experience, this has often led to project failure. Projects succeeded when my point of contact for the client was a subject knowledge expert on the technologies being used and really understood and valued user experience design principles.

The *best* way to build trust with the client (or anyone else for that matter) is to convey your ernest desire to do whatever is in the best interest of the client for the entire duration of your relationship with the client - in a word: altruism. Use your active listening skills to understand what your client really needs.

Once trust has been established, your recommendations are more likely to be considered and implemented. Sometimes this may mean offering a cheaper solution or a solution that the customer can maintain themselves without needing custom development or maintenance every year. Your clients will remember that you acted selflessly and will be more likely to work with you again in the future on another project, or recommend and introduce you to other clients.

Could this be a Systemic Problem?

Systems Thinking has always fascinated me. And I only got more interested after reading Peter Senge's book The Fifth Discipline: The Art and Practice of Learning Organizations. Systems Thinking is one of the 5 disciplines he believes an organization must possess in order to maximize its business potential, among other things. It's a good book and I highly recommend it. I have a favorite bookmark that I go to, as a cheatsheet of sorts, when I am faced with a particularly challenging work flow or business process problem that I need to solve: Places to Intervene in a System.

Debugging is Underrated!

I feel strongly that this is the *first* lesson any programmer should be taught: how to debug computer systems. I would have to say that the most useful skill I possess as a programmer is the ability to debug anything. I *have* to know why it's not working - it will keep me up all night... And here's the thing - it's completely underrated! Sure, you can find millions of webpages dedicated to tips and tricks and code samples, but very few sites on good debugging techniques. I'll be sharing some of my favorite resources in a future post. I just wanted to shine the spotlight on debugging.

Continuous Improvement

Confession - I have a tendency to over-think really simple things. I'm not alone - most IT folks I know seem to have the same affliction. For example, when I was a kid, I often pondered about the most efficient way to tie my shoes (go ahead, laugh). I've literally spent days thinking about this from every perspective I could imagine - from redesigning the laces and shoes to some sort of self-tying mechanism.

So, when I approach an IT problem, I often check in with myself to determine if I'm over-thinking the solution:

  • Have I properly identified, defined and understood the problem? 
  • Have I verified that all my assumptions are true? 
  • If I were the user, ideally, how would I want the overall system to function? 
  • Can any of the processes/components be simplified/improved? 

    No comments:

    Post a Comment