The Frustrations of the Journeyman
I was a .NET programmer from almost the beginning. I did a lot of work in 1.0 and 1.1, and was excited when things like generics and anonymous methods showed up in 2.0, and LINQ1 rocked my world (and still does) in 3.5, and more syntactic good stuff in 4. But I often wondered what it would be like for someone new to .NET in 2013. It was easy to learn the new stuff as it came out; it always built on existing technologies and smoothed rough edges. But to jump in without having several years of background? What would that be like?
Well, now I know. I had grown kind of tired of .NET after doing it for ten years and needed a change. I decided to make the leap over the summer and focused on Rails and iOS.
The most frustrating part of this changeup has been finding work that I want to do. I tried a bit of a moonshot and tried to land a job at Github. I did get an interview and it went pretty well, but they decided to go with someone with more experience in Rails. I don’t blame them for that, they probably got dozens (or more) applications from people who had been working with it for years and could hit the ground running. Still was a bit of a bummer though.
The good news is that I’m having an easier time sliding back into Rails. Web development is mostly the same if you’re using curly braces or not. I had done a big project in it a few years ago and all of the paying work I’ve had since the leap has been with Rails. I’ve learned how to write a DSL and shipped some gems and other nice things for my clients.
iOS is a tougher racket. It’s has been around for about 5 years, but the underpinnings of it date waaaay back to NeXT in the 80s. Needless to say there have been quite a few updates to it over the years. Sometimes it feels like drinking from the firehouse to pick things up in it.
The worst part is that I know I’m missing stuff. When I was developing Zartbonk, one of the earlier iterations wasn’t working quickly enough to smoothly scroll across the screen. I happened to come across this section in an obc.io article and realized I wasn’t setting the
opaque property correctly on most of the views in the app. 5 minutes and a few checkboxes later I had a 10% boost in frame rate. It makes me wonder what other low hanging fruit are out there that I’ve missed.
That feeling can be demoralizing, but fortunately I know that coding is an iterative process, and there is measurable improvement in my iOS code just over a few months. I just wish I could download the whole Cocoa Touch library to my brain Matrix style.
Since that won’t work, I’ll just keep trucking. My first iOS app is pretty much done (with a few more fixes and features to add). I have a good idea for my second. As the reps increase, so will the quality, and so will the work.
- Seriously guys, LINQ is one of the best language features I’ve seen, ever.