I did plan to write a series of blog posts at the end of each day of the ACCU Conference in Bristol, but between having far too much fun learning, and having zero energy by the time I got home, never mind zero brain power, I thought I’d do a write up in one big posts with some “Match of the Day” style highlights.
Day 2 (Tutorial was day 1 for me…)
Day 2 kicked off with the ever energetic and lime-green nail coloured Pete Goodliffe bouncing around the stage giving a talk on how to become a better programmer. He covered various aspects of becoming a better programmer, but the main point I think he made was attitude. Our approach to becoming better. This challenged me (yet again! Thanks Pete (: ) because while I’d been moving forwards to becoming better, my attitude at times sucked! Frankly.
Pete also issued a challenge to us all. We were dared NOT to go to the stuff we’d be comfortable with, but to stretch ourselves and head off for talks that were way outside our comfort zones, and attend as novices. (Wasn’t hard for me, I was a novice at most talks!) That way everyone would leave the conference having learned something they didn’t know before.
After being filled with coffee and all sorts of pastries and such, it was on to Seb Rose’s talk on Low fidelity approaches to software development. He spoke about how we tend to bite off more than we can chew, working on something that’s almost ready and will stay like that, and never get delivered. He made a quick point on the waterfall and the biggest issue with it, was that everything feels ok until all of a sudden bang!
Seb also made the point that feedback is a very important thing to make use of, because it allows us to see where we’re at at the moment. It also gives us a chance to take stock of what we’ve done, and what our customers think. And pointed out that the Military use the Plan – Do- Check – Act which gives feedback that allows us to change the next part of the plan.
He quoted Father Ted, the scene involving Ted explaining perspective to Dougal making use of a toy cow to explain that this one was close, but the ones outside were far away. And it’s the same with software projects. Until we start working on something, we can’t understand the full scope of the problem we’re working on.
From there it was on to Mike Long’s talk on How To Talk To Suits, where I learned a great deal about speaking to business managers. And I thought I already did this pretty well, as I don’t like bamboozling people with technical jargon. This also included a practical workshop to work through which was good fun.
Mike spoke excellently on this, and talked us through a bunch of business clichés, such as a Business Case, where we need to present to someone for an allocation of resources for the stuff we want to do. Time is money, Mike pointed out that from a business perspective, Time matters more than money, indeed, I’ve often come across this in my career up to a point, “we don’t care how much it costs (within reason) but we must have it by tomorrow”.
Mike also used real world examples to explain that money comes in many flavours. That is to say that if we wanted a new server for example, and our hardware budget was fully allocated, then we could STILL get the money but from another budget, such as an innovation budget for example. Hence the term that money comes in many flavours.
There were some great lightning talks as well, and Chris Oldwood did some stand up which was great fun, and it’s a shame it wasn’t recorded, as there were some belters, who knows he may pop them on Twitter.
Day three kicked off with frankly an amazing keynote talk from Axel Naumann on how CERN use C++. And it was awesome to hear how C++ was used to process data from the Large Hadron Collider. But what was epic for me, was to see some of the stuff that the LHC produced, and the fact that it was all completely open. Axel also spoke about an experiment they’d carried out where they fired neutrons at nuclear waste that shortened it’s half-life but also generated energy!
Then there was an interesting talk from Kate Gregory and James McNellis on Modernising Legacy C++ in which they raised some excellent points. They made the point that we should compile C code as C++ as we’ll get better type checking. They also made an excellent point that the warning you ignore isn’t a warning. So Kate and James suggested that what we can do to modernise legacy C++ code is to do the following:
Increase the warning level and compile as C++
Rid yourself of the pre-processor.
Learn to love RAII (Resource Acquisition Is Initialisation)
Introduce Exceptions but carefull.
After that, there was an excellent talk by Chris Smith and Mark Upton from Redgate on what’s wrong with sprint retrospectives and how to fix them. This was a very practical talk, where we there was a fair bit of user interaction where we shared our experiences of working using retrospectives. They shared their experiences at Redgate in improving their retrospectives and had a lot of good ideas I plan to put in place at work.
We were treated to a great opening talk where Alison Lloyd went through some case studies of various mistakes made in industry and what we could learn from them. I was scared that there’d be photos of Therac 25 victims initially, however there wasn’t anything like that. Alison started her talk with a sobering discussion about diarrhea and how it caused so many deaths. It was quite educational and challenging to hear the devastating effect that this had on humans, and HOW it caused so many deaths as well.
This talk was running through my mind for most of the day if I’m honest, and I’m pretty sure I’m not the only one who was challenged and moved by what I heard in those opening 15 minutes.
I had the unfortunate experience of turning up to a talk, and needing the loo, popped out for a second or two. When I came back the door magnet engaged, so I couldn’t get back in. I didn’t want to knock either as I didn’t want to disturb the chap giving the talk.
However, Anthony Williams’ talk on C++ Atomics was very good. I didn’t understand all of it, but I certainly got the gist of what was being said. Essentially, don’t use atomics unless you have to. You should only use them if you REALLY need the performance gains it will give you, and even then you should only use the memory_order_seq_cs (Sequential Constant) as the others are horribly complex, and you should only use them if you REALLY know what you’re doing.
There was a spare slot on the Saturday, so I volunteered to fill half of it with another chap, the only issue was, Roger and Kevlin were also speaking, so I knew that most if not everyone would be at one of those two talks, so I expected nobody to turn up to the talk I gave. But two guys who’d turned up to the previous talk stayed. So rather than me stand up and do a talk, I made it more informal and turned it in to a chat with slides which I think quite well. I’ll be honest, I knew there wasn’t going to be many folks at this one, but it was a good way to see if I could do this conference talking thing.
The End-note was Chandler Carruth from Google talking about how they’ve made C++ safer, easier and faster with their use of Clang. It was a great talk with some live code demoes as well. He told us how Google had a completely unified codebase which allows for a single unified build system. Chandler also spoke of the things that made C++ safe and quicker as well but I wasn’t quick enough to grab these as notes, the slides should be available though.
I’m not sure if it was me or not, but this conference felt different to me. It felt like I connected more with the material and the topics, and that could well be due to the fact that I’ve developed as a programmer since the last conference. But there was a pleasing and friendly atmosphere this year, not that there wasn’t one before but it felt more tangible this year at least for me.
I also had the chance to make new connections as well as catch up with those I made connections with last year, and a lot of people came up expressing an interest to be interviewed for the CVu magazine, and those I approached to ask were equally as nice.
I was sad to hear that Jon Jagger who’d been conference chair for the last four years had stepped down. I’m certain that I’m not alone in saying that Jon’s arranged an amazing conference this year as he has done for the last four years, and the fact he got a full minute of applauds and cheers speaks volumes for how good a job he’s done. I do look forward to hearing him speak next year though (:
However Russel Winder is the new conference chair, and I know that the conference is in safe hands. So I’m excited to hear of what’s going to come in 2016, I may even put in a paper this time
If you want to see what went on and who said what, the slides are available at the ACCU website, which can be found at http://www.accu.org and if you like what you see, then consider becoming a member 🙂
From the 8th to the 12th of April, I and a few hundred people descended on the Marriot Hotel in Bristol to attend the ACCU Annual Conference. So what is ACCU? It stands for the Association of C and C++ Users, although don’t let the title fool you. There we plenty of talks on all sorts of topics and other languages, for example, Uncle Bob spoke on Clojure, the excellent Jon Skeet spoke on how to abuse C# 5, Dan North spoke on why Agile Doesn’t Scale (well worth it!) and even your truly did a lightning talk on self-improvement as a programmer.
So to the highlights…
Tuesday 8th April
So I was fortunate enough to be able to attend the pre-conference tutorial day which was on the Tuesday, and I elected to attend Nicolai Josuttis’ tutorial on C++11 and C++14 in a day, which was a whistlestop tour of the features that were in C++ 11, and what’s coming in 14 (Which is now out in the latest build of gcc, which is 4.9 at the time of writing.) And I surprised myself with how much I’d learned by mucking about and watching the various video courses I’ve done at home. Nico is a very engaging speaker, and very easy to listen to and makes it easy for you to be able to absorb what he was saying. I’m still absorbing if I’m honest.
Wednesday 9th April
The rest of the delegates rocked up today, and so the conference was packed out. I had the age old problem of too many great talks to attend at one. However Bill Liao kicked us off with a great keynote on the CoderDojo.
If you haven’t heard of the CoderDojo, it’s a self organised coding event designed to teach kids to program. It was started by a young lad in Ireland called James Whelton, who started a computer club at his school but when it came time for him to graduate, so the club was in danger of being shut down. So he approached Bill to help fund an organisation that taught kids to code. And now it’s growing at quite a rate.
Bill spoke about the impact of the CoderDojo in Cork, and encouraged the creation of CoderDojo’s all over, as programming is not really taught in schools any more. I am currently analysing the state of teaching programming in our schools, and a more detailed blog post will follow.
The afternoon had a great talk by Jonathon Wakely on “There’s no such thing as a universal reference.” This was in reference to something the legendary Scott Meyers said about the rhs (&&) operator in C++. And the room was jammed as can be seen in the picture below.
It was an interesting talk, and Jonathon spoke of the circumstances where he thought that the use of the term “Universal Reference” was used incorrectly. I’ll be honest, a lot of it went over my head, however it’s given me something to look up about and read on a bit more. So that’s good.
I also volunteered to do a lightning talk based on my experiences of seeking to becoming a better programmer over the last year. The dangers of twitter…
Thursday 10th April
Thursday opened with Dan North speaking on why Agile doesn’t scale. Which was quite good, and I wished my manager was there alongside me to hear the talk. Dan went in to how Agile made projects that were slated to take years were done in months, however projects that should have taken days changed to taking months. I found this talk quite engaging as the team I’m at work does Agile (I’ve since been corrected, we’ve moved away from that to Kanban now…)
Another great talk was the Art of Learning and Mentoring, which was more of a workshop than a talk, and it encouraged lively debate as to the best way to teach new team members on our teams, and discuss how we learned new techniques.
Although I freely admit that one of the highlights was been able to share a beer with the excellent Pete Goodliffe, and so got to discuss the talk he gave last year, and he kindly agreed to look over my lightning talk. So beer time well earned methinks.
Friday 11th April
I must confess that between commuting between home and Bristol each day (M5 eurgh), left me shattered at the end of each day, so I’m afraid I missed the keynote this morning, so I could focus on writing my lightning talk for tonight. And it’s quite a daunting challenge to keep it down to 5 minutes, so I had to be merciless in what I was and wasn’t going to say.
But I’d been looking forward to Friday’s talks. Mainly as Kevlin Henney was doing a talk on Immutability For The Win, and ironically he was changing his slides just before the talk. But then the slides pack is a stack so it wasn’t really immutable….apparently.
Biggest highlight for me personally was entering a raffle run by Intel to win a Samsung Galaxy Tab 3.0, and on the Friday the draw was made. And I won!! So now that’s in full use at home. I owe thanks to James Greening who I was sat with at the bar, and convinced me to head down to see the draw, so thanks James! Beers on me next time I see you sir.
The other highlight was hearing Jon Skeet on Abusing C# 5, and it was quite funny and evil some of the stuff he’d done in the language. It reminded me of a talk Phil Nash gave last year where he overloaded the –> operator in C++ so that it now pointed to the left (i.e. <- ).
It just showed that if anyone was that way inclined, they could write vile and evil code that nobody had a hope of understanding.
Then it came time for me to give my lightning talk, and I’d like to think it went well. I kept a beady eye on the timer that Ewan was holding up, and finished a minute ahead of time. However I think I may have rushed some elements of it. It was a VERY full room, but what struck me was that nobody was glaring evilly at me, (won’t mentioned where I had that experience). And I realised that what Malcolm said was right, that they were rooting for me. So thank you all for listening. The problem is no Phil Nash has challenged me to put in for a full talk next year. So watch this space.
Saturday 12th April
By this point, my brain was pretty much mulch. But still I bravely carried on. Among the highlights was Arjan van Leeuwen’s talk on The Evolution of Good Code. In which he discussed the discipline of writing good code, and compared what a number of text books had to say.
I also attended Anthony Williams’ talk on the continuing future of C++ Concurrency (multiple threading). I’ll admit that this wasn’t the talk I was expecting, and as I’d done next nothing with threads in C++, I quietly slinked out (Sorry Anthony, nothing personal). However as I’ve got Anthony’s book, it won’t happen again. (Will post code to prove that I understand it ;-) )
The conference was closed by Howard Hinnant on talking move semantics in C++, which was a very interesting. I dutifully drew the chart he had in his slides, and will be revising that as often as I can.
I loved every second of this conference. I’ll admit a lot went over my head, however I learned a lot as well. I also made some great new contacts. And I have some new challenges to take on this year. Would I go again next year? Yes, without hesitation.
And if you’re interested in being part of a large C++ community, then can I commend the ACCU to you. While the acronym says C and C++ Users, it’s by no means exclusively the C++ language. For instance, I also develop in Python, Java, C# and a few other languages as well, and I’m sure I’m not the only member either. You get two publications, and great discounts on the conference.
If you’re interested in joining then head on over to the ACCU Website for more details.
This site is devoted to chronicle my journey to becoming a better programmer. And I hope it will give some tips and tricks that will inspire you or help you to improve as a coder as well. Why have I done this? Because I want to improve as a developer, and as you’re here, I assume you do too, which is fantastic.
So some background I think, to set the scene so to speak.
I am a software developer in C++. I’ve developed in C++ for nearly two years now as I write this, and there’s been some ups and downs in getting the hang of the language. In 2013 I got to attend the ACCU conference in Bristol, where Pete Goodliffe gave a talk on Becoming a Better Programmer, which was interesting. Because it’d been something I’d been thinking about for the last few months, but hadn’t made any plans, or really knew where to begin, or what sort of strategy to develop. Pete invited some respected developers within the community to come up and give 5 minute talks on what they thought helped you to become a better developer. A couple of talks stood out, Seb Rose on Deliberate Practice, and Anthony Williams on Mindful Coding.
One of the things Pete mentioned was a sliding skill scale. [photo of the scale here]. So imagine the diagram above. If I were to ask you RIGHT NOW in terms of programming in your chosen language, where would you place yourself on the scale?
The talk mentioned a few things we need to consider, that will help us to become better programmers.
1. Be mindful that you want to improve.
I was talking to one of the organisers at ACCU, and we were discussing the skill scale on C++, and where we saw ourselves, and he surprised me, by telling me that Bjarne Stroustrup, the guy that literally wrote the book, and the programming language himself, rated his skill level as a 7. So if he’s aware of the fact there’s stuff he doesn’t know, then if someone says they’re a 9 or a 10….well….I’ll say no more…
2. Determine what’s important for you? Work required skills? Skills for your personal pleasure.
This is quite important. In this blog, I’ll be covering how I improve as a C++ Programmer. And I work in C++ day in day out. However in my own time, I write mobile phone applications for Android and the iPhone. (I will get round to Windows Phone but need a new processor for the Virtualisation stuff apparently…) And my work is important, it’s what pays the bills. But it must also be enjoyable too. So there’ll be some mobile dev stuff as well, and possibly how I’m getting on with learning to play the piano.
3. Know where you are now. Be realistic!
This is a very important step. And we must approach this step with humbleness and a degree of humility as well. We must weigh up where we are now, because we’ve all got to start from somewhere right? And things will get easier once we’ve defined a starting point.
4. Know where you want to be? – And be honest about it.
So what’s the destination? Every ship has a course set, when you get in the car, you usually have a destination in mind, so where do we want to end up with this quest of becoming a better programmer?
5. Work out how we will get there.
This then is the final step of the PLANNING phase. There are a myriad of ways that we can achieve our aims and get to our destination, and during this year I intend to make use of as many of them as I can. Some of them are free, like looking up what you want on Google, or attending community groups etc, but some of them aren’t free, like books, or attending conferences.
So, where am I at the moment then?
Well, I definitely want to improve my C++ programming, in fact, I feel I need to. Why? Advancement at work, making myself more employable if I ever decided to leave where I am at the moment, personal satisfaction, the ability to sit through a C++ presentation and follow more of what’s going on. If my week at ACCU showed me something, is that I understand more than I think, but I still have a long way to go.
So why am I putting myself through all this? After all it’s going to take at least 10,000 hours of practice to get to where I want to be. I think I covered some of it in the previous paragraph, another reason would be to build a good reputation with my colleagues, or should I say a better reputation with them. But also one day, I’d quite like to have the confidence to get up in front of people and present on wheat I’ve done, what I’ve learned and how it can help others.
In terms of C++, I’d say I’m on the bottom rung of the ladder, I know enough to be effective at work, but I wouldn’t feel confident in suggesting a whole new way of sing something, as I’d be far too nervous about sharing my ideas.
So I plan to blog each time I do something, or learn something new. So I’m not going to make any promises on a posting schedule, or maybe I should? I’m not sure, I’ll see how I get on. I will also note any books I’ve found helpful in this quest as well, and my hope is that someone somewhere will learn from the mistakes I’m bound to make in this endeavour. I also hope I’ll be able to post an interview or two with some respected members of the development community, but that’s a future thing, not a now thing.