In this article, part of my series explaining better ROI from software development, I’d like to look at encouraging learning.
I've written previously about how complex IT and software development is. Not only is it complex; it is also constantly changing.
As such for me the ability to learn is one of the key characteristics required by an IT professional.
So how does this relate to ROI?
Simply put, the better trained an individual is the better productivity they will have. Better productivity produces a better ROI.
As I've said, software development is complex and constantly changing – that opens a lot of possibilities for efficiencies.
It certainly isn't uncommon for one developer to looks at a problem and take 2 weeks to solve it, while a second developer will know a better easier way and have it completed in half that time.
The result will be the same, but the second developer was aware of some technique or set-up that allowed for it to be completed in a fraction of the time.
As one practical example; within software development there are many “libraries” available. These libraries are pieces of software that can be composed into your software development. Think of it in the same way as buying pre-made cabinets for your kitchen rather than making them by hand – you are saving time because a lot of the work has been done for you.
There may be trade-offs with using libraries in our software development – the effort taken to learn or adapt it for our use, any licensing costs, etc. But in a lot of cases using those libraries will save time and effort.
But how do you know they exist? How do you know they will fit your project? That is where the learning comes in.
Libraries are only one example – but a good example of why it is useful for your team of developers to keep abreast of what is available and what can be useful to them.
Note that the above is also a great example of why you want your developers working as a team rather than as a group of individuals. Even if the first developer carries out the work, you’d expect that in team discussion that the second developer would put forward their faster solution.
So how much is that increase in productivity worth to you?
Let’s say you have a £30k developer. A 5% increase in productivity gives you £1.5k increase in their value – so its easy to see that investment can be well worth it.
Ok, let’s assume I've convinced you that training is a great idea and you want your software development team to learn lots more.
From personal experience, you can’t force them to learn. You can only encourage and provide an appropriate environment.
You will always get the best results if a person wants to do something. And while someone can want to do something because they have a choice between doing it or being fired – it hardly creates a motivated attitude.
Some people will simply have no great interest in learning more. They feel they are happy with where they are and will actively push back against any well meaning attempt you make to impose.
In those situations, I would still try to make resources available for learning – just make it an opt in.
A personal comment on personal development programmes; these are generally always universally poorly received. Any professional that has worked for a period of time will have been “enrolled” into such a program – where targets & goals are set and then the individual is monitored against those.
From personal experience, even those that have the best of intentions from the outset become more a stick than a carrot – and unfortunately that is exactly the same for most professionals that have had to go through them. They become an “easy” method to penalise an individual for not hitting a target rather than rewarding those that do.
So while I like the principals behind a lot of the personal development programmes, I’d certainly recommend keeping learning separate – otherwise it instantly starts having negative connotations.
I'm happy to admit that I give different advice on this to a software developer. Certainly different than I have in the above.
For a software developer, I would tell them that their employer is not responsible for their career – they are. They should be investing time and effort to remain current and, to be blunt, employable.
If they are not actively managing their own career then they have no control over their future income.
I will tell them not to expect anything for their employer. I will tell them to learn off their own back, then demonstrate to their employer that they are learning and ask for help where possible.
And if I'm honest, I do believe the responsibility rests with the developer.
But, there is the productivity improvement available to you as a business if they do. So why not encourage them?
The great thing is that there are so many ways to learn these days. When I started the only real option was to buy an expensive book. I often found myself spending up to £50 per month on books – some of which I only needed a few chapters.
Now so many things are available, if not free, then exceptionally cheaply.
I'm currently spending a considerable amount of time on my own learning. I'm working full time, but I'm putting in somewhere between 15 to 30 hours of learning every week.
And I'm loving it.
The paradox is that the more I learn, the more I realise I don’t know.
I'm not trying to blow my own trumpet with the hours. I'm also not advocating that everyone needs to do that level. Rather it is a demonstration of how important I think learning is.
When I interview candidates, one of my favourite questions is to ask how they keep up to date with technologies. And I will dismiss otherwise great candidates if they show no interest in learning. Anything else would be short term investment with a rapidly diminishing return as they become less and less current.
For the rest of the article I’ll look at some of the resources I use.
I'm spending over 2 hours in commuting daily, so podcasts are a great way to keep up to date. They can also be used while exercising (not that I do anywhere near enough of that).
There are thousands of podcasts out there, but for me these are the ones that I regularly listen to:
Most of Podcasts will provide links and additional information on their respective web pages – great if anything needs following up.
The InfoQ website provides lots of development news, articles and videos from conferences.
As someone what doesn't have the opportunity to attend conferences (see below) then recordings are the only way I would get access to that level of insight.
Most of the time I will download the audio file of the conferences and listen to them on the commute. Few of them actually need the video content – and should I need then I can always add to the reading list operated by the website to come back to later.
I’d certainly suggest that any developer sign up to the email newsletter which signposts new content.
I'm a great fan of Pluralsight.com – an online training site. It is a paid for site – but I personally find that it is certainly worth every penny.
A standard licence is $299 per year (or $29 per month) and provides access to a massive library of content. For me, that is such a small investment for a company to make, that it is pretty much a no brainer.
There are other similar services available – so get your development team to shop around and use the various free trials to see which fits.
There is still a place for books in this fast moving world. I generally however get books which are more concept or practice based which will have a long (3 years+) lifetime. I tend to steer away from technologies that are changing on a regular basis – the web is just a much better source of info.
More recently my books have been more people management advice than technical. For example, I'm currently reading “How to win friends and influence people” by Dale Carnegie – really cannot understand why I've never read it before.
Open Source Projects are a great way for your development team to work with, and learn from, some of the industry’s best.
Open Source Projects are generally software libraries that are available to anyone to contribute to and improve. They welcome any form of help that can be provided. So it can be a great way for a developer to practice their craft and improve quickly.
For example, I've previously contributed to a project called Octokit.net. The details of the project aren't important. But it has given me the opportunity to rub shoulders with some of the celebrities in software development.
For the improvements I made, I received these thumbs up from Phil Haack (talk to your development team – they’ll explain). I was so proud.
Aside from the kudos of such feedback, by studying how they projects have been built I've learnt a considerable amount on best practice.
It is also a great way to give back to communities that you are probably already benefiting from.
Industry certifications are a great method of learning more about a subject.
Certifications will generally require a developer to explore a subject in depth – much more than they would through day-to-day activities.
For example, I've put myself through the Microsoft Certified Solution Developer in Web Development. I originally put myself through it because I’d tried to put one of my development teams through it. A good team, but they struggled to pass the exams. I wanted to understand why.
I soon found that even though I knew enough to get the job done – it wasn't enough to cover the full scope of the exam. It forced me to learn more about the subject – ultimately making me a better developer.
Meet ups and Conferences are great opportunities for like-minded professionals to network and share knowledge.
While conferences will be generally made of multiple presentations to an audiences (generally on a defined subject), meet ups are more face to face sharing knowledge.
Both are a great way to learn.
Sometimes simply providing your team the free time to think can help. It is so easy for the team to get caught up in the day-to-day stresses and sometimes you need to encourage them to step back and take stock.
Google made a big thing a few years back about their 20% innovation time. It was where they allowed their staff 20% of their working time to work on anything they felt needed attention. At the time Google attributed may innovations to that policy. Some years later a number of articles debunked this ring fencing, and in reality it was 20% time on top of their normal activities making it 120%. But for me this still feels like they had produced an innovation culture and reaped the benefits.
I have personally experimented with a similar initiative. I allowed my team 1 day per fortnight to innovate. This worked very well initially with a lot of learning and long standing problems being addresses. Over time however the business became more demanding and we were unable to protect that time – and it soon became absorbed within the day-to-day.
This is quite a shame as the benefits we had been receiving would have made for greater productivity over the long term than furiously working on the immediate term.
Inherently I believe that there can be great ROI in providing free time (be it to learn or to innovate). This maybe something I dig into in a future article.
I firmly believe that training and time to think are incredibly important in Software Development.
I love hard work and will always applaud someone that shows a lot of effort. But often you’ll find that better learning could have produced the same result but with better productivity.
“Work smarter not harder”