The time has come. You see, I used to code. Indeed it used to be my career. Then I got involved in UX, learned the joy of prototyping, and now I don’t code. Well to be exact – I’m rusty. Oh, I can still hack scripts in python (mostly log analysis and text processing), and websites in HTML/CSS with a bit of JQuery.  I can quickly grasp coding/technical concepts while chatting with real engineers. And I’ve done a fair few Rails / Python / PHP tutorials. Still, every time I want to build something, it feels like I’m starting from scratch.  Its time to get my hands dirty again. And keep them dirty.

I’m setting myself a challenge. In 100 days, get up to speed with the state of the art in web technology. I don’t expect to be a full-time coder again but I want to be able to quickly engineer basic interactive web/mobile prototypes.

Why? Why not just build click-through mocks? Well …

  1. Engineering is fun and I miss it (even the debugging, sometimes …)
  2. I don’t want to be one of the people with a CS degree who don’t code anymore. There’s lots of us out there!
  3. Who knows I might join or start a startup sometime soon, and more hands-on coding skills would be handy

Its not going to be a consecutive 100 days. However, I’ll try and do at least 2 days a week. Each “day” will be accompanied with a brief blog post outlining what I did and why, and maybe a helpful hint or tip for people doing the same. My stretch goal: add to stackoverflow or similar discussion websites as and when I manage something and can contribute to online “solutions” (many of which are lacking).

Any tips/hints to tutorials/languages/frameworks appreciated! Else maybe I’m past it. What do you think?

Here’s my current hit list, and current skill level. I acknowledge that its quite varied. First I want to try a range of stuff out. Then towards the end I’ll focus so I’ll have a basic toolkit for prototyping. Thats the plan.

Languages

I intend to focus on python as my foundation. However I’m open to learning a new language if I need to. That might be Ruby or Javascript – we’ll see. I’ve dabbled in both but never achieved what I’d call “conversational competence”.

Web application framework

I want to get up to speed with an MVC web framework. I’ve dabbled in 3. I’d like to say I can develop in one. Here’s the shortlist:

  • Ruby on Rails (I did the excellent tutorial by Michael Hartl and produced a nice little twitter clone. However, I got bogged down deploying it to heroku, and Rails is so arcane! Expect a post or two!)
  • Django/Python web framework (recently did tutorials, but got stuck with some fiddly stuff like handling AJAX POST calls within the CSRF filter framework. Expect a post on that too)
  • PHP: Hello World and basic database calls
  • Google App Engine (python), just a bit of hacking with my pal Lindsey.

Web standards

Any web work requires a reasonable understanding of HTML, CSS. Again, I can hack. The “code” I produce is as ugly as hell. I can do better. Also I keep forgetting my CSS selector syntax. It’d be nice to remember stuff like that in my head.

 Admin/Infrastructure/Deployment

Along with the above languages, frameworks, and standards – any self-respecting developer has to know his database admin, source code control, and how to deploy. Django I’ve got running on Dreamhost as a first baby step.

Basic Mobile App development

Android or iOS? I want to play with both. My first post is actually going to be about getting the emulator working on MacOSX (which is not as trivial as you might expect).