Code Coaching

Posted by kdow on Apr 28, 2014 11:55:09 AM

How I’m trying to up-skill colleagues

I work in a company driven by engineers. In fact, the company has engineers in the most unusual of places. The companies’ priority is to build, maintain & sell software according to the golden rules of SaaS economics. To do that we have developers, support folks, sales people, account managers, marketers, etc.

I work in the EMEA headquarters, where more than 15% of our staff are developers. Our marketing director was a computer science graduate. As was our managing director. Two of our handful of support people are actively working to build some software projects while another was previously a Java dev.

I have no doubt in my mind that these guys & gals have a leg-up in their work because they know code. In some cases they don’t necessarily know enough to become full-time developers, but that’s not necessarily their intention either. As a result of this benefit, I took it upon myself to teach others to code in a once-per-week evening class in the office.

It began well

But all good ideas do start well.

Most non-engineering departments were interested in attending. I had to book our largest conference room (CR-Jobs) to facilitate the numbers. The plan was simple: to bring people from zero code skill up to being competant at editing HTML & CSS within a few weeks. I wanted to have marketers comfortable with seeing how <strong> or <i> tags affect their content without using WYSIWYG editors. I wanted that to be a framework for building out real pages with <div> tags being manipulated by CSS.

It kicked off really well. But the third or fourth week saw a huge drop-off in attendance. People got disillusioned.

The problem

People’s disillusionment stemmed from their acute fear of code. It’s the same thing as math in school. Everyone knows they need it and that it’s vital for their personal development in the real world. And that causes them to have an inate fear of it. Code in the modern workplace is the same thing. It’s hard, stressful but really beneficial, even at a basic level.

Those who stuck with it had managed to build simple but effective pages about their favourite subjects — cooking, marketing, etc. But everyone else was so far behind in a matter of weeks that the course now began to feel unstable. In order to have others catch-up, I would need to run another class.

Suddenly my nice idea to help people became stressful for me.

The solution

There’s always—always—a solution.

People are busy. Okay, I ran a straw poll to figure out what evening to run my classes on & people picked Wednesday. But quickly, as time moved on, Wednesday became an issue for some folks. Missing a single class became a problem because, although my slides were neat & clear, those without any code skill need a helping hand.

The dropout rate was large because people were too far behind & too scared to keep up. But they still had a strong & persistent desire to actually learn some code.

Understanding why folks dropped out is key to understanding how to enable some code skills in colleagues. So here’s my proposed solution:

  • Run the class for 30 minutes every week (as opposed to for an hour every two weeks).
  • Run that 30 minute session during the afternoon when everyone is in the office anyway. We have lunch catered in our office, so lunch time is the best time to run a “lunch & learn” format session.
  • Run the class alongside homework. Previously my homework was fluffy; “do what you learned today on your page.” Now, we’ll run alongside codeacademy.
  • Using codeacademy as the main point for learning to code, the sessions in-class will be Q&A style.
  • Every class will end with the next few tasks to do on codeacademy.
  • After getting a solid foundation, we’ll move on to teaching Bootstrap. We’ll also deploy the code to a real place where people can be proud of what they’ve done.
  • Everyone will pick a website, and commit to building it by the end of the course. “Hello world” is nice, but not useful. People hated math in school because no one related it to anything tangible.
  • These give clear goals/objectives. Every week the goal will be to get to the next section of codeacademy, while each week is building upon the idea of reaching that goal of having a website by week n.
  • Encourage reading by providing a reading list email each week.
  • Encourage collaboration by showing how tools like github work. I’ll also spin up a HipChat room for everyone.

The goal is to encourage a classroom style “check-in” to make sure folks actually engage with learning. But also using codeacademy we can encourage folks to actually code regularly. You can’t get a good grasp of coding, even on the most basic of levels, without actually coding regularly. If not daily.

Constant communication will keep me at the same pace as everyone else (I’m the first to admit I have a habit of blazing off into the distance with these things). It’ll force me to be patient with weaker colleagues who don’t have the time, energy or skill to keep up. HipChat will encourage everyone to help each other.

I’m glad I tried to teach people to code and it didn’t quite work as intended. My new iteration of this seems obvious. But it only seems obvious now. I will, of course, update when we kick off the new course & get going with it. Hopefully in a few months time I’ll be showing off templates built by colleagues who never knew a single thing about code!