Monday, April 19, 2010

Are Software Development Practices Killing Our Creativity?

Let us consider this statement:

All children play.

Without question, I believe that most people would consider the practice of "play" to be a significant and important part of the development of a child.  Play inspires imagination and creativity which brings development of concepts, ideals and beliefs.  Another important aspect of this is the lesson of playing with others and learning the value of sharing.  Let us not forget that it's just good old fun.

Before we continue, let's decide a concrete meaning of "play" in the way I see it.  Yes, we all play games as adults whether it's the dating game or the latest and greatest console game.  However, I would be better to agree that those kind of activities are more inline with process of finding love and enjoying entertainment mediums.  It is not the kind of "play" that inspires creativity, new thoughts and imagination.  For the sake of this blog post, let's define "play" as follows:

Play (noun): A process that inspires imagination and creativity while teaching the value of sharing and collaboration with others.

As we get older the practice of play, as defined above, typically ends as we enter into adolescence and adulthood.  Maybe it morphs into other things, but the concept of a 20-something still playing with G.I. Joe's (sorry fans and collectors) or playing house (in a house of our very own) becomes something that most adults would not want the world to know about them.  Where do we find inspiration for our imagination and creativity as a programmer?

Let us dive into software development. In a consumer based internet, everything is about data sharing, mashing that data into new data streams and sharing that knowledge with others. But developing software there are legal matters that stop us from sharing knowledge. We've all been subject to NDAs (non-disclosure agreements) for a variety of reasons from trade secrets or patented processes.  I'm not advocating that NDAs are not necessary however, it does provide an additional barrier leap over when it comes to developing that killer new feature.

Applying it to software that is widespread and common this stifles the creativity and inspiration drives the development of the next new world changing feature or application.  There are two groups of software which can be divided into:

  • Commodity

  • Specialized

Commodity software are areas where the type of software is widely used in the world across the general public and enterprise.  It would easy lump in things such as operating systems, word processing and web browsers.  Unless you are already a major player in the market, it's very hard to make money on commodity software.  When was the last time you paid for a web browser?

Most software starts off in the specialized software group as proprietary software.  You can only be unique for so long until you get competitors that offer alternative options to your product.  There a variety of factors that make alternate products attractive to decision makers.  It might be cost / licensing, different features or support options.

An alternative may not need to be better to begin winning market share.  Most alternatives compete on price and some what on features.  Suddenly, your product needs feature X and be $1,000 cheaper to remain competitive and continue being "specialized".  As time goes by and alternatives continue to erode your specialized market.

You may have not noticed yet that I have not mentioned whether or not the alternatives are proprietary or open-source.  There may not be an open-source alternative, but in most cases people start asking the question:

Why do I have to pay for this? I could write my own that only does what I need it to. It would be a creative challenge and I would get to use my imagination to solve problem X.

I believe this is how most open-source project start.  Whether it competing against a proprietary product or it's free reign, open-source projects usually start to fill a gap.  I believe it's not filling the "free" gap, but fills the creativity programming gap that is so often overlooked by employers.  In lots of cases, open-source bridges a particular type of software from the "specialized" to "commodity" software group.  Companies that fail to see a bridge being built will only suffer the punishment of seeing their once "specialized" software become a "commodity".

Why is open-source becoming increasingly popular?  I pose this thought:

Open-source is an adult programmer's playground where creativity and imagination can be shared with the rest of the world.

As programmers, I believe that some of us are looking to fill the hole left behind by childhood "play" and open-source offers a new paradise -- a digital playground in code.  Our primary purpose is to have fun; not to make boat loads of money.  Considering this...

Does proprietary software kill our creativity?


The short answer is "yes" when applied to commodity software because the method of participation is restricted by NDAs and the inability to share with others that may have useful contributions.

Like any other sort of fringe activity, you find that people are attracted to it because there's something that it fulfills that their daily life doesn't. - Paul Jennings

You're free to continue this discussion as comments, but I would appreciate it if you keep the flame wars / baits to a minimum.

No comments:

Post a Comment