Gerard Condon's Blog

Journal of a software developer.

Year Update and Reflections

It’s been a year, give or take, since I started looking into iOS development, and I wanted to write a post to reflect on where I am and what are the next steps.

Progress on iOS to Date

  • I spent the first three months of the year learning Objective C and hacking on some small programs.

  • I spent some time experimenting with Core Data and MVC and trying to get an automated testing system up and running.

  • The summer months were quiet due to work commitments. The project I was working on switched to JavaScript which I hadn’t really used before. Due to this, I spent a lot of time learning JavaScript and web frontend and backend development.

  • After the summer I came back to the app with a better understanding of MVC as implemented in iOS and Core Data and I started working on it again. I read up on TDD and started implemented tests using Cucumber and Calabash. That took me up to about October.

  • Work has stalled on it since then due to a combination of real life commitments from both family life and work. And also Skyrim! Curse you Skyrim and the hours I sank into it :)

Current Status

Here’s where I am currently

  • App work: I didn’t get as much done as I had planned at the start of last year. I got diverted in other areas, namely:

  • Testing - TDD & BDD: I hadn’t planned to look at any of this but ended up spending a lot of time here and learning a great deal. Familiarizing myself with this way of programming was probably the biggest benefit I gained from the last years experimentation. I probably could have completed the app if I didn’t spend so much time on TDD and tinkering with automated testing setups on Jenkins. However I wouldn’t have learned anywhere near as much about proper programming techniques if I did.

  • JavaScript: I spent a good deal of time learning proper JavaScript development. The basic syntax is very similar to Java which I already knew. However I wanted to learn how to program using JavaScript correctly i.e. modular code using RequireJS, TDD using Jasmine etc.

  • Ruby and Rails: again I had not planned on researching any of this but I got interested in it while looking at JavaScript. Have done a few tutorials and would like to write a Rails app at some stage.

I spent a lot of time over the last year becoming proficient in web app and backend development in JavaScript for a work project. I’ve been really enjoying this. My only previous experience of JavaScript and web development was back in college around 2000 and I wasn’t too taken with it compared to Java and C development. But looking at it now and in combination with backends like Rails, I’ve been really impressed. I’m kind of kicking myself for tuning out on what was happening in web development over the past decade. I plan to branch out and do some posts on what I used to ramp up on this.

On the iOS front I feel that I have a good knowledge of Objective C. However the issue is finding time to finish the app. Any time I was able to set aside a sizable chunk of time I got a lot done but getting that time is the key.

Reflections

I think working on this side project has made me expand my horizons more as a developer. I couldn’t have predicted the areas that I would have become interested in at the start of last year. I don’t think it’s a coincidence that as I’ve started looking at more stuff outside of work, that my work projects have become more interesting. I feel like I’m able to bring so much more to a project now especially in the areas of TDD and design.

Admittedly I haven’t pursued the iOS work 100%, but I feel that the other languages I’ve been exposed to compensate for that. I think it was better to start out with iOS and then divert into other topics rather than not do any side work at all.

However at the end of the day the reality is that I haven’t shipped anything on iOS yet. I’ve been justifying this to myself by claiming all these other intangible benefits. Given what I’ve learned, I don’t think that I’ve wasted my time but still I’d like to get some iOS project finished. Unfortunately given my current life and work commitments I probably won’t have time to work on it over the next three months. In the meantime, I’ll post about my JavaScript and TDD experiences.

As regards the blog, looking back I am happy enough with what was posted in the past year. The main thing I’m not happy with is the regularity of the postings. The same things that have stopped me doing much software work, have also stopped me publishing much. In future I want to maintain a more regular posting rate. I aim to post at least once a fortnight and hopefully once a week.