Saturday, April 18, 2009

Bridging the gap

This subject is somewhat related to an earlier post on prior context, but I like the metaphor, so here goes.

I am currently involved in an effort to get a team of young, eager developers to migrate to a new, object oriented technology stack. This exercise will be fraught with difficulties, apart from the obvious paradigm change (procedural to objects), there is also a new language and a 'better-practices' oriented way of working. My focus is really on encouraging learning from sources that I know and trust, in terms of books, blogs and pair programming with experienced folk who have already been there. In many respects I am fortunate to be working with enthusiastic people who want to change, but on the other hand, it really is mammoth task that I cannot do for them - they must find a way to do it for themselves with the support of others.

A while back I was trying to explain something and used the metaphor of a bridge, because helping people learn new things is never as simple as it seems, it is loaded with prior context, some good, some less so. It is impossible to bridge a large gap without building supports periodically along the way. Mentoring/teaching someone with a large gap in their knowledge of the history of computer science assumes very high expectations on the student and is also unfair. Recently I have realized that not only is it unfair, but it too is impossible. I find myself wanting to skip much of the knowledge I have gained over the years - to go straight from A-Z with these students, but I cannot. The span is too large. BTW - A-Z does not assume there is a specific endpoint or that I have reached one, I am merely referring to a learning process of 'just starting out' to 'knowing something useful'.

In my case, I learned a lot in the 90's with the whole OO boom including methodologies, notations and a bunch of other stuff, most of which I don't even think about now. That learning has helped me to understand how I do what I do now and without this, I don't think I could have bridged the gap personally. I guess my point is, without much of my earlier learning which provided my supports for the future, I don't how easy it would have been for me to bridge the knowledge gap.

Many good people in this business have taught many great ideas and some of the best are buried away in history, waiting to be rediscovered. For anyone serious about software, ignoring the past is perilous.

Saturday, April 11, 2009

Flex/AS Unit Tests

There is something I like about Rich Internet Application technologies. Although I have not looked at Silverlight yet, I find Flex quite appealing. Think it has something to do with nostalgia, taking me back to the good old days of rich client development. Having 'played around' with Flex to discover its capabilities, I now want to take it to the next stage and see if I could build something of production quality. It's clearly obvious this is possible from the applications beginning to emerge on the scene, but I have not yet seen a nice simple way of unit testing with Flex.

In particular, I am looking for the simplest way to mock or stub tests so that units can be isolated. I have been reading around a number of blogs and articles to see if there is a simple tried and trusted way of doing mocks, as with easymock or jmock in java land. Actionscript does not have dynamic proxy features of java which would permit runtime implementation of interfaces, so the current offerings out there look a little cumbersome.

Vaguely recalling that Ruby had a nice clean way of achieving this, I was wondering if a similar concept could be used for Actionscript, since it is also a dynamic language? Will do some more research.

Anyone out there have any ideas or experience on this subject?

Friday, April 10, 2009

Going Backwards?

I am starting to question why are we so backwards in our profession. Don't misunderstand me, I am way too humble to ever assume my own skills should be held in high regard, in fact just the opposite, I have much to learn. For me, I guess I feel my only defense is that at least I realize it and I am more than willing to learn how to improve!

Software development is very much a profession in its infancy, and I am watching the software craftsmanship threads with interest and like what I hear, but alas I fear the masses start to pick up on it as the latest buzzword and screw that up as well. At least the name isn't as downright tempting to misconstrue as agility. Thing is, while the profession is extremely immature, there are plenty of good ideas out there for solving the majority of business problems that most software projects could be categorized within. Excluding most NASA missions that involve anything other than ordering out for a Big Mac, Google's search optimization or how to scale Facebook, most projects still involve simple CRUD with a few business rules thrown in. So why does it seem so hard to get anything done?

My own viewpoint centers on the fact that merely doing mundane stuff well is not thrilling to many developers, who want to use the latest REST based cloud buses (BTW - in case anyone is thinking of using this as the latest hot idea, it's really only my sarcasm shining through - so DON'T).

Oh for the day when the headlines of technology magazines can shout with joy - 'Developers deliver project with good code' - which seems to me to be far too great a challenge for the majority of organizations out there.