A few words about the recently held ACCU 2013 conference.
I attended for two reasons, it was right on my doorstep, and I had just started a project where C/C++ were key parts. ACCU then was simply too good to miss, and as it turned out it was a fantastic conference in more ways than I imagined. I highly recommend ACCU to others with a few caveats; you have to be interested in the technical side of programming, and of course a keen interest in C/C++ will not hurt.
Prior to the conference I decided to attend the tutorial on ‘Pattern oriented design’. Not being a pattern convert and a few years since my last official GOF introduction, I thought I could use a little broadening of my horizon. Other than the tutorial I decided on a few C++ talks and some ‘real world experience’ talks which almost always end up being interesting.
Disclaimer: As always there were too many interesting talks and too little time.
My award for the best talk goes to Tom Gilb for his talk Real Architecture-Engineering or Pompous Bullshit?.
- This was the right talk at the right time for me, being in the middle of developing a product scheduled for launch all too soon.
- Software engineering is not Engineering as we know it, far from it! Too many basic mistakes are still made, elementary things are often overlooked, causing all the problems we hear about all too often.
- Cost is often overlooked. Without being able to place a value or cost on your architecture you cannot be an architect.
- Stakeholders are important, users are also stakeholders but not exclusively. This is an interesting exercise on its own, and will provide you with some key insights. Who are your real customers.
- Quantify! Everything! Look at side effects - quantify. Non-functional requirements are BS - I like this part. Qualities are often not quantified - what is robust design? Being difficult to quantify does not mean that it is impossible, you will always find some value.
Don’t know where to start: Google ‘software metric’.
I ended up following his 5 day schedule - this is another post altogether, but it has been fantastic.
Another fantastic talk was Cleaning Code - Tools and Techniques for Legacy Restoration Projects by Mike Long.
- Present a clear business case. You have to justify what you want to do - it will always be about money. Beware of the trap of rewriting, it often is commercial suicide.
- Remember Conway’s law: ‘Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations’.
- Code is a liability, functionality is an asset.
- Measure and visualise. But, be careful what you measure. And be aware that developers will try to game the metrics. Finally only trend measures that change.
- Bugs are often not code done wrong, but the wrong thing implemented.
- Beware of the lottery factor / big red bus; how many people has to leave the project for it to become a liability. A key insight early on, do you depend on a few people? Do you expect them to hang around? Then perhaps you need to do something about that legacy project.
The tutorial: Pattern oriented software architecture
Not really a talk but still. I thought a revisit of the patterns subject was overdue, still not a true believer. It is without doubt very convenient to have patterns when you want to explain a subject, it does give you a common reference point and hopefully will remove some of the unimportant implementation details. But, there are clear limitations; you have to be very careful in your choice of patterns, and you still have to have a good grounding in the subject matter you are describing.
I ended up buying and reading ‘The Timeless Way of Building’ since it was mentioned many times, obviously not directly a programming language book but still highly recommendable. Not only is it a good read for its way of describing patterns and overall structure, but I particularly liked the reading guide at the beginning of the book.
The rest of the conference
Other talks and sessions I attended:
Eben Upton, Inspiring future generations with open hardware - the Raspberry Pi One word; Fantastic. A project you just wish you thought of yourself.
Bjarne Stroustrup, C++11 The Future is Here, a fellow dane who makes you proud - just don’t hire him as your head of advertising - RAII. I like his pragmatic clean approach to speaking about C++, he doesn’t complicate things, but keeps focus on the important parts, and clearly acknowledges the vast span C++ is covering from embedded to HPC applications. You can’t please all - all the time. His site is definitely worth a visit, it may not be the most leading edge web site, but the content is second to none.
Aleksandra Mierzejewska, Hybrid programming, Lua and C++. C/C++ intermixed with lightweight scripting might be a good idea … if you do it for the right reasons, and the right way. I quite liked the talk and especially the ensuing discussion that occurred during question time.
C++11 features and real-world code, Anthony Williams. Quite good, I ended up proofreading my C++ project code updating it to be as C++11 idiomatic as I could make it.
Parallelism in C++1y, Detlef Vollmann. Entertaining and enlightening, and amongst the audience was the implementer of the GCC std. library in question - always handy.
The Git Parable, Johan Herland. Git is also my choice of version control tool, and Johan knew what he was talking about.
Becoming a Better Programmer, Pete Goodliffe. Well, I was there.