Tuesday, November 19, 2013

What Software Development Has Taught Me About Life

My most recent ah-ha moment was when I recognized how much fifteen years in the software development industry has actually taught me about life.  There are so many parallels!  Let me fill you in…

Since the day you were born, you've been programmed.  It began with your parents or guardian telling you what you can and cannot do, what you can and cannot say, where you can and cannot go, what you can and cannot be.  Some of their programming was positive and some was negative.  Some “programmers” excelled at programming, some were average, and others should have been placed on a development plan or fired. 

There are many types of “programmers” in our world… 
  • Some were trained by the best and excel at programming, teaching others how to improve programming in their own lives.
  • Some were trained by a good trainer but strayed from those teachings, doing things their own way with some succeeding and some failing.
  • Some appeared on the outside to be good at programming when, in all actuality, they had no clue what they were doing or the severity of the impact it would have.
  • Some didn't have good training but took the initiative to learn, improving their programming skills to change the history of bad programmers.
  • Some had awful training and it showed in every aspect.

We’re also faced with a variety of “programming plug-ins” to choose from…
  • Friends – providing you with alternative perspectives, influencing you, giving their input
  • Education System –providing you what they feel is important, teaching you how to fit into this world
  • Culture – providing you with various attitudes, behaviors, and ideas of what is socially accepted and not accepted
  • Religious leaders – providing you with various options about what to believe and how it will influence your life
  • Media – inundating you with messages, manipulating you to do what someone else wants you to do

Types of Programming
Programming is received in three different ways:
Verbally – what you hear
Modeling – what you observe of others
Experiences – what you experience first hand

All of it has developed how your mind thinks and how you view opportunities, other people, money, success, failure, and risk.  It’s the reason the people you associate with (your development team) are so important.  It will slowly help you create a different “YOU”!  Great team work contributes to a great outcome, dysfunctional teamwork contributes to a poor outcome, and average teamwork is uncertain; it could go one way or the other.

You become the average of the five people you spend the most time with.  When you’re at the bottom, the others will pull you up.  When you’re at the top, be cautious; they will pull you down.  When you stay with five who don’t want to grow but you do, be afraid; they won’t let you grow.

Test Results 
During different phases of testing, we've encountered a variety of outcomes from these programming choices…
  • The results were superb and it became the catalyst for other programmers!  It was pleasing and others were impacted in positive way, seeing an improvement in their lives because of those programming choices.
  • The results were filled with lessons learned the hard way.  While some were absorbed quickly and corrected, others caused issues in unexpected areas, some not noticed until years down the road when it was more difficult to correct.
  • The results impacted several areas with the outcome dysfunctional and not user friendly.  Problems were consistently reported and when the programmer attempted to implement changes, things only seemed to get worse.
  • The results were overwhelming at first, but hard work, effort, and extra hours were spent making improvements.  The programmer did not give up or settle for mediocre.  Over time, things got better and eventually others wanted to join in!
  • The results were not what anyone would want to deal with or commit to.  People avoided - and spread the word to make sure others would avoid - the final product.  People didn't believe anything good would ever come from the disaster created and felt it was full of defects, worthless, and good for nothing… so don’t waste your time.

If you still have breath, you can be re-programmed! 
There is hope for you!  As long as you have breath, you can change your programming… and changing your programming will change your results! 

Disclaimer: High quality re-programming doesn't happen overnight.  It takes time and effort and it will cost you something.  If you want quality results (your dreams coming to life), it will take time and will cost you (eliminate unnecessary spending, giving up time on the sofa watching T.V., giving up an addiction, forgiving someone who hurt you, etc.).  In the end, it’s worth the cost, effort, and patience!

Development Methodologies 
You can choose from different development methodologies.  Some are better than others…
     Waterfall methodology: Spend months or years reading books, watching videos, taking notes, gathering feedback, observing others, and strategizing to come up with a plan about how to implement what you determine will give you the best results.  Then, implement it all at once.  After implementation, you may find it’s not at all what you wanted, which leads you back to the drawing board to deal with the issues that arose and come up with yet another plan to make it better.
Agile methodology:  Do quick research, take simple notes, and begin to implement a few ideas in short sprints (time frames) rather than a bunch of ideas at once.  When you discover things aren't working the way you thought or hoped they would, use it as a lesson learned.  Instead of beating yourself up over mistakes made and scrapping the project altogether, you come up with a new plan and keep moving forward until you eventually reach the finish line.

Development Overview
If you’re still alive, it’s not too late to begin re-programming!  You just have to start where you are with what you have.

No matter what kinds of programmers made up your past, you can begin re-programming yourself today.  The past is gone, today is new!

Always choose your “programming plug-ins” wisely.

What might be viewed as worthless now could very likely be a diamond in the rough!

When something doesn't go as planned, don't scrap the whole thing.  Learn from it, try something new, and keep moving forward.

Your programming drives your thoughts.  Your thoughts determine your attitude.  Your attitude drives your activity.  

A big thanks to Eric Worre for inspiring this post!