I had the opportunity to present a couple of sessions at the inaugural Dev Fest Fam conference today.
I’ll predict your next question: “Is this what has been keeping you from posting the sequel to 2014 Developer Learning Guide Part 1?” The honest answer is no. I’ve been busy, it’s true, but I want the next installment of this post to be very good so I’ve been particular about publishing it until it is 100% ready.
This conference is a fantastic idea! It was put on by a couple of local Google User Groups and hosted at Utah Valley University. For a first time conference, it was great and I have the feeling it will only get better. The beauty of it, was that coders/programmers/developers/engineers were to bring not only their spouse or significant other, but also their kids.
I took 3 of my own and they LOVED IT. My 10-year-old daughter coded all night long until it was time for her to go to bed after we came home! So cool!
My first session, “So You Think You Want To Write Code?” was a big hit and well attended:
The second was at the end of the day and was titled: “Websites for Smarties”. It was a beginners hands-on-session teaching the basics of HTML. I used w3schools and Google Sites as resources for teaching. I won’t post more on that here.
So You Think You Want To Write Code? Resources
The slides from my session “So You Think You Want to Write Code?” at Dev Fest Fam 2014 for kids age 8 and up.
The videos played:
I also handed out a flyer with the following information.
This is part 1 of a now complete series of blog posts. Be sure to read 2014 Developer Learning Guide Part 2 and Part 3.
I originally wrote on the subject of developer training in 2010. It was with the idea that I would convince management of the importance of training technical employees. I wrote an internal document for my boss and we implemented a couple of the ideas. My boss was understanding although his boss was less so and that limited some of our options. One year (and one move to Texas) later and I was back in the same boat; I was handing a document off to my boss and trying to convince him of its validity and importance. We eventually started some great traditions at that company and I ended up publishing my Guide To Developer Training For Managers on my blog around the same time. As I started looking into moving back to Utah in late 2012, I was despairing that I would forever have to sell leadership on the value of developer training every time I came to a new company… can you say facepalm?
It occurred to me that I might be taking the wrong approach. As I ramped-up on interviews I noticed that a couple of companies stood out because they already had begun to establish a culture of learning. I’m happy to say that I chose one of those companies and today I enjoy a work environment where leadership not only “gets it” but is an active promoter of learning and training. Ideas that are brought up to improve training are not only appreciated but are also seriously considered. And I don’t even have to write a long and windy proposal first.
What a difference!
I’m still going to talk briefly about a few of the reasons developer and technology employee learning is important. Convincing managers will no longer be the major focus of the article. As you may have noted from the updated title, I’m refocusing to list learning options that are possible, valuable, and current. I’ll also post an updated list each year.
The anecdote I’ve heard several time goes like this:
Decision Maker 1: What will happen to our company if we train our technology employees and they leave to find better jobs elsewhere?
Decision Maker 2: What will happen to our company if we do not train our technology employees and they stay?
Two varying points of view obviously.
On a team where learning is not important, developers tend to stagnate or move on. Will the best talent stay in an environment like this? I’ll spare you the A, B, and C-Player talk. It should be sufficient to say that a lack of learning isn’t healthy for development culture.
Ultimately, it is the responsibility of the developer to seek learning and the best developers know this. Are the best developers going to be working for companies without a great learning culture? That scenario seems unlikely to me.
There is a wide spectrum of cost among differing methods of learning. A good mix assures plenty of coverage without completely breaking the bank.
This list is meant to be only as inclusive as I could make it given my current knowledge. Please leave a comment or contact me if you know of options I’ve missed.
This is usually one of the best places to look for technology-specific and implementation-specific training. There are multiple options and they are growing all the time.
Free – YouTube, Vimeo, Egghead.io, Channel9, etc.
The quality of free videos varies. The only advice I can give, is to avoid wasting time with something that doesn’t seem valuable pretty quickly.
Subscription – Pluralsight, Wintellect Now, Lynda.com
Subscription-based video training tends to be pretty well curated by the company selling the subscriptions. They rely on ongoing subscriptions for revenue so new high quality content is constantly being released (or the model is not successful). Pluralsight (http://pluralsite.com/) in particular has an enormous and constantly updated library… and no, we aren’t affiliated. Pluralsight has purchased several of the smaller players to help build out their library over the past couple of years. Subscription may cost as much as $499 per year, and is a good return on investment if you learn well this way.
Purchase – Udemy, Cleancoders.com, etc.
These tend to also be of higher quality than the free options in my experience. There are some great sources out there… but you may have to hunt for them. Word of mouth has been valuable to me here.
There are a wide variety of options here. Find people who talk about things you are interested in and subscribe to their blogs or follow them on Twitter/Google+. In my experience, many of the thought leaders in the developer community are on Twitter. This has the added benefit of allowing interactions if you have a question about someone’s latest tweet or blog post.
Podcasts can also be very, very good as long as they aren’t too sales/technology focused. Choose wisely. I find them particularly useful for long commutes. HerdingCode (http://herdingcode.com/), Ruby Rogues (http://rubyrogues.com/), and Writing Excuses (my SF/Fantasy writing guilty pleasure) are among my personal favorites. A good podcast app is a must as well… downloading all the episodes manually can get tedious.
This is where the cutting edge lives and breathes. If you want to know what is really happening you should be reading and hopefully contributing to this kind of content.
Open Source Repositories
This is the section for Github, Codeplex, Google Code, and Sourceforge. Github is definitely the current leader and you can find awesome and interesting code in any of these repositories.
Looking at how other people code is a great resource for learning. Additionally, submitting a pull request to an open source project can be the fast track to learning (albeit a potentially humbling one). Humility is a good thing, it lets us know where we can improve.
My thought is that when you are really looking to deepen your knowledge on something specific, books are a great resource.
There are also many classics that are as close to timeless as you can get in this industry. I highly recommend books like The Pragmatic Programmer, Clean Code, The Art of Unit Testing, Design Patterns, and Domain Driven Design as examples of excellent resources for learning practices and patterns or as reference material.
Books are available in several formats as well: hard-copy, ebook, and subscription.
Hard-copy and ebooks are basically just a matter of preference. I find that I like having a hard copy of books I might lend to others, but nothing beats the convenience of an ebook that you can read on multiple devices. When I have the option, I get both.
Subscription to a service that provides ebooks can be really handy as well. Particularly if you find yourself reading a lot of technology-specific books. Safari Books (http://www.safaribooksonline.com) offers hundreds of titles on technical subjects for $199 or $460 annually.
First things first, why on earth would you want to train developers? Isn’t that just an added expense? This is a fallacy for a several reasons including the fact that:
DEVELOPER TRAINING DOESN’T HAVE TO COST ANYTHING
More on that part later!
Development training and continuing education is vital to companies that want to maintain a healthy and satisfied development group. When we opt to invest in training, we are choosing to retain valuable specialist employees and to teach them to be more effective at what they do. This has multiple benefits for the company and the employee:
Efficiency/Simplicity – Employees become faster, more efficient, and make fewer mistakes when they have hands-on training in best practices. This also results in a simpler and more easily maintained code-base.
Hiring – A great training program for development is an excellent selling point when looking to attract new development talent. Top tier developers want to surround themselves with others who are as good or better than themselves. A great training program is a good way to develop that talent and is something top talent looks for.
Preparation – Developers with training in upcoming technologies are quicker to see how they can implement them in their organization to the good of the company. These developers are better able to see industry and social trends which can give your company an ongoing competitive advantage. Also, they will be able to point to reasons why a new technology choice may not be right for the company. When the company’s bottom line is healthier, everyone wins.
Teamwork – Developers who train together work well together. They tend to develop camaraderie and work more effectively at solving problems as a team. Training together also helps expose developers to each other’s strengths.
Job Satisfaction – Well trained developers are are learning developers and let’s face it… if we didn’t like learning we wouldn’t be in this profession. When developers begin to feel stagnant they may start looking for work where they can grow or they may also become careless and write poorly thought-out code. A good training program will help to keep developers satisfied and satisfied developers don’t go out of their way to look for other employment. This allows the company to retain their existing workforce longer and save the money and overhead involved in hiring (training, recruiting fees, bonuses).
Potential Technology Training Topics
Topics should be chosen based on their applicability to the needs of the business. No responsible developer would expect otherwise. Also, real business problems should be given to help teach theoretical concepts through workshops (more on this below).
Methods of Training
Technology training can be very expensive if allowed to be. Hiring outside training companies, attending seminars, and certifications should be supplemented with sessions presented by internal experts, videos freely available online, and book discussions.
Valuable employees should be encouraged to train on their own time in addition to being given training on company time. This give and take approach will help your company realize the best gains by encouraging a knowledgeable and proactive culture among developers.
Online Videos 1-2 Hours – Daily/Weekly/Monthly Free These can be held during lunch or outside normal work hours. If a developer misses the presentation they can catch up on their own. A great resource for Microsoft related videos is http://channel9.msdn.com/
Developer Presentations 1-2 Hours – Weekly/Monthly Free Could be held any time. Presenters should be by volunteer only. Topics should be in line with the current curriculum.
Workshops 2-4 Hours – Monthly Free A workshop should follow a series of videos and/or developer presentations that cover the same or similar topics. No specific homework but the implementation should be something of value to the company at least as a prototype. Sessions held during business.
Workshop Follow-up 30 Minutes – Monthly Free Developers present their solutions to the workshop problems. Should take place a few days after the initial workshop.
Book Discussions/Club 1 Hour – Weekly Cost of Books (Free-$80 per participant) Developers vote on and read a technical book each month and discuss it for an hour during lunch or work hours. Books could be purchased by the company or by the developers. There is a lot of great free material for discussions available online as well.
Onsite Training Seminars 1-N Days – As Needed Varies: $1000-5000 for up to 25 attendees An inexpensive, onsite training. The internet is your friend… do a little research and you can find many companies offering this type of service.
On-Demand Video Training 1 Year – Annually $100-500 per user This type of training can be handy because is is available at any time and the people who produce/present are professionals who are not only experts in the field but can also give great presentations. There are several providers of this kind of content including Tekpub, PluralSight, and Peepcode. ** http://pluralsite.com/ http://tekpub.com/ https://peepcode.com/
**Tekpub and Peepcode have been purchased by Pluralsight since this was written. Looks like we’re going with Pluralsight!
Safari Books Online 1 Year – Annually $199 or $460 per user Safari Books offers hundreds of titles on technical subjects related to the development profession and Microsoft specific technologies. http://www.safaribooksonline.com
Offsite Development Conferences 2-5 Days – Annually $500-5000 per attendee These are the conferences that really get the creative juices flowing in developers. Most major tech companies have at least one developer conference per year (Google, Apple, Facebook, Microsoft). Most companies with a decent training budget send their developers to one per year (almost never 2+). Estimated cost includes hotel and transportation.
Certifications Varies – Varies Varies Some companies pay for developers to train for and take development certification tests.
Graduate Degrees/Tuition Reimbursement Varies – Varies Varies Many companies offer to reimburse employees engaged in higher learning. This is another great opportunity. Encourage your employees/coworkers to take advantage of this benefit if it already exists!
As you can see, the options for training developers run the full gamut of price, time, and commitment. The great news is, even if your company has little or no budget for training, all you need is a couple committed developers to get started with the less expensive (free) types of training. Now is the time to start training so that your company will attract, retain, and benefit from more highly trained and competent developers!