Tuesday, June 23, 2009

The Revolution

Software Development - Art OR Science?

A seemingly clichéd question. Never passed my mind all these years. But let me tell you how I got thinking about this and maybe it'll interest you a bit.

Like I said earlier, I have been following a lot of Lean-Kanban discussions, articles, etc lately. Some such material is Little's Law & WIP limits. Now the moment I saw an equation, I couldn't resist the temptation of trying out some math to see if the size and composition of my current team is optimal. Furthermore, I thought, given a few specifications of the project like domain complexity and technology, could I find the optimum team size and composition?

I hit two forums with this idea and most of the feedback was that there are too many things to consider and difficult things as well like the skills and experience of the people on the team. And I agree that people make most if not all the difference. But that's the problem isn't it?

What's so special about our people? Skills. Experience. Talent even. It's a sign. It's a sign of our industry being immature. I think its in around the occupation stage on this scale.



Enough demand can trigger the Art - Occupation - Industry - Science transitions for any activity. Note that the transition is never 100%. There's Art and Science in everything. The question is whether something is "more of" art OR science.

People keep arguing that Software Development is different. We are not like construction, we are not like assembly line manufacturing, we are not like Product Development either. I used to believe it till a few days back. But the more I think about it the more I feel that these are arguments of a losing population of craftsmen who are finding it increasingly difficult to meet the demand for their craft (which has BTW risen at unusual rates).

Think about the guy somewhere around current Pakistan who created the first piece of leather clothing many hundred years ago. Think about the leather industry right now. Think about the transition. At some point he must be saying "This is different. This needs skills. This needs experience". It took centuries for the transition but it happened. I am sure it can be co-related to the rise in demand for leather products.

The funny thing is, if you look at the list of general characteristics of the Art and Science sides, the first three points on each side don't really fit in with the IT occupation do they? We have loads of unskilled people sitting around producing amazing amounts of useless code all over the world.

So I think the revolution is inevitable. At some point the people who pays us boatloads of money for bad software are going to revolt. We either have to change OR die.

Here's another article roughly talking about similar things. The author anticipated a code market to emerge where reusable components would be bought and sold (which didn't happen OR hasn't happened yet). But the rest of the content is around the same theme as this post.

8 comments:

  1. Hi Askhay,

    I think you've fallen into the common trap of thinking that creative workers are some how undisciplined in their approach to their work, and that their results aren't repeatable.

    These are both untrue. Good creative people are highly disciplined. Think of a Jazz musician that practices 6 hours a day, going through rigorous exercises, or the dancer that goes through a disciplined warm-up routine prior to each performance.

    They are also highly repeatable and predictable when it comes to delivering a product on schedule and of high quality.

    Think of theatre ensembles that repeatadly produce successful plays and have never missed an opening night.

    I would go further and say that most of the creative professions are far more disciplined and repeatable then the software industry.

    SO the question is why is this? My opinioon (and it is only an opinion), is that they choose to use all their brain, bith the left hemisphere (analytical) and the right hemisphere (holistic, creative). Some things are best understood by standing back and appreciating the whole, in contrast the scientific method encourages us to dissect things into little bit and to understand those bits by themselves.

    In truth we need to do both. When we do we start to develop our intuition and our skills, which are at least equally valuable qualities as our ability to apply logic and reason.

    It would be interesting if you got some one from an artistic/creative profession to create an "art versus science" mind map. I'm sure it would look very different.

    Paul.

    ReplyDelete
  2. Paul,
    I am not under the impression that creative workers are undisciplined. I play (or try to play) some guitar myself. I know what goes into it. But you know what? I don't discipline myself so much because I do it as a hobby. I do it for myself. I don't even need repeatable results.

    All I am saying is that if I sell my (crappy) music and the demand increases for some reason, I will HAVE to get disciplined about it. I will have to get much more scientific than playing guitar for relaxation after a hard day's work.

    I completely agree that most creative workers are much more disciplined. I believe it is because painting, theater, dance, music are all established, mature industries. The whole point of my post is that at some point of time we, as software professionals, HAVE to get to that level of discipline.

    I think the fundamental difference is in what I consider art and what you consider art. The moment you say creative "workers" it ceases to be art in my mind.

    Art for me is the pure form of doing something "just for kicks". Imagine the first person who balanced rocks OR the first person to arranged flowers. They weren't trying to sell anything. They did it for fun / pleasure.

    Even when they start selling it, I am absolutely not denying the fact that there is a huge creative element to it.

    I am just saying that history shows us that with enough demand any activity ceases to be pure art and HAS to get increasingly scientific in its processes to meet that demand. We cannot hide behind creative excuses forever. We will have to get our act together soon enough.

    ReplyDelete
  3. Hi Askhay,

    Thanks for clarifying. How we choose to use language is very interesting. I agree, that when you choose to charge people for a product or service that the quality needs to be high and delivery needs to be assured.

    This is true whether what you do is primarily artistic (music, flowers etc) or industrial (manufacturing).

    Also I would say that a lot of pure science was propelled by the desire to have fun too. I don't think Faraday was driven by the desire to utilise electricity in industry. He researched merely out of curiosity and fun.

    I disagree with your summary of history. The drive for lower prices (and hence higher demand) is what drove industrialisation. The demand was always there, but the cost was way beyond the means of the masses.

    But even today, the most desirable products are still handcrafted to the specific needs of an individual. Rolls Royce still choose to use hand finishing in its manufacturing process, but this level of craftmanship and artistry comes at a price and is only available to the few.


    I would suggest reading Artful Making:

    http://www.amazon.com/Artful-Making-Managers-Financial-Prentice/dp/0130086959

    It takes a close look at industrial history and comes to a very different conclusion.

    Regards,

    Paul.

    ReplyDelete
  4. Hi Akshay,

    Let me be clear about what I am saying. Most of industrialisation has been about "labour saving" as a means of reducing costs. This as largely been achieved by replacing people with machines.

    As we move forward we are moving from a maunfacturing based to a knowledge based economy. The substance of our products are know knowledge not material. We can no longer rely on mass production and scientific management as the sole means of reducing cost.

    In such an economy, artful making becomes more important as used in many industries such as fashion, theatre, film etc.

    In software, manufacturing is cheap, the cost of replicating bytes and transmitting them over the internet, or the cost of copying a CD. Where the real opportunity for cost reduction lies is in "new product development". If we insist on focusing solely on industrial techniques in an attempt to reduce new product development costs then we will continue to attempt to turn people in to machines and we will also stifle innovation.

    Like someone said on Kanbandev. You will need to find optimal people to fit your optimal "industrial" process :)

    Regards,

    Paul.

    ReplyDelete
  5. Hi Paul,
    Thanks for the comments. I agree with most of what you said but I'd like to discuss this one point a bit more.

    Knowledge Work / Industry
    My understanding of a knowledge industry is producing / gathering, assimilating and selling knowledge. Such a sale is inherently tied to the seller's knowledge and experience and skills.
    So in my view consulting on business strategies, which software to buy, which car to buy, which market to target for the next product are all forms of knowledge industry.
    But the process of developing software is not knowledge work.

    The argument is that replicating bits is much easier than replicating atoms and hence there is a difference in the product that comes out. There is no concept of "Mass Production" here because you can make as many copies as you want in an instant. It's more comparable to a product development process. So the software industry right now, it is much like your Rolls Royce example. Expensive, custom products (except the packaged ones of course). Firstly, this is not sustainable because even our packaged solutions and custom software put together is not able to satisfy the demands on our industry.

    Secondly, even if our custom software did satisfy the customer 100% I don't think we are even close to the level of sophistication in terms of process when compared to Rolls Royce delivering a custom car. All I am saying is that we will need to get to that level. Besides, do you believe that all the people involved in producing a custom car for Rolls Royce are skilled, experienced, artists? I am sure they are not. I am sure a large part of that process is made of completely mundane, repeatable activities that are probably not performed by humans... not in the least by skilled, experienced artists.

    So to get to the level of sophistication, where we can deliver the next "custom" shopping cart in a day @ $100 dollars instead of taking 6 months and charging a million, we will need to get increasingly scientific and disciplined in our approach.

    Another interesting point that comes up is the level of customization offered. Rolls Royce doesn't let you specify absolutely everything. Most of the things are "standard" and then there is room for personalization. Custom software development on the other hand allows unlimited customization. Another thing that should happen on the way is that we should find good standard solutions to be mixed and matched with custom ones. This is already happening but there are too many "standards" right now. (I am talking in terms of libraries, APIs, services to use for doing the same thing, Eg. logging) which sort of defeats the whole purpose.

    I knew I should have done this post in parts. Each of our comments is a post by itself. Thanks for playing along.

    Akshay Dhavle

    ReplyDelete
  6. I appreciate the labor you have put in developing this blog. Nice and informative.

    ReplyDelete
  7. I am glad you find it interesting Mack. Thanks a lot.

    ReplyDelete