Monday, February 23, 2015

You are not a ninja!

Agile professionals are NOT ninjas!
Like most professionals, I tend to get ornery from time to time.  I am beginning to think that this is a healthy response to working in present day corporations.  Human beings have gone from being hunter gatherers to living in cubical farms in the span of 5,000 years.  It does not surprise me that there is not some kind of psychological backlash to this situation.  Further changes in the professional world like the hoteling of work spaces and the growing dependency on contract workers has made life in the corporate world seem like something out a Franz Kafka novel.  Today, I want to talk about something that have been bothering me over the last few weeks.  The growth of faux titles that agile professionals are using to try and describe themselves.

My irritation began when I noticed that someone began using the phrase “code ninja” to describe themselves and scrum master skills.  I have already blogged about what I think about people who describe themselves in this manner.  Now, I am seeing terms like “Agile evangelist” and “Wizard” cropping up in some discussions about agile professionals.  I understand why people are doing this to try and brand themselves and make themselves more appealing to the market but it really needs to stop right now.

We are agile professionals.  We are not wizards pulling rabbits out of our pointy hats and summoning a Patronus when an impediment crops up.  We are not Jedi because I doubt we would ever get the licensing from Disney to use the title and we don’t have cool light sabers.  This also means we have to deal with Sith and frankly the thought of executives with the power to force choke is a little disconcerting.  We are not ninjas because even though we are highly skilled professionals we are not being asked to kill people.  Finally, we are not evangelists.  Evangelism requires blind faith, total dedication, and the commitment to orthodoxy.  That is the antithesis of Agile.

Agile requires its practitioners to try new things.  One of the tenants of the manifesto, is we respond to change over following a plan.  Pragmatism, the scientific method, good engineering, and relying on a community of professionals is what makes us agile.  Contemporary evangelism tends to shun these values.  I will concede that it does take a leap of faith to try and change how contemporary business is done but we are no different than the professionals who applied W.E. Deming’s methods in Japan or the lean manufacturing professionals currently practicing in the United States.

Finally, if you call yourself an agile apostle and you are not one of the original signatories of the Agile Manifesto you deserve a good dose of scorn and ridicule.  Agile was not dictated to us like the Koran to Mohamed or revealed to us via golden tablets to John Smith.  It is the product of thousands of people attempting to pull business out of the 19th century and into the 21st. It is changing and evolving and responding to change.

Drop the silly titles and let your work speak for itself.  We are Scrum Masters and Agile Coaches.  We are servant leaders trying to help others be more productive and content with their careers.  We need to get our hands dirty, refactor code, attend meetings, deal with the personal problems of our developers and try to make a difference in the lives of the people we work with.  This is not glamorous or flashy work but it needs to be done.  I you want to call yourself a ninja or Jedi then I think we are not going to work well together.  Don’t worry those of us exhibiting the quite professionalism the job requires will still be here to clean up your messes.

Until next time.

Monday, February 16, 2015

Never be ashamed of failure.

This is a epic fail.
I am a professional Scrum Master and entrepreneur.  When I tell others about this, they have a perception of me as a hard charging success junky.  The reality is more complex and depressing.  This week on the blog I want to discuss failure and how it shapes you as a professional.

From the moment you enter middles school until you graduate, you are place in competition with others.  An “A” is the pinnacle of work while an “F” is equated with failure.  You are given class ranking and placed in a pecking order based on academic performance.  You are consistently reinforced by your teachers that your performance in the classroom will impact your life.  A good student has a chance to escape his or her mundane middle class life.  A poor one will be condemned to flipping burgers or dancing with a brass pole.

From a learning perspective, failure was discouraged and success gateway to further success.  In hind sight, it seem like educational malpractice.  Some of the most important lessons I have learned have come from mistakes.

This situation is further exacerbated when you leave school and enter the work force.  Sales people are judged on the amount of revenue they generated.  T.V. news casters on their ratings.  Programmers on how many hits they receive on their web sites or how many times their app is downloaded.  The numbers are merciless and cruel.  As an entrepreneur, I am judged on how much money I have raised or made for my business.

By any objective measure, I have been a failure.  I have been in business for five years and finally have made enough money to finance the business without having to dip into my own personal savings.  I have done part time consulting to keep my software start-up afloat.  In the meantime, I work full time during the day to keep myself in health care and pay my mortgage.  The Silicon Valley dream of having my own company is still a long way off.

My career have been a series of misadventures being laid off and fired from so many technology jobs that I do not even know how to describe it to others.  In that time, I have gained a tremendous amount of wisdom.  I have been forced to reinvent myself six times of the last 25 years.  I have taken these experiences and applied them to how I have led my technology teams.  It seems that those failures and the wisdom I have gained from them have made me a better leaders.  I also think it will help me when success pays me a visit.

There is a saying in the agile world, “Fail early and often.”  I have lived by that virtue my entire life.  I am still obsessed with success but now I have the experience which will prevent me going insane when success decides to visit.  Failure informs success and makes you able to deal with adversity.

So here I am, a failure.  I have governed most of my life but it has not defeated me.  It has made me stronger and more resilient for the success to come.

Until next time.

Monday, February 9, 2015

Learning to Live with the White Whale

My white whale 
I have mentioned the most difficult thing about being a technologist is when you develop a sense of competence about your skills and career something comes along which forces you to start from scratch.  I have had to relearn how to write software four times in the last seventeen years.  My over-all skills have improved but I consider myself an intermediate programmer.  This is because I once thought I had mastered web application development with ASP.NET web forms.  To my surprise, MVC came along and I had to start over unlearning all the techniques from web forms and then using my knowledge in this strange world of MVC.  Slowly, I am learning basic competence in design patterns and test driven development.  This brings me to today’s topic which is my collaboration with Intuit and their Quickbooks Online service.

This began approximately six months ago when I met a potential client who said that they entered the same record into three different systems and then entered it into Quickbooks to invoice the client. I thought it was madness.  After sleeping on it, I decided that E3 systems would prototype a web application which would reduce the number of times they have to enter data and automatically sync with Quickbooks.  I just did not know how to do it.

The web application was the easy part where I stumbled was the communicating with Quickbooks.  A quick search revealed a tremendous source of frustration.  The Intuit Sync Manager was being discontinued and according to chatter on the web it was hard to work with.  This forced me to turn to Intuit Quickbooks API.  I would be pushing JSON and XML to communicate with their API so that it could populate a version of Quickbooks Web service.  This is when I was transformed from a competent web developer to someone behaving like Captain Ahab from Herman Melvil’s “Moby Dick”.

After reading the documentation and struggling with getting the service up and running, I began to follow the directions on how to use the .NET SDK which Intuit was good enough to produce.  It did not work.  Worse when I tried to debug the application I received vague error messages which would not help me solve the problem.  I was so frustrated, I seriously considered hacking off my own leg.  Fortunately, some folks on twitter were listing to me rant and were able to provide direction.  In addition, they were understanding of my frustration and anger with how they designed their systems.

Thanks to the efforts of the Intuit twitter team, including Nimisha and Meg, they were able to talk me off the ledge put down my harpoon and get back to coding.  It was not easy and I was prickly at times but they did the job.  Now, E3 systems and I are developing competence in working with Quickbooks online and the web-api.  This is bonus to our business and to the good folks at Intuit who want to spread the adoption of their cloud based service.  It looked shaky at first but E3 systems is on its way to writing web applications of Intuit.  I still feel a bit like Ahab chasing my white whale but at least I know how to use these newfangled row boats provided by Intuit.  Thanks gang, look forward to working with you more in the future.

Until next time.

Monday, February 2, 2015

Why I am learning TDD.

I am in the middle of a journey.  By day I am the scrum master for agile teams across two continents.  In the evenings, I am attempting to run a business and do development for that business.  It is not easy.  One of the hardest things about my job is that I have to improve my knowledge every 18 months or I will become stagnant.  A technology professional who does not continue to grow and develop, is someone of diminishing value.  This week, I would like to discuss that trend.

A software developer is a profession which is constantly learning and evolving.  When I began working as a software developer; Visual Basic 6 was a popular tool for enterprise applications.  Active X Data Objects were the means to connect to an SQL Server 7 database and ASP classic was just starting to supplant perl script for web development.  Today, all of those technologies are considered obsolete.  If I had not bothered to learn the newer technologies coming over my career I would be out of work today.  I had to learn Entity Framework, MVC, C#, and cascading style sheets otherwise I would be unemployable.

Fortunately, developers and other technology companies have numerous tools to retrain themselves with the new technologies as they come out.  There are educational video services, countless on-line tutorials, and numerous user groups around the United States to help software engineers keep their skills sharp and up to date.  Finally, developers are natural tinkerers and so they spend hours and even days learning to master new skills.

I am talking about this today because over the next few weeks I am going to start working on a project for work and at the same time I am going to attempt to master test driven development.  I know it is not going to be easy but I think with some hard work, I will be able to adequately author tests and help others understand why this is a good approach.  I have been putting off this learning for a long time so I hope it will make me a better scrum master and developer.

Until next time.