#Innovation Debt and the Four Fences of Software Development

I was looking for a new picture for the Blog and I thought about an interesting Blog post. As you can see now, I chose the image of a gate after much searching on various image search engines. (let me tell you there are some very interesting people out there with cameras.) đŸ™‚

Gates and Fences

I chose a gate as I think it is a very interesting analogy that can be used in the Software Development industry. In the Agile community we are so focused on tearing down fences that we have to be careful we don’t use the remnants of the Waterfall Fence to build the Agile Methodology fence. I loved the analogy of a gate in conjunction with the fences. We need to ensure that every fence we build also has at least one gate. The fences exist for the purpose of providing structure and restrictions for predictability, but there always needs to at least one way to break free when the situation calls for it.  (hopefully multiple gates)

I thought of 4 separate fences that are quite common in the Software Development industry. They are:

1. Process Fence : Gate leads to greater value

I’ve alluded to this fence already. As I have mentioned, we in the Agile space need to be extremely careful that we don’t construct an Agile fence out of the broken boards of the Waterfall fence. If we start being equally as stringent and demanding, we are equally doomed to failure. Don’t get me wrong, I think the Agile practices are a great fit for the vast majority of projects and an improved over the Waterfall methodology. But we need to be careful that we don’t start to be overly prescriptive and cookie-cutter. It would be incorrect to say all Software Development projects require pair-programming, two-week iterations, and daily stand ups. Just like it was incorrect to say all Software Development Projects required Functional Specifications, Work Breakdown Structures, and Use Cases. Do these Agile practices fit better than Waterfall practices? Usually. But the team still needs to determine what practices best apply and to what extent.

Sometimes you have to open the gate and incorporate all the different practices that deliver the most value to your client. It is likely that these practices will be from many different methodologies. Can an Agile project benefit from a Work Breakdown Structure? It is possible.

2. Technology/Vendor Fence : Gate leads to better solutions

A second fence we can find ourselves in is this Technology or Vendor fence. This is the fence that we typically build around the technology we use and the vendor for that technology. We typically built these fences for very good reasons. Simply put we are more familiar with the technology we use the most and we there just isn’t enough time to learn all of the technologies that are out there. There are just simply too many. So what can we do?

I think similar to the Agile principle about trying one new thing every iteration, Software Development technical professionals should try one new technology every project. (preferably from different vendors) If the project doesn’t allow for this, then we should as Software Development professionals commit to reading one new book and playing with one new technology in our own time for every new project.

If we don’t do this continuous learning and strive to open the gate in the technology fence, how do we know we are providing the client the best solution? Of course we can’t know all technologies, but isn’t it our professional responsibility to know more than one group of them?

3. People/Employer : Gate leads to enhanced knowledge and competencies

The third fence is the people or employer fence. This fence is very similar to the last fence except that it deals with people instead of technology. It is very natural to again build a natural affinity to the people we primarily work with. But it is also important to realize that one company can’t be perfect in everything. (just like one person can’t be the best at everything) We all have our strengths and weaknesses both individually and corporate-wide.

Some of the most valuable lessons learned I have had over the years has been when I have worked with people from other companies and they have shared with me their practices and methods. Now those of us who have worked for a company for a longer duration obviously believe our company has more strengths than weaknesses. (I know this is something I believe 100% about Protegra.)

That said, I look forward to being able to work with new Protegrans and with new partners and clients because I know I am going to learn new things and be the better for it. Opening the gate in the People and Employee fence is one of the most rewarding.

4. Experience/Safety : Gate leads to innovation

The fourth fence is one we build ourselves and it is something I’ve noticed more in myself as I’ve gained experience. I think sometimes when we have gathered more experience, it is easier to just do what we have done before. Developing using a known process, technology or team is the safe route and something we feel more comfortable with. The decision between introducing new items and doing what has been done before is a fine line as we can’t take on too many new things and risk the project, but if we don’t take on any new items we are building what I like to term Innovation Debt.

Like Technical Debt, it is sitting there and charging interest. Innovation Debt will also needs to be paid sooner or later and it is better to pay it off bit by bit on projects rather that having a large payment at the end. The real problem is that too much Innovation Debt can result in a compromised company that is passed by their competitors. Too much innovation on projects can result in compromised projects. It is a very fine line to walk.

But not opening the Experience gate is actually more damaging that opening it. It is just a little unnerving at first and requires an atmosphere at work that encourages innovation and rewards fast failure.

Summary

Those are the four fences and gates that I try to keep in mind as I go about my projects. Does anyone know of any more?

Seek to Understand, Strive to Educate, Commit to objectivity

This post has been percolating for some time in the political and journalistic realms. Very recently it has also found a home in Software Development. But let us start at the beginning.

I love the opinion and editorial section of any paper. I love reading people’s opinions about items in the news. I also find the editorial section extremely enlightening in regards to current events. That is until the last few years. It seems over the last few years, it has been very hard to find a balanced opinion article in the paper. The articles are bordering almost on propaganda. And it isn’t just either the left-wing or right-wing articles. The unbalanced articles are across the board. It seems all the articles are no longer trying to educate or inform, merely convince.

As a Canadian, I am interested in politics in a moderate way. I don’t align myself to any one party and feel that there are parts of every party that I agree with. I am constantly disappointed with political articles, editorials, and opinions that don’t provide a balanced viewpoint. Usually the point of the article is to convince the reader through fear, uncertainty, doubt, and junk science. By reading the articles around the recent Canadian election I would have thought that the leaders of the major political parties were inherently evil, naive, or simple. Of course, none of this is true.

“Education is providing balanced information on the entire issue, propaganda is providing information on only one side of an issue.”

I believe that if a person is 100% aligned with a concept, group, or ideology, he or she has probably stopped being objective.

So what does this has to do with Software Development?

First off, I’d like to provide full disclosure. I am neither a devoted fan to either Microsoft or Apple. My technical assets are:

  • Imac and Mac mini at home
  • Dell laptop at work
  • Blackberry Phone
  • Ipod music device (Classic black if you must know)
  • Nintendo Wii Game System

It seems that Software Development has recently fallen victim to the same hyperbole that has befallen politics and journalism. Many tweets I hear and articles I read seems to imply too quickly and frequently that the specific technology is a ‘game-changer’. Those types of technology happen very infrequently. I shudder every time there is a Microsoft, Apple, or other large technology announcement is made. I know there is going to be a plethora of tweets stating how Windows 8, OSX Lion, or Google+ is going to rule the world and be a game-changer. Even methodology discussions are victim to this behaviour with the demonizing of Waterfall and the praising of all things Agile. (without acknowledgement that there are situations that each excel at)

But more it seems that people are becoming 100% aligned with products and vendors. Can they really be considered objective? Shouldn’t there be some products from preferred vendors that they don’t like? Am I the only one that thinks Google+ is mainly Facebook+Skype+new cool user interface for groups? đŸ™‚

Truth is that I would love to read more balanced articles that seek to understand these technologies, strive to educate me on these technology options (good and bad), and then commit to provide a balanced objective critique.

I know I myself have provided these somewhat one side articles in the past, but  am going to try to focus on providing more balanced articles going forward. You may not agree with my conclusions, but at least I will try to paint the picture in a balanced way that lets you decide for yourselves. Sometimes I may like Microsoft, sometime Open source, sometime Apple, sometimes COBOL….