When social isolation began we launched the Instil Recommends hashtag on Twitter. Our hope was that exposing our back catalogue of resources in a structured way would be of use to developers, whose daily commute had just shortened to a matter of metres. From the responses we have received this seems to be the case, thank you all very much for your support.
However, as time marches on the shelves are starting to look a little bare. We just reached fifty recommendations, which seems to be a good time to bring the series to a conclusion. We won’t be retiring the hashtag, but we will be repurposing it to focus on specific topics.
But before we shut up shop I would like to make some awards and bring together some common themes. The full playlist can now be found on YouTube for your continued edification, and instead of randomly diving in you may wish to follow some of the trails mapped out below.
The Oscar Goes To…
We recommended many excellent talks. But there can be only one (OK then two) winners. Joint first place goes to the presentations by Kent Beck and by Linda Rising. These complementary and overlapping talks delve deeply into how you can be your best as a developer, or indeed in any role. If you only watch two then watch these.
As a professional presenter I feel there should be an additional award for the best use of rhetoric and the most entertaining talk. A special mention in dispatches to Cyrille Martraire, for his brilliant presentation on the meaning and importance of Bounded Contexts in Domain Driven Design.
Change Is Empowering
I often compare our industry to a merry-go-round at the fair. If you miss your turn you can always wait patiently till the music pauses and fresh passengers get on. Every five to ten years in tech some innovation rewrites the rules, affording new recruits a chance to come on board and/or shoot up the ranks. Threads and Virtual Memory removed the need for developers to be hardware experts in the 1990’s. Whilst in the 2000’s Garbage Collection removed the need for us to be accountants of heap allocation.
The inspiring story of Alicia Carr shows how mobile development has enabled fledgling developers to make huge contributions, by providing a platform within which they can rapidly apply their expertise in other domains. Similarly Anjana Vakil’s talk on Functional JavaScript shows how first steps in browser development can quickly lead to an appreciation of fundamental concepts in computer science.
If browser and mobile development were the big innovations in previous decades, the current revolution is very much driven by Serverless. Scott Hanselman gives an excellent overview of how Serverless Computing renders a decade's worth of learning superfluous to the role of Software Architect. Hard won expertise in configuring servers, tuning virtual machines, load balancing etc… becomes irrelevant in a world where Serverless has created a new level of abstraction.
The story of Farrah Campbell’s journey from non-techie to Serverless Developer and AWS Serverless Hero is a great illustration of how this has levelled the playing field. As with mobile the curious and talented can rapidly make their mark, without the need of an apprenticeship grappling with legacy technologies. With this lesson in mind Kate Gregory's admonition not to inflict the pains you had to bear on the next generation is particularly relevant.
Of course it's not all beer and pizza. Jamie Allen’s talk reminds us that building large scale distributed systems requires experimentation, education and a rejection of dogma. Similarly Susanne Kaiser shows us why defining our service boundaries remains of crucial importance, and we need to be continually reevaluating our investments in technology as platforms evolve.
Nothing Is New, Except The Very Old
Having celebrated the virtues of emerging tech, we switch gear to focus on the lessons of the past. Although the uses of software are ever changing, the principles on which they are based have been constant since the 1970’s (if not before). Understanding this will be a source of comfort to you as you (ahem) mature in the industry :-)
Rachel Reese provides an exhaustive history of the deep mathematical roots of Functional Programming. Whilst Kevlin Henney provides an eloquent explanation of why Object Orientation and Functional Programming are not orthogonal approaches, but instead flip slides of the same coin. Meanwhile Philip Wadler and Jim Weirich provide mind-blowing revelations about just how deep the functional rabbit-hole goes.
I also highly recommend Barbara Liskov’s historical review of how the work she and her colleagues did in the 1970’s shaped the languages we have today. Plus no technical playlist is complete without the great Joe Armstrong giving a history lesson and a masterclass in technical creatively both at once.
Keeping it Real
If everything so far sounds too far removed from the daily grind we also covered an awful lot of practical advice. Lorna Jane Mitchell gave us a masterclass in making the most of Git, Christina Lee provided guidance on effective testing, Catherine Swetel offered detailed advice on extracting meaningful information from metics and finally Laura Bell admonished and encouraged us to get real about security.
In relation to team dynamics Allen Hollub set out the case for dispensing with estimates whilst Dave Thomas advises us to opt out of the cargo culting and rubber stamping that is sadly a feature of modern Agile methods. Trisha Gee gives some forthright career advice for modern developers whilst Patricia Aas counsels us on how to navigate unfamiliar codebases.
Lastly there are three superb talks on writing quality code which I recommend you watch back to back. The presentations by Sandi Metz, Michael Nygard and Michael Feathers contain far more insight and wisdom that I can do justice to in an overview article like this. They will be the subject of a future article once I’ve watched each at least a half-dozen times.
Your Primary Tool
It seems fitting to end with coverage of the most important tool of all - the one between our ears :-) As already discussed the talks by Kent Beck and Linda Rising are exceptional in this regard. But you should also listen to Liz Keogh on why metaphors are simultaneously dangers and indispensable, and to Jessica Kerr on the care and feeding of Yaks.
Given that fresh perspectives are often the key to innovation you might also like to check out Simon Brown on the importance of reintroducing diagrams to Software Engineering and Amanda Laucher on finding the right balance between Types and Tests. Those of you who (like myself) are wedded to the notion of strong types may find that Rich Hickey gives you cause to reconsider, and the talks on emerging languages like ReasonML (by Tianyu Pu) may convince you that typing isn’t the black and white debate you thought it was.
Conclusions
We hope that Instil Recommends has been a source of interest and insight to you, please send us your comments and feel free to make suggestions.
If nothing else this exercise has showcased the breadth and depth of material that is freely available online. Developers in the 1990’s had to subscribe to journals, whilst those in the 2000’s had to content themselves with MP3 files, paid subscriptions and/or commercial media players. Today we have not just an embarrassment of riches, but also multiple ways to amplify and add to them. We hope this effort has been a worthwhile contribution in that regard.