Test Your Might - How I’m Getting up to Speed
Purpose of these blogs #
I see the fundamental audience of this blog series as other potential LaunchCode candidates or anybody interested in the process, and then, due to the nature of the content, a tertiary audience of anybody who wants an inside view of how Efeqdev operates.
Secondly, experience is like fertile ground. Fertile ground produces little unless it is tended to, and experience bears only rudimentary lessons unless it’s mused over and reflected upon. This blog will serve as the mechanism for that introspection and also as candid documentation of what I’ve been doing.
What I’ve learned so far #
Let’s start with the technical stuff. I’m starting to wrap my head around Ruby on Rails and becoming comfortable in a Vim/linux environment. I’ve worked through almost all of the relevant examples in Agile Web Development with Rails & developed a functional online depot app - an editable item catalogue complete with cart & order processing (short of actual financial transactions).
On my own, with the guidance of the other Chris, I’ve created a simple to-do list for creating and editing lists of tasks. The depot app was a nice aerial tour of Ruby on Rails, but this to-do list is what’s driving my programming agency from vaguely knowing what’s going on to having a specific, laser-focus on the best way to implement features useful to people in production. Actually this would be a great time to introduce the snapshot template I made to track my progress:
Lost to the sands of time! :'(
This chart pulls from two different places. First, there’s a learning model I really like developed by Scott Young. The way he models learning really fits my experience. There’s the acquire phase, the understand phase, and the application phase. The ultimate goal of the learning process is to create a mental model of whatever you’re learning such that you can retain and apply it as fast as possible and integrate it with all the other learning you’ve ever done. That explore-debug-apply section up there is the refinement of this mental model through experience and other learning.
Then, to track the actual progress of where my model refinement is at I drew from The Elder Scrolls skill-progression and added my own stuff. If you’re not familiar with that realm of geekdom, ability at a specific skill is measured by a number 1-100 with 100 as the highest. Inside that scale, there are various ranks: novice, apprentice, journeyman, master and grandmaster. Each rank denotes what tasks you’re actually capable of based on your proficiency in that skill. This system is a surprisingly natural fit to gauging my personal progress. Readapted, there’s the Rookie/apprentice phase (0-25 for you real nerds), novice, expert, then instead of master/grandmaster I synonymously used “zombie god.”
As I progress through this process, I’m recording exactly what I do in terms of reading, what concepts I learn and what problems I tackle in code so that after I’m done, I’ll be able to go back through and attach specific tasks and concepts to each step of the progression. This will create a streamlined “Ruby on Rails” track so anybody after me can jump in on and immediately appraise their current level compared to what we need them to be at for Efeqdev. So let’s get specific:
Ruby #
I’m able to pretty much hack my way through any problem in somewhat acceptable object-oriented form, but likely the code I write right now will actually be mostly Java disguised as Ruby, although I’m picking up the Ruby way of doing things and can refactor into incrementally improved versions of it. If you think of Java as a reliable old Honda Civic, then Ruby is a V8 Mustang. You don’t drive a sports car like a Civic, that's just a crime. You let that baby roar. I’m learning not to crash the sports car. So I definitely still gauge myself as a novice.
Rails #
To keep with the vehicle analogy, Ruby on Rails is a freaking fighter jet compared to Ruby or Java alone. As mentioned above, I’m able to start implementing some stuff in Rails, but I need to learn a lot of Rails conventions and tools before I’m able to launch precision strikes. Well I’m gonna move on before this metaphor gets any more ridiculous.
Business #
Given that we’re a flat company, each one of us needs to understand who our customers are and how we can provide the most value to them. This means we need to prioritize working on what’s most important. In week 2, I’m still getting exposed to how it all works and soaking it all in. I’ve always had a penchant for business (I’d read Drucker books for fun in college). The problem is “book smarts fail hard.” I had a lot of theory running through my head but nowhere specific to actually apply it.
As a part of this effort, I ordered and read “The Lean Startup” by Eric Ries. The book introduces an amazing system which seems like a good tool with a large variety of applications inside Efeqdev. I’m abstracting out all the concepts and ideas in the book into another rubric we can all use to kind of land ourselves or a client inside of the system and start applying it. Right now I’ve got maybe 20 pages of the book left to get through. Basically, this book gives me a satisfactory answer to the question, “What’s the most important thing I can be working on right now?”
The ideas I synthesized out of the book & my time here so far gave birth to an idea on how we can market and position ourselves, so I gave a little presentation on it and MAN did the ensuing discussion generate some awesome ideas we’re going to explore.
Now that I’ve introduced my snapshot system, I’ll update my technical progress with a picture of my weekly snapshot and go more in-depth on any necessary points. In fact, I think developing a Rails app around this snapshot process and adding on useful features as I need them will serve as a great learning tool as well as letting me automate for further new hires and maybe even expand it to other technical domains we enter. Internally, Chris Oliver is creating an awesome tool to manage projects and scale our flat structure while we grow as a company, maybe I’ll integrate this concept with that.
Next week I’ll go more into the personal side of what this process has been like.