The weekend before last, I went to the second .NET Open Space in Leipzig. Since the last one I have actually attended two other open spaces, a Software Architecture one in Düsseldorf, and another .NET Open Space in Ulm, which were great, but I never got around to blogging about them.
On the first day the sessions I attended were:
- Requirements management
- Making software development more attractive
- CQS and event sourcing
On day two I attended:
- Technology independent architecture
- A coding dojo (as audience member rather than hands-on participant)
- Developer training
The making software development more attractive one was interesting. I still maintain we should be raising the bar rather than lowering it, and encouraging fewer of the right people rather than simply more people. Quality over quantity right? This was an issue in the late 90s when computer science departments started dropping Scheme for Java, concentrating less on computer science theory and more on churning out applets and web pages for the “WWW boom”. When the bubble burst, a lot of hipsters who couldn’t code had to find new careers. Read CACM and you will see that universities still want those days back, when COSC 101 was one of the bigger must-do classes at uni, but I think industry seems a lot more concerned with the quality of developers than the quantity, and university computer science departments, as in other subjects should be concentrating on the theoretical foundations of computer science, software engineering principles, and further exploration of ideas that are still considered academic and have not yet reached mainstream industry acceptance. The university should not try and replicate the workplace and churn out workers. They should not be vocational schools. You only have a few years at uni, but you have a whole career in the workplace to pick up more practical experience on larger, longer projects with real customers etc. In short, don’t worry about making it more attractive by broadening its appeal (i.e. lowering the bar). If you do want to make it more attractive, make it more professional. The right people will always consider software development a career, but until software development becomes a first class chartered engineering discipline, or something with equivalent professionalism, then the brightest minds will probably be more attracted towards more “nobler” vocations such as (real) engineering, accountancy, law or medicine.
The making software development more attractive track was large enough that it should have been a fishbowl I feel. The same voices dominated that particular discussion. The only way anyone got a chance to talk was by interrupting someone else, and everyone who spoke felt compelled to talk really quickly so they could get their point across before they were interrupted.
CQS and Event Sourcing was a topic suggested by me. (Yes I should have specified CQRS) I had hoped that someone had practical experience implementing these patterns in .NET and was hoping to hear what tools they used, what issues they had etc. Nobody had such practical experience with it, but a small group of us had a nice discussion about it anyway.
The coding dojo was interesting. It was based on Kata Potter. I was initially too scared to participate, assuming that much smarter people than me would bang out a solution in 5 minutes. But after watching it for a bit, I almost felt like jumping up and taking over and at least getting them started. They were too busy thinking about the tricky cases, and what sort of data structures they needed for the internal algorithm, and didn’t really get anywhere in the hour I watched them. Each person started writing out a test, which was good, but not really clearly worded to specify what behaviour is expected. As a result it was not always clear how many things the test was supposed to be testing. When it came to implementing the functionality to make the test pass, they kept on going back and forward changing how the data should be put in to the system, and getting side tracked in discussion about details. I am pretty sure I would have done a better job, mostly by naming my tests better, so it is clear what is being tested, and implementing just the minimum functionality to make the test pass without worrying too much about whether the data structures are ideal for the tricky cases. I would probably start off with a Book and an Order class, and if it turns out to be the wrong approach I would just change it later once I have a deeper understanding of things. But I can’t really make any such claims until I try it for myself, which I intend to do, sometime. I might even try it with Haskell or F#.
REST was interesting. It was mostly focused on how it can be done with WCF and ASP.NET MVC, rather than REST principles themselves.
The discussion about developer training was interesting too, although I was pretty tired by that stage. I assumed it was mostly about how a developer can improve their lives and career, as they specifically mentioned during planning about discussing options or possible future prospects for older developers. It seemed to focus mainly on how companies can improve their businesses by sending their developers off to training, which to me is a totally different thing to developers setting their own goals and shaping their own careers by choosing their own training options. I would have preferred more discussion on the latter.
In the end however, I think I am starting to lose interest or motivation in community participation. Probably because most of the “community” I have been associating with is fairly .NET focused, and discussing fairly new tools and techniques, whereas at work things seem to moving more towards the old, legacy, C++ maintenance work. It is hard to contribute to a discussion on, say DDD (which is in no way .NET specific at all) when you only have theoretical understanding of it, and no current practical experience with it in the workplace. Unfortunately there was no track on maintenance of old legacy C++ software, but even if there was I feel I would have more questions than answers. For a similar reason I am less motivated to attend (.NET) user group meetings, it feels a little disheartening to see all these cool new toys and know there is no place for them at work, and it feels like a poor use of my time to start learning about things I am unlikely to get a chance to apply practically to the delivery of customer value. Perhaps if there were something with a less specific focus, such as a Software Craftsmanship user group, I might find that a little more inspiring and motivating, and be able to apply it directly to my job in software maintenance.
Anyway, thanks a lot to the organisers of the .NET Open Space 2009!