Sunday, January 23, 2005

Hi All,

My first blog. Not sure what this is going to mean to me. My first thought is that this is a nice way to express my feelings and ideas. You know, kind of like a diary - personal. So I apologies for not providing lots of information about me.

Perhaps in time I'll get use to the idea of sharing my life with a load of people I've never met. I guess at that time I'll say more about myself, but for now, I am a graduate with 15 years software development experience behind me.

In that 15 years I've been everything from a junior programmer, to a line manager. Currently I'm contracting as a Java developer in the J2EE market.

In my time I've often been frustrated at the inefficiencies present in most large organizations. I have found it difficult living with the ineffective way that companies exploit technology, very often providing little value to the business and impoverishing the lives of developers. It was these frustrations that lead me to contracting.

The contractors motto is "keep quite do what your told, and count the money". But does this approach really pay? Perhaps you can do it for a few years grab the money and run (my dream is to run a bar on a beach somewhere in the Caribbean), but is this approach a long term alternative? I think not!

That is why I named this blog "Making programming pay". I am using the term pay in its' broadest sense. What I really mean is finding fulfillment in creating software. Finding value and purpose in your work. I have a friend who is an housing officer, and to hear her talk about the value she adds to her clients lives and their appreciation and the fulfillment she gets from her working day - just serves to remind me of how un-rewarding programming can be, especially for the experienced programmer who has spent more then his fare share of time in the trenches.

I have tried several approaches to making my work more rewarding. For me, working for myself offers the greatest opportunity for rewards. As a contractor I have just come through lean times, what with the burst of the internet bubble and the looming menace of Bangalore - at times I thought my career as a programmer was up. In adversity I decided to launched my own software development business. Ultimately this failed, hence my return to contracting, but the experience taught me a lot.

Everyone is beginning to wake up to what experienced programmers have known for ages. Software development is about people. The Agile movement , in particular SCRUM stresses the importance of allowing good people to do what they do best, namely get on an produce code the best way they see fit.

In this movement I see the opportunity for good developers to finally get paid. Small highly skilled, self-organised teams with the freedom to do what they know will work. There is clear evidence that the offshore experiment has failed, I think Agile is the next thing the industry will turn to in an attempt to reduce costs and improve value.

I also believe that Agile practices and values can create the type of working environment, where most programmers would feel fulfilled and valued. Work that pays. The type of working environment that didn't make me feel embarrassed when I hear other proffesionals talk about their working lives.

I don't see traditional organisations responding quickly to the opportunity Agile values and thinking provides - instead I hope that small independent "7 plus or minus 2 sized" software businesses will emerge to meet the demand. Due to the high communication bandwidth needed for agility - these businesses will need to work very closely with their clients, possibly embedding themselves within the client organization. And I don't mean consultancies like Thoughtworks that allow themselves to grow to a size where they end up as political as the traditional consultancies they hope to replace.

Another model is small software businesses producing off the shelf software. Such software could be leased/sold over the internet or sold in a more traditional fashion. Such companies could target vertical markets delivering value to small and medium sized clients who cannot afford bespoke software, or the general public. In fact I have ideas for a couple of products that fit this model. I will develop this theme in future blogs.

Akin to improving the way software is developed, I also believe that there is a culture change required to improve the way software is envisioned and commissioned. Again SCRUM offers a "human scaled" model for envisioning how to add value to an organisation through software development over time. SCRUM advocates small teams working on independent projects and sharing stable components where possible. Shared stable infrastruture is mined button up, through constant refactoring, and application teams constantly communicating.

I have seen ambitious "enterprise scale" projects fail due to this lack of human scaled vision. How many business analysts or Systems architects are willing to say, that they do not know what the entire enterprise wide architecture should be? But the reality is that they don't know, and if they do invest the time and money trying to find out, buy the time they are finished their enterprise wide blue print is out of date and life as moved on. So much for top down SOA. How many organisations are courageous enough to stop the "big" project juggernaut once its' gained momentum? Better still, how many organisations are wise enough to avoid the "big" project all togetner and to adapt and grow systems bottom up? I will blog more on this subject in the future too. Needless to say that better project vision and scope would add tremendously to the quality of programmers lives.

I will end for now other than to say that if there are other like minded contractors out there wanting to get paid in the full sense of the word, please comment with your views.

Regards all,

Paul.