Archive for January, 2010

A Fan Letter to Redline Smalltalk …

Saturday, January 30th, 2010

crowd

I was inspired by this post by Kent Beck to write a fan letter to Redline Smalltalk, written in the voice of a deliriously satisfied user. This is an excellent way of articulating a vision.

Dear Redline Smalltalk,

I have been using Redline Smalltalk at work and in personal projects for a while now and I just had to let you know what a joy it is to use and how productive I am with it.

My work situation means I have to work on the Java Virtual Machine and I have been looking at alternatives to Java so I could be as productive as possible and stay away from those little Java annoyances and hurdles that slow me down. Having a background in Smalltalk I jumped at the chance to put your Redline Smalltalk through its paces and I have to say I couldn’t tell the difference between your Smalltalk and the others, in fact I think yours was a little faster.

At home I like to use IntelliJ and your plug-in support in the IDE is brilliant, the mix of old style Smalltalk-80 browser, refactoring and file based support is smooth and complete and just what I needed, especially the source level debugging and profiling which I could not live without.  At work we use Eclipse and I can’t tell the difference between the plug-ins so now I’m getting a few other developers to try it, and I think I made some converts.

One developer at work, Steve, keeps banging on about how Ruby On Rails is this and how Ruby On Rails is that, how we need rspec, gem, rake, and how awesome it is to script things and try stuff out with irb. You should have seen his jaw drop when I showed him how I can do all that in Redline and how quickly I could create, test and deploy my Seaside Web App and then push changes to different environments with a simple commit, even while they were running. You really did think of everything to make things complete and integrated with Smalltalk everywhere.

I wondered what you could add in the next release and I just can’t think of anything but if I do, Ill be sure to let you know.

Thanks for a wonderful product that has really changed the way I work and made it fun again.

Regards,

John Q. Geek.

Disenfranchised with Software Craftsmanship?

Sunday, January 24th, 2010

goodandbad

I consider myself to be a software craftsman as I strive to deliver software that fulfills its purpose, is easy for others to understand and maintain, and is supported by tests but being a craftsman is not required to be successful as a software developer so should you care about being a craftsman?

For a while I have been becoming a little disenfranchised with the notion of software craftsmanship because around me there are some products that make it to market and are successful, even popular, and yet under the covers the code is in my opinion (and probably in the opinion of craftsman) very bad. I have been disenfranchised because around me there are some developers that “appear” to not know or possibly not care about code that is easy for others to understand or maintain or supported by tests, yet they are hired and paid roughly the same as me. Certainly the “gap” between developer and craftsman in pay is negligible. I have been disenfranchised because the majority of companies creating software that I have worked with “appear” solely focused on getting the product out regardless of the underlying implementation, even if the current implementation and practices slow that delivery down, or effect the quality of the resulting product and the cost of maintaining it.

Getting the product out to the customers is a number one priority and I certainly agree with that, I would not change this priority as that isn’t realistic. This reality is why I choose to do things using Agile XP practices. My conundrum about software craftsmanship is not about a Utopian ideal or a desire to stop the world while I make everything shinny and perfect.  I don’t think I am alone in wondering about this situation. My conundrum is both of a personal and a professional nature. Personal in that I wonder if I should I care about learning and improving my skills and professional in that I wonder if I should say or do anything to instill craftsmanship on the projects I am on, especially when craftsmanship isn’t a necessity for success.

The answer or the path to it is intent. What is my intent in wanting craftsmanship? On one level wanting craftsmanship is selfish because I want to work with code that is well crafted and because I have worked hard to be able to produce well crafted code and I want you to do the same. On another level I would like to help others understand what makes well crafted code and the benefits that come from it. While this is still selfish the outcome can benefit more than just me. When working on a project my intent with craftsmanship is to create the most value possible.

I really like to write code and I will always look to improve my skills, it’s a passion that hasn’t wavered for the last 25 years.  When on a project I will be a craftsman and when the needs of the project demand deviation from craftsman like practices then I will put out a quick hack with a clear conscience.  Should I say anything when I see code that could use a little craftsmanship? This depends on what the team consensus is about its practices and if craftsmanship is aligned with the customer’s expectations, after all the Customer and delivery must come first.