I recently attended ACCU conference in Bristol. Below you can find some of the tweet-size notes I made during the conference.
If you haven’t been to ACCU conferences, the conference schedule might give you an idea of what it’s like. It has emphasis on C++ but other languages and technologies are welcome. Because of C++ focus, most of the attendees are much more experienced compared to other conferences. Therefore, it might be a great opportunity to learn. Even though the conference has tracks and schedule prepared in advance, overall it feels more like open-space conference where you’re welcome to talk to anyone.
Most of the sessions were filmed but only some of them are available at the moment. I’ll update the blog when more videos are published.
A Glimpse of Trygve: From Class-oriented Programming to Real OO - Jim Coplien
The talk was along the lines of The DCI Architecture using Trygve programming language as an example. After reading about DCI I still don’t quite understand it so, hopefully, playing with actual programming language will make it more clear. This is the GitHub project for Trygve programming language.
- OO is about objects not classes. Most of the modern “Object Oriented” languages are really “Class Oriented”.
- Architecture happens is at runtime. Classes, etc. is “scaffolding” to define runtime behaviour.
- Project value is in delivering use-cases.
- Use-case change rate is usually faster than changes in data. Therefore, it doesn’t always make sense to combine use-cases and data in classes.
- Model in MVC (and similar patterns) is human mental model.
- Micro-services don’t necessarily solve the most important problem of semantically breaking down project.
Amazing sketchnote by Michel Grootjans:
How I Went from C++ Programmer to Running My Own Software Product Company (and you can too) - Andy Brice
In this talk Andy Brice told a story of how he set up his own product-oriented company and what he learned from this experience over the last 10+ years. It was very insightful and interesting talk showing how far seemingly niche table planning piece of software can take you if it’s done well.
- Success = idea * (execution2), i.e. ideas are cheap, execution is crucial.
- Narrow product which does only one thing is good because internet is BIG and small niche is big enough.
- Product won’t sell itself, examples like Minecraft are outliers. “Word of mouth” is very slow.
- Amount of marketing required for developing software product is larger than writing software itself.
- The biggest challenge is getting noticed.
- Typical website conversion rate:
- for well targeted visitors - 1%
- untargeted - 0.00038%
- Don’t worry too much about competition. No competition means there is no market.
- Have free trial version.
- The first two minutes of using software is vital. Do UX testing! Actually watch someone using it.
- Don’t have a free version of software. If it’s good, everyone will use it. If it’s not good, nobody will buy full version.
Waltzing with Branches - Chris Oldwood
This talk was partially based on ACCU journal Branching Strategies article. The most interesting idea for me was to think about branching strategies in terms of project risk management (see Waltzing With Bears book) rather than purely software.
- Cargo cult for Google development process. Practices which are useful for Google are no not necessarily useful on you project.
- Branches exist to mitigate perceived risks:
- Loss of productivity because of broken trunk.
- Loss of confidence because of project code quality, people.
- Merge debt - amount of effort/commits required to merge trunk and all branches under active development.
- “Advanced monitoring is indistinguishable from testing”.
Amazing sketchnote by Michel Grootjans:
How to Evolve Your Way Out of a Paper Bag - Frances Buontempo
There were three parts in this talk:
- using genetic algorithms to determine speed and angle for a particle to leave “paper bag”. You can find article on this topic in ACCU journal.
- cellular automata and in particular Conway’s Game of Life which “overflowed” from the paper bag.
- using genetic algorithm to determine rules for simple cellular automata.
Predictive Models of Development Teams and the Systems they Build - Robert Smallshire
The most exciting idea for me was that modelling and simulations have been successfully applied in other industries and software development doesn’t have to be an exception (especially if we want it to become more scientific).
Declarative Thinking, Declarative Practice - Kevlin Henney
If you are not familiar with FizzBuzz or you think that FizzBuzz implementation is obvious and straightforward, this talk is for you. On a serious note, it was a great talk about thinking about problems in more declarative way to express your intent rather than computer instructions.
Balancing Bias in Software Development - Marian Petre
- Cognitive strain/ease
- Biases exist to conserve mental energy.
- Experts use practices to overcome biases, e.g. to avoid anchoring bias double estimate and multiply by 10 or use planning poker.
- Experts make more mistakes but have better tools to find them fast.
Writing Snake in 6 Programming Languages - Andy Balaam
As the title suggests this session was about implementing classic snake video game using different programming languages and platforms (including ZX Spectrum!). You can find Andy Balaam’s videos on this topic in his blog.
Overall, writing snake sounds like a good “code kata” for exploring new languages and platforms.
On Wednesday, Thursday and Friday there were series of 5 minute lightning talks. They were planned during the day and everyone attending the conference was encouraged to give a lightning talk. The talks covered variety of topics in different formats and they have to be watched rather than described. Hopefully lightning talks videos will be published soon.
Pete Goodliffe entertaining audience between lightning talks: