Thursday, August 27, 2015

Modern Skills for Modern Content

As I mentioned in The Content Revolution, the standard for writing modern developer content is higher than expected in the past. In order to write this kind of content, you'll need a broader set of skills, and not just technical skills.

I defined modern developer content as text and code that shows a reader how to create and run a meaningfully functional process or application. But what does it really mean to develop meaningfully functional content?

  • Meaningful implies that you need to develop the ability to analyze existing content and determine what content is needed. You will need to interview and negotiate with client teams about what scenarios to cover.

  • Functional implies that you have to write code. That doesn't mean you have to be a professional developer--it simply means you have to be able to put together code that works. I typically need example code to work from and have used test code as a guide, and my coding skills are surely not the greatest--but I've cobbled together advanced demo apps.


In terms of technical training, I'd suggest that you:

  • Focus on proficiency in one programming language. You might be a code language polyglot and know a bit about many languages, but it doesn't help you as much in practice as having the concepts down. If you can code well in one language, you can figure out how to code in another. (I've chosen Java which is almost a two-for-one, it's so similar to C#.)

  • Use different development tools / IDEs such as VS, Eclipse, JBoss, or IntelliJ as much as you can. It'll broaden your perspectives and IDEs are your friend when you code!


  • Project management is a discipline applicable to any project, including construction. A formal PMP course isn't necessary, but wouldn't hurt. I strongly suggest learning whatever you can about project management. At the very least learn how to do a Work Breakdown Structure (WBS).

  • Test your code. I've taken a course in software testing, but honestly didn't get much out of it. As PWs we do a lot of testing, but it's not formal QA testing. We don't write test suites that probe every possible use case of the product. Rather we narrowly define a demonstrative scenario (or a few scenarios) for the feature. It's more important to learn how to use test suite code as a source guide for demo code--but that's the subject of an entirely separate article.



Not all the skills are technical though, so I'd also offer this general advice:

  • Find a niche. In the course of my work I encounter areas where confusion and need for direction exists in the developer community, such as deployment of apps in the cloud.

  • Interviewing and negotiation are soft skills that aren't really soft but rather critical. Because so much of our success depends on interviewing skills and asking the right questions, I feel Precision Questioning is one of the best skills to develop. Like, "do I even need to be reading this?" We also need to get better at asserting our professional advice to clients, so courses in negotiation would also be useful.

  • Blogs. I'd just as soon suggest you write a novel as write a blog. It's a big commitment. But there are side benefits. You learn more about blog publishing platforms. You can post tips you learn on the job, or bigger projects that are variations or improvements of work you've done.

  • Video. The future venue for technical presentations is video (maybe podcasting, depending on your field). I've learned a lot from online videos, and if you learn how to use Camtasia or an animation suite, you'll be taken much more seriously.

  • Social media. I've never been a fan of Twitter, but colleagues have told me that you can build a reputation by answering questions on certain niche tech channels. Slack is intriguing, and I'm a big fan--however, be aware that its reach is limited to your current organization. Update your profile on LinkedIn, and use it for networking. Have a separate email account that you use for professional networking and use this on LinkedIn.