July 12, 2010

Object Oriented Design Master Class, London Aug 21-22

 

This summer's run of budget-friendly weekend master classes in software craftsmanship ends with a workshop on object oriented design on August 21-22.


In this very hands-on course, you'll learn about OO design principles (S.O.L.I.D. and more), using real code examples to illustrate how to refactor designs that violate these principles. You'll also get practical experience of using code analysis tools to measure OO design quality and detect problems more easily, even in large code bases. The workshop will also give you a chance to apply simple OO analysis and design techniques in a test-driven approach to development, as we as looking at how up-front design can be balanced with refactoring to produce optimal designs without falling into the shark-infested waters of "Big Design Up-Front" and "no conscious design at all".


As with all the workshops I'm running this summer, there'll be the minimum of talk from me and the maximum of hands-on practical experience and learning by doing, working in pairs with other attendees.


And - as if the price wasn't good enough already - everyone who attends both the TDD and refactoring courses will get to go on this one absolutely FREE. I must be mad! Book your place now before I change my mind!



June 1, 2010

Budget-Friendly Weekend Masterclasses in TDD, Refactoring and OO Design for Summer 2010

 

Times are hard.

They're especially tough for freelancers at the moment. Those of us lucky enough to be working can ill afford to buy expensive training, let alone take off time to attend courses.

But at the same time, compeition for work is heating up, and we need to work harder than ever to keep up our knowledge and skills.

So it's no surprise that a trend's emerging for budget-priced training delivered out of office hours.

Over the last decade, I've run premium masterclasses in Test-driven Development, Refactoring, OO design and UML. And this summer, I'll be delivering the same workshops - all very hands-on, practical and based on two decades of real-world experience - at budget-friendly prices and on weekends, so they can easily fit around your day job. The first course is likely to be a TDD masterclass in early July. It'll cost just £199 for 2 packed days, delivered in a purpose-built IT training facility just a brisk riverside stroll from the City and West End.

So if you can make it to London one weekend, and fancy grabbing yourself a bargain, drop me an email and I'll let you know as soon as dates are confirmed.



February 15, 2010

Wheel-driven Reinvention

 

One aspect of software development which is at once both amusing and troubling is the ability of us young whippersnappers to completely ignore what's gone before and reinvent established wisdom in our own image - often stealing the credit.

Take testing as an example. What do we know about testing software today that we didn't know, say, thirty years ago? Sure, we have new tools and testing has to fit within new approaches to the process of writing software as a whole, but fundamentally what have we discovered in the last decade or so?

Testing behaviour still works, by necessity, much as it has always worked by necessity. We must put the system under test in some desired initial state, then we must provide some stimulus to the system to trigger the behaviour we wish to test, then we must make observations about the final state of the system or about any behaviours that should have been invoked (e.g., a remote procedure call or a database request) in response to the combination of our stimulus and the initial conditions. And this process must be repeatable and predictable, like any good scientific test.

Though the culture of testing software may have evolved, much of it for the better, and the technology may have improved (though that is questionable), and though there are undoubtedly more people testing their systems today, when it comes to the business of writing and executing tests, there's really nothing new under the sun.

The same is true of many aspects of contemporary software development. Like it or nay, iterative and incremental development is older than C. We just weren't doing it back then, in the main.

Indeed, pick any "new" aspect of development and trace it back to its roots, and we discover that most novelties are actually much older than many of us thought. Objects are an invention from the sixties. Use cases hail from the seventies. Responsibility-driven design was being practiced before Frankie told us to Relax. UML existed in a fragmentary form before the Berlin Wall came down. People were writing code to satisfy tests back when those tests were stored on magnetic tape. Indeed, some of the descriptions of programming that was done for the very first computers rings bells with those of us who practice that black art today.

Younger developers like me, though, seem to readily believe that our time around is the first time around and feel no compunction to educate ourselves about the achievements of "old-timers", preferring instead to invent things anew - with sexier names and shinier tools, admittedly.

Our desire to reinvent goes as far as redefining words that already have a well-established definition. "Agile" no longer means "nimble" , "quick" or "spry". Today it apparantly means "communication, feedback, simplicity and courage". Or "iterative and incremental". Or "evolutionary". Or "Scrum-Certified". I caught someone the other day proferring their definition of "testable", which apparantly now requires us to go through "public interfaces". This is bad news for many scientists, who must now rewrite their peer-reviewed papers to incorporate the appropriate programming language with which to express the "testability" of their theories.

If software development was physics, we might expect newcomers to work through and understand the current body of knowledge before they start adding to it. That way, at the very least, we could avoid a great deal of duplication of effort. We may also avoid the tendency of our industry to throw "old-timers" on the scrapheap just because, even though they are probably just as current in their practical ability to deliver working software, they're not "down with the kids" on all the latest street slang for concepts that have been kicking around the block for decades.

The thinking of our elders and betters is far from irrelevent and outmoded. We can still learn a thing or two from the likes of Jacobson, Knuth and Hoare, should we choose to reject fashion in favour of substance in the approach we take to our work.

June 21, 2009

Free Pencil & Paper UML Trial Edition

 

When people ask me what my favourite UML modeling tool is, I tell them that pencil and paper is the one to beat (or marker and whiteboard, if you need team modeling capabilities).

It's possibly a sign of our times that many software developers have not heard about "pencil and paper" before, and the follow-up question is usually "where can I get a demo version of that?"

So as a service to all your pencil and paper novices out there, parlezuml.com is giving you 10 blank sheets of special UML modeling paper which you can use to evaluate the tool today.




December 22, 2008

OCL is a dead language. Universities: stop wasting time teaching it.

 

A sure sign that academia and industry are out of step in the software industry is the sordid tale of the Object Constraint Language.

OCL is a declaritive language that complements the core Unified Modeling Language, allowing us to extend our models with precise expressions (e.g., formulas) and constraints (i.e., rules). Using OCL, it's possible to create precise, testable specifications with UML. It's also possible to turn those precise models into executable code, if you're feeling especially adventerous.

It is also only very, very rarely used outside of academic institutions. I can think of two occasions in the last 10 years when I have been called upon to use OCL on a real project by someone else who uses OCL. And the people in question were only one degree of separation from the chap who invented OCL in the first place, so those occasions were probably a statistical aberration - a symptom of the company I keep.

But every month several hundred people download my Java OCL tutorial. And the web stats show very clearly that they are almost all doing so from behind University firewalls.

OCL, to me, is the Latin of specification languages. The only people who speak it are people who teach it, on the whole. Out here in the real world, OCL is a dead language. You may recognise its influence in the development of some Java libraries (again, written by academics who teach OCL), but you'll be very hard-pushed to find a Java programmer working on commercial prjects who has maybe even heard of the language.

It's with some regret, then, that I seem to have become something of an international authority on OCL, since there is absolutely no demand for OCL training and coaching whatsoever here in the UK.

I do get academics approaching me for help with OCL-based projects. But why are they still flogging this particular dead horse? It's certainly not going to do their students any good to learn OCL.

If you don;t believe me, search on the big IT job sites for "OCL" or "object constraint language". Nada. Nil points, as they say. There's no demand for it at all. Not a sausage. Time spent learning OCL today is time wasted. That time could be spent practicing writing better unit tests, or learning to automate acceptance tests with FitNesse, Watir or Cucumber. employers are falling over each other for those kinds of skills.

OCL, though, has gone to meet its maker. Its pushing up the daisies. It is an ex-language.



November 10, 2008

SPA 2009 - Scalable .NET Code Reviews

 

So the results are in and - NEWSFLASH - it looks like my session proposal on scaling up code reviews using automated analysis has been accepted for Software Practice Advancement 2009.

What with that, the Software Craftsmanship conference I'm launching, and my annual electro-shock therapy, the first quarter of 2009 could be pretty busy for one Senor Gormando.

Another scoop is that the SPA venue is changing. Originally they were going to hold it in some remote, isolated hell-hole on the Cambridgeshire-Northamptonshire border. I can't remember the exact name of the place, but I seem to recall Skeletor lived there for a while. Anyway, the new venue is going to be what some would say is the spiritual home of the SPA conference, namely the BCS building in Covent Garden, London.

This is geat news for folks who live in or around London, because the registration fee no longer has the considerable burden of accomodation to shoulder, making participation more financially attractive this year. It's not so good news if you live on the Cambridgeshire-Northamptonshire border, but if you do then there's a very good chance that you're Skeletor or one of his minions, in which case you're probably not welcome this year. (Unless, that is, you're presenting a session called "Universal Domination in Ruby", of course...)

If you're coming to SPA (which will be in early April) and are a .NET bod who might want to attend my session, then you'll probably need to bring a laptop and it'll need Visual Studio 2005 or later installed for the practical stuff. We'll be using NDepend (yeah, I know - big surprise) to do the actual code analysis, and if you haven't already installed and fiddled with it before the session, I'll be making a trial version available on disk that installs in the same time that it takes to unzip the files to you hard drive (literally, that's the installation procedure.)

My second session proposal, for a panel debate called The Agile Delusion, was cruelly overlooked again by the selection committee (the fools! Dont they knows genius when they sees it?) But the relocation of the conference to central London opens up the tantelising possibility of running it in a nearby hostelry as a sort of "Off Broadway" event one evening during the 3-day conference. Watch this space.



October 28, 2008

Software Craftsmanship 2009 - Conference In Development

 

First the good news.

I'm in the process of launching a new conference here in sunny old London Town (or "Larndarn Tarn", if you happen to have been born here).

I can't give away too much just yet, because:

a. There's not that much to give away, and
2. There's many a slip twixt cup and lip, and there's always the danger of these things falling through

But I can tell you that the working title for the conference is Software Craftsmanship 2009.

And I can tell you that the focus is going to be on the "hard skills" that take years to master. You know, the actual craft of writing good software. OO design, test-driven development, refactoring, build automation, architecture, patterns, code generation, modeling, concurrent and distributed programming. That sort of thing. Certainly there won't be any sessions about yet more things you can do with coloured bits of card and lego. Well, not unless anyone's discovered a way to generate working code from them.

I can also tell you that we have a provisional date and a provisionally booked venue. The provisional date is February 26th 2009. I'm not going to reveal the venue just yet, though. But it will be in London, rest assured.

Finally, I can tell you that the program selection committe is already starting to shape up very nicely indeed. And the invites are still going out, so we're looking forward to a very healthy pool of world-class expertise to help pick the final schedule.

Keep your eyes peeled for more information posted on this blog, or join my Yahoo! group for announcements.

An informal request for session proposals will be going out in about a week's time. Email me if you'd like to be included in this mailing.


October 24, 2008

Example Agile Quality Assurance Strategy

 

For the morbidly curious among you, here's a link to a (suitably anonymised) quality assurance strategy for what some might describe as an "Agile project" team.

There's much emphasis on defect prevention and "left-shifting" (the practice of moving testing further upstream in the design and development process), as well as on automation and the economy of scale that can be achieved.

There are metrics. Don't be afraid. They're only baby metrics, and haven't learned how to bite yet.

There's also some process guidance and a bt of innovation for incorporating non-functional quality requirements into a lightweight, iterative and - most importantly - test-driven development approach.



September 22, 2008

Small World

 

I was walking back along Charing Cross Road in London yesterday afternoon from a lazy Sunday lunch, when who should I bump into?

Only bloody Scott Ambler! Yes, that Scott Ambler, who lives in Canada.

That particular area - near Cambridge Circus - is a hotspot for such bizarre coincidences, as it happens.

A few weeks back I walked away from some potentially very lucrative work because I genuinely felt it was the right thing to do professionally and ethically. And I sat outside a pub called The Spice of Life - the Ground Zero for coincidences - and agonized over whether I'd done the right thing. I know so many people who would have advised me to just smile and take the money. Was I being too precious about my work? I looked for a sign. And at that exact moment, film director Terry Gilliam walked right by me. He would have walked away if he felt it wasn't right, I thought to myself. I don't usually pester celebrities (I mean REAL celebtrities, not just people who've dropped their trousers on live TV), but I just had to run up and shake his hand. Partly for showing up at exactly the right moment. Mostly because he's Terry ****ing Gilliam.

And a few weeks before that I'd organised a party to screen the series finale of Dr Who at a venue not far away. I invited, among others, the 6th Doctor, Sylvester McCoy. Due to a monumental cock-up on my part, his tickets didn't reach him until the monday after the party. He very kindly called my mobile and left a message explaining that he wasn't really a time traveller and would therefore be unable to attend.

I was relaying this anecdote to a friend visiting from Paris on business sitting in - yes, you've guessed it, The Spice of Life recently. We left the pub to go find somewhere to eat, and who should we bump into crossing the road outside? Sylvester McCoy! Ask Dave Chaplin if you don't believe me.

Another person I invited to the finale party was the gorgeous Nicola Bryant, who played a very critical role in my teenage development.

Her guest was going to be Toby Hadoke, who writes and performs a stand-up routine called Moths Ate My Dr Who Scarf. They couldn't make it in the end, due to a last minute job offer that meant Nicola had to stay home and learn her lines.

One guest who did make it was new series writer Rob Shearman. And who should I bump into one afternoon having lunch in The Spice of Life? Yep. Rob Shearman. Who was he having lunch with? Yes, again. Toby Hadoke.

And those are just the most recent examples of weird coincidences in "The Charing Cross Triangle" (technically, it's a square, but you get my drift.)

So I've gotten used to it. But seeing Scott striding up Charing Cross Road yesterday still managed to throw me. The guy was a loooooong way from home.

And I'd just been out buying books on FIT (really gotta get into that stuff now, think.) Scott's books were right there, too, on the same shelves. How close did I come to bumping into Scott Ambler with one of his books in my shopping bag? I think that would have made my head explode...



September 2, 2008

Last Call for SPA 2009 Submissions

 



Just a quick note for all you show-offs out there: there's are only 13 days left for you to get your session proposals in for Software Practice Advancement 2009.

As usual, I highly recommend attending, and I especially recommend leading a session. It's a very friendly and engaged audience and it's great professional experience.