The Lead Developer Conference – 11th September 2015

Last week I was lucky enough to bag a free ticket to the Lead Developer Conference in London as Junade Ali, our Lead Developer in the Web Department, was invited to do a lightning talk on “Practical Web Security”.

The Lead Developer conference is an event where lead developers from all walks of the tech life meet and listen to talks given by an assortment of tech professionals. Rather than your typical tech conference, the talks from this event were very much aligned towards leading a development team.

IMG_2123The event was held at the Elizabeth II Conference centre in London – opposite Westminster Abbey. A pretty epic view from the reception on a surprisingly clear September day.

There were approximately 300-350 attendees (too many for me to count) all of whom were either a Lead Developer themselves, someone moving into that position or the CTO/Director of a tech company already.

Registration started at 8:00am and the attendees, groggy from their early rise slowly signed-in and made their way upstairs to consume copious amounts of complimentary coffee and biscuits.

Welcome to The Lead Developer conference

Meri Williams (aka @Geek_Manager) was the conference chair on the day and did an amazing job of it too, introducing the speakers with great enthusiasm and helping the day flow along effortlessly. This was no mean feat considering the enormity of the schedule!

Let’s break this thing down

For this reason I have broken this write-up into the following sections so if there’s a favourite speaker / talk you want to know about – just skip right to it! If everything is all a bit too long and confusing – just skip to the “Too Long, Didn’t Read” section.

All of this on a single track?! Needless to say by the end of the day my mind was blown – and not just from the drinks reception.

Cloning Yourself Isn’t an Option

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

Camille Fournier (@skamille) opened the day with a killer presentation on how to become “a multiplier rather than a clone”.

As a Lead Developer it’s quite easy to fall into the trap of thinking ‘if there were more of me…’. Well, this isn’t an option. You are only one person and although you may be awesome, you can’t do everything. Instead what you should be doing is being a multiplier.

A multiplier is not simply about you but about others around you. Not making yourself better but those around you better.

But how do you actually do this? Well, it’s all about performing your role as lead developer in a way that cascades down to your team. Using your knowledge to identify the right problem to work on at the right time. Doing this can sometimes have a domino effect – making a complex set of projects magically fall into line.

Camille then went on to explain that qualitative feedback is extremely important in measuring how good a job of this you are doing – not only for yourself but the team around you.

Impact and Influence

I have a feeling that everyone at that conference will remember the words “Impact and Influence” for a very, very long time. When measuring a team members abilities it is important measure them against the “Impact” that person has on the company or to put it simply “if not for this person – what might not have happened”. Influence speaks for itself – who goes to this person for advice? Does this persons opinion carry weight within the company?

Personally, this talk highlighted to me what I might be missing in the assessment of my own team. Within our systems department we’re very capable developers, however we never really judged ourselves on the impact our developments have on the business as a whole, and the influence our advice and feedback has on those around us. Rest assured this will be measured from now on.

Camille’s slides can be found here.

Riding the Paradox as a Lead Developer – Patrick Kua

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

A perfect follow-on from Camille, Patrick Kua (@patkua) spoke in detail about the paradox of being a lead developer. He asked the questions we all ask ourselves everyday when pressure builds and deadlines approach:

  • Should we develop quickly or take time to learn?
  • Should we deliver exactly what we’re asked or should we innovate?
  • Should we deliver consistent quality or look to constantly improve?

These are the questions that every developer asks themselves, lead developer or not. But this conference is about Lead development and Patrick goes on to ask the more serious questions:

  • Should I be fully transparent with the company/project situation or protect the team?
  • What does the business require us to do but the technology we’re using limit us in doing?

These are hard-hitting questions and there’s no one-answer for every situation. It’s all about making the right decision at the right time and this can be extremely difficult and complicated for a lead developer.

The key messages to come from Patrick’s talk were that:

  • You are not alone – we’re (the lead developers) all in the same boat
  • Be comfortable with uncertainty - learn to cope with these paradoxes
  • Don’t take a binary approach – try to merge things together to make things easier

Slides from Patrick’s talk can be found here.

Go Faster with Angular – Ben Godfrey

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

I was very interested in this talk from Ben Godfrey (@afternoon) as we recently launched our Digital Health Check which is based on the AngularJS framework.

Ben was the first of the lighting talks of the day and provided a good introduction to the framework. He talked about how Wonga used Angular in some of it’s websites features. Ben even went so far as to create a new slider component that was released as a package.

Ben used VIM as his presentation tool – the first time I’ve ever seen VIM used in place of a slideshow and the innovation was not lost on the tech-minded audience.

An introduction to the pros and cons of Angular 2.0 was given and it was refreshing to hear Ben’s reluctance of upgrading 1.x versions of Angular to 2.0 – something I’ll be looking into in more detail in the near future.

Ben’s VIM-based slide can be found here.

Go (I made all the mistakes so you don’t have to) – James Abley

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

Although I’m not a really a Software developer I have dabbled in a few languages in my time and I was interested in hearing what Go had to offer. James Abley (@jabley) gave a great feature-rich presentation on such a complicated topic in just 10 minutes!

There are a few members of my team who’d be more than interested in learning more about the intricacies of Go but in a nutshell it’s all about CSP. Communication sequential processes.

A lot of people get confused between concurrency and parallelism. Go provides concurrency in a language that focusses on backwards compatibility and libraries that clearly define AST and serialisation. If (like me) you’re starting to lose sight of what it actually is then don’t worry – you can check out what it’s all about here.

A few key features of Go are that testing is built-in and really fast, there are some great tools to allow you to spot the processes (a little like ‘top’ in linux), a fantastic benchmarking suite and call graphs.

James’s slides can be found here.

Beyond Programmer – Dan North

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

Dan North (@tastapod) gave a crowd-pleasing talk on the evolution of programming, from it’s inception in 1844 with Ada Lovelace all the way through to it’s World War II code cracking women and the 1960’s “Witch” mainframe. Where “programming had become simple enough that even men could do it!”.

Programming had become simple enough even men could do it

Through each of these phases in computer science we eventually reached the revelation of Agile Development. We are now in a collaborative, cross-functioning environment where we are beyond developer.

The general idea was that even though you are now a lead developer, you are still a developer at heart. You’ve only become a lead developer through your own evolution. This evolution can be chronicled through the different stages and responsibilities of your career, through being a developer (learning languages, building things) to being a team leader (understanding the process of work), building products for the business (rather than just code), on a platform that scales inside an organisation.

The understanding of how all of these components link together is takes a developer to a  lead developer.

Dan North’s slides from his talk can be found here.

12 Challenging Steps to being a better interviewer – Cate Huston

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

I’ve been in a few interviews (both sides of the desk) and there’s always room for improvement (both sides of the desk). Cate Huston (@catehstn) shared her experiences both good and bad as an interviewer of technical interviewees.

We’ve all fallen into the trap of losing confidence or even interest in the candidates we are given – especially if we’ve been burnt by recruitment agencies sending ‘no-shows’ in the past. But Cate emphasised the fact that in doing so we putting ourselves in the wrong mind-set from the start. We should always be assuming that the ideal candidate we are looking for is the next person we are interviewing. We need to respect the time our candidates are giving to us as it’s probably the most important thing they are doing that day.

Bias is the curse of the interview process. Reading a CV and forming a bias is something that should be avoided at all cost. Cate has done away with CV’s – tests are the way forward, she also charges recruitment agencies for no-shows – this gives her the confidence to know that even if the candidate is a no-show she’ll be compensated. Then it really wasn’t a total waste of time and that creeping negative mind-set doesn’t need to take hold in the first place.

Unfortunately I could not find the slides but there is a really nice picture of a crocodile riding racoon from the talk.

The technical journey to Microservices (aka Microservices Hell!) – Russ Miles

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

What can I say about this talk? It was drab, uneventful, boring…NOT! Let me hit you with two things: ROCK’N’ROLL + MARRIAGE PROPOSAL.

Yes, Russ Miles (@russmiles) approached the stage with electric guitar in hand (a first for a developer conference in my experience) and proceeded to play “highway to hell” with adapted lyrics in his background presentation. “Highway to Microservices Hell” then quickly shot to Number 1 in all known charts and Russ retired a happy man.

Russ then got sued for plagiarism and surrendered all his royalties and got on with the conference talk.

Microservices, as it turns out aren’t as easy to control as some people think. People get caught in Microservices Hell where the microservice – the ‘smaller system’ that is designed to remind people how the ‘overall system’ should behave – becomes disjointed and fragmented and eventually lost in the ether.

Russ then goes on to describe how some people use Microservices to provide stability, speed and anti-fragility. One or the other or a combination of all three. DDD (Domain Driven Design) and Events seem to be the way forward in keeping microservices in check.

There was then some talk about Lakes, Streams, Aggregates and Views for presenting these events but that was quickly forgotten when, at the end of his talk, Russ took out a small jewellery box and stated (quite calmly) that he just needed to propose to someone real quick (talk amongst yourselves).

The audience then looked about confused thinking: “So when you propose…you’re in effect creating an event…that does something…in a microservice?”. Lo and behold! It was a real marriage proposal (another first for a developer conference?)!

Congratulations Russ Miles!

I couldn’t find the slides from Russ’s talk but here’s a video of him playing guitar on stage.

People are weird, I’m weird – Sam Barnes

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

Unfortunately no marriage proposals this time, but Sam Barnes (@thesambarnes) did keep the momentum going with a series of fantastically funny GIFs!

Sam Barnes is a weird bloke (he’d appreciate that) but isn’t everyone? Sam’s talk was about building a great team - filtering out the “douchebags” and hiring people who you know you want to work with.

Getting rid of assholes in your team is just as critical as adding good people into it.

Building a great team is all about building a common goal. Each team should have its own set of principles – those core values and characteristics that the team believe in. As soon as the team decides on these principles you will start to see them live by them.

A huge amount of soul was poured into this talk, Sam regarded himself as an introvert – and constantly made fun of himself on stage. His overall goal was to make people realise that the benchmark for ‘normal’ is not your own personality. If you think of other people as weird – what are you comparing them to? Yourself? If so, then you’ve got it completely wrong.

Sam Barnes’s slides are available here.

Adaptive Testing – Beccy Stafford, Preet Sandhu

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

I’m going to own up to something now, I don’t do enough testing. Or rather I don’t understand the need to do enough testing in a busy fast-paced environment. This is something that both Beccy Stafford and Preet Sandhu from JUST EAT would hate me for and resolve to change my way of thinking.

Adaptive Testing is about knowing the team and successfully fitting testing into their way of doing things. Therefore it’s pretty safe to say that testing could be implemented into any development team – given the right training.

This talk split the testing subject into a number of different ‘team types’:

  • Teams in Denial
  • Fearful Teams
  • Legendary Automation Team (we used to have a guy…)
  • Desperate Team

All these different ‘team types’ have some reason or another to loathe testing. But there are ways and means for dealing with each and every type. The end goal is to aim for Team Acceptance – the team that loves testing. It’s hard to do but Beccy and Preet seem to love the challenge and I commend them for it.

You can see the Adaptive Testing slides here.

Why you should be checking out Rust – Dan Webb

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

Rust is a systems programming language developed by those guys ‘Mozilla’. Dan Webb (@danwrong) gave a super-fast overview of Rust and the benefits of its main features.

The crucial thing to understand about Rust is that it’s a systems programming language that takes all the benefits of C and C++ but adds modern language features, better memory handling and concurrency and its own embedded toolchain. It’s really good at speeding up the processing of hot code paths.

All of this is a bit beyond me being a humble web developer but I’m sure a lot of software fans will find it useful in the years to come!

I can’t find any of Dan’s slides but if you’re interested in rust – check out the website.

Practical Web Security – Junade Ali (yes our very own Junade Ali!)

Junade giving a talk on Practical Web Security
Junade giving a talk on Practical Web Security

Junade Ali (@icyapril) is a Lead Developer within our web department and something of a web security / cryptography enthusiast. Not only this but he also harbours a more-than-keen interest in politics. An invitation to speak about “Practical Web Security” at a venue across the road from the Houses of Parliament (whom he was attending just the Monday before) was a perfect fit.

Security is sometimes underestimated by software companies – especially by web agencies. Not a lot of people realise that there are simple, practical steps that you can take to seriously reduce your risk of exposure. Junade couldn’t go into the level of detail that he would have loved to in the 10 minute slot allotted to him but instead focussed on practical implementations that everyone should be considering.

Junade talked about the ‘layering’ of security that we should apply in-front, on-top and behind our web applications. It’s not just the case these days of simply installing a security plugin. Attacks are more sophisticated and therefore require more sophisticated technology to deal with them. Fortunately there are a lot of precautions you can take.

A web application firewall is a great place to start. Typically a lot of hosting providers will implement mod_security (for linux), make sure this is enabled. As well as this consider defending yourself more aggressively by banning IPs that are considered a risk. Fail2Ban on linux can do this for you.

Hosting as a whole should be looked at. If you’re using a popular framework you might want to consider specialist hosting providers that know the security risks of those frameworks inside-out.

Good coding standards is a must. Ensure your website is built correctly, securely and is well maintained. SSL/TLS needs to be implemented where required.

Finally, you may want to consider a 3rd party service to route your traffic through. Fight the baddies before they even get to your server! Cloudflare may be a good option for you here – with other benefits to boot.

You can see Junade’s slides on Practical Web Security here.

Save your team setup time with Docker – Graham Gilchrist

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

As an avid Vagrant user I was really interested in hearing what Graham Gilchrist (@grahamgilchrist) had to say about Docker – the lighter alternative?

This talk mainly focussed around the typical scenarios we (as developers) face when working on older projects. Checking it out, following certain setup steps and then boom! Fatal error. The reason? Something has changed in our software environment.

It’s important to realise that the environment you create the code within, is just as important as the code you write. It’s the final dependency.

Docker + Docker Compose is a virtualisation of the OS portion of a virtual machine. This differs from Vagrant or other VMs where the entire machine, including hardware, is virtualised. Using these, speed and configuration become problems when you roll out to other machines in your team.

Docker aims to automate the setup of consistent, compliant environments without the overhead of a larger alternative.

There are currently a few issues on MACOS but it is definitely something I’m going to try to work out – if only to save disk space!

Unfortunately I can’t find Grahams slides but the Docker Docs do a good job of explaining the basics.

From Web Dev to Mobile Dev with Nativescript – Ben King

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

Ben King (@BenKingNTU) gave a really nice introduction to Nativescript – a new JS Framework (I know…but this one’s different!) that aims to bridge the gap between Web and Mobile development.

I’ve tinkered within the App development scene in the past and looked at several platforms that aim to do a similar thing – platforms such as PhoneGap. However the problem is that when developing outside of the native language of the device (iOS, Android) you will always come across something that you can either not do, or your code becomes buggy as hell.

Nativescript translates your javascript files into Native code – aiming to seamlessly integrate into the OS of the device.

There appears to be some great additions such as the XML based view system and CSS sub-spec that would make the transition from Web developer to Native Script developer really rather simple. I’m definitely going to try this out over the next few months to see if it does indeed fix the cross-platform issues that generally occur through JS mobile app development.

For an introduction to NativeScript – you need only visit their website.

A Primer on Performance – Una Kravets

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

If you’re a developer looking to improve the performance of your websites then Una Kravets (@una) talk would have been right up your street.

The key things to understand are that performance is the developers job and that usability is far more important than beauty. Just like security, performance sometimes takes a back-seat when developing websites. It’s got to look good right? If it looks good then people will use it? Wrong. People can’t use your web application if it is frustratingly slow to operate.

Una gave some fantastic simple tips on how to easily improve the performance of any website by implementing image optimisation techniques. There are many ways to optimise images but, like most people I prefer the less time-consuming method of having it done automatically for me by using a task runner such as gulp and a plugin such as ‘imageMin’.

Una explained that CMAT is a core set of principles that we must always think about when optimising our websites.

  • Concatenate (less requests on the server)
  • Minify (smaller requests on the server)
  • Async (loads stuff at the same time)
  • Test (if you don’t test – you don’t know what needs improving)

An important point that Una made is that when accepting a project you should always set a performance budget. What is the optimum time for this application to load? What needs to be loaded first? What is the critical rendering path?

It has been a hot topic for years and I’m glad it’s still being spoken about at events such as this.

Una’s slides can be found on GitHub – just download it and boot it up in a browser.

Staying ahead of the curve – Trisha Gee

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

Trisha Gee (@trisha_gee) from JetBrains talked about the problems companies face when changes in technology or skill set are required. She then took us through a number of useful approaches to facing these problems head-on such as implementing new technologies into the business in a gradual manner (do not experiment in production!).

Testing new theories in spikes (prototypes), internal tools or brand new projects is the way to go. You learn something, test it and deploy. Once happy, you should then consider implementing into other parts of your business.

Trisha also told us to watch out for time-wasting up-skilling. That is to say, spending a lot of time learning a tool or technology (JS framework anyone?) that may or may not be around in 6 months time. However, there are benefits to allowing your teams to up-skill themselves and Trisha mentioned a few interesting ways to get your teams motivated towards self-learning:

  • Online courses
  • Pet Projects
  • Open source contribution

Also as a company you may feel that you need to be taking more proactive steps towards helping your team up-skill. Hack Days, Conferences, and company-hosted user groups can all help towards this goal.

If investment is up-skilling – what’s stopping the developers leaving. If we don’t invest in letting them up-skill they will leave anyway.

Trisha’s slides can now be found here.

Building Happier Engineering Teams – Oren Ellenbogen (ear, elbow…)

Photo by Katura Jensen (http://bit.ly/1iyuLKj)
Photo by Katura Jensen (http://bit.ly/1iyuLKj)

Ear-Elbow man aka Oren Ellenbogen (@orenellenbogen) had the task of performing the final presentation of the day and talked about how different companies have different criteria that they focus on when building happy development teams.

Typically each company should focus on at least one of the following key aspects of a web developers understanding of their work:

  • Purpose (the developer knows why they are doing it and are behind the purpose)
  • Autonomy (the developer really ‘owns’ the project and the way they develop it)
  • Mastery (the developer is in a position to improve over time)

The important thing to realise is that not all companies can be awesome in all three of these areas. They’re sliders – not a checklist. Building a company culture code is a good way of defining (and understanding) what your company culture really is. You should then go out and hire people who will succeed because they match your culture fit.

A few great examples of culture codes can be found from NetFlix and HubSpot.

Another great section of the presentation was the definition of the pessimistic organisation and an optimistic one.

A pessimistic development organisation feels that:

  • Changing code is dangerous
  • Little trust that things will turn out ok
  • Leads to a slower cycle of changes due to too many checks

An optimistic development organisation looks to implement:

  • Continuous deployment
  • If something breaks – fix & re-release
  • Automation & Testing

Oren’s slides can be found here.

Sponsors

Who ever mentions sponsors in a conference write-up? Well me actually, and for good reason! Food, drinks, goody-bags. All of these would never happen without good sponsors and it’s only fair to mention the good people who come along and peddle their wares. Unfortunately, I didn’t get to speak to all of them but those I did speak to were friendly and really eager to talk about their respective companies.

A full list of the sponsors are available on the lead developer website.

A quick shout-out to HIRED whom I have heard of through their sponsoring of Full Stack Radio – a tech podcast I listen to frequently. They’re a developer-specific recruitment agency who have recently set up in the UK. Something very interesting that they told me was that they’re soon to be releasing a tech-sales branch of their business – where agencies can find top salespeople with experience in the digital field.

TLDR;

If you’re lazy (like me) then you’ve come to the right place! To sum it all up – definitely go to this conference if you’re:

  • A. currently in charge of a team
  • B. going to be in charge of a team
  • C. aspire to be in charge of a team

It’s team-based. Although there are a few sparkles of technology-based talks, the majority (and surely the overall impression you will get from the day) is all about tips, tricks, and hard-learned lessons in how to manage a team within the tech industry. Whether you’re from a Software Company or Web Development company (like us) you will find all the talks in some way relevant to your day-to-day management.

My best bits? Dan North’s “Beyond Developer” talk was truly inspiring, mix this with Camille Fournier’s “Cloning yourself is not an option” and Patrick Kua’s “Riding the Paradox” and you have a truly potent cocktail of TRUTH-NESS.

How hard is it to go from being a developer to being a LEAD developer? Well that depends on the person I suppose, but when you’ve seen these three talks you will certainly realise that it’s not as simple as it may appear.