Study Hall

Application Development and a Personal Trainer

I have been thinking about how a personal trainer for working out would translate to application development.

One area I where I'd like to improve is staying motivated and on track. I don't think I am alone. When it comes to working out it is not easy for someone to just knock out a 1 hour workout and truly push themselves beyond their limits. Having a trainer there to push you and move you beyond your comfort zone makes all the difference. So I have been asking myself how this could be done for software development.

One workout program is called Couch to 5K which is a progressive program starting with short distances and walking and working up to running a full 5K. I know this program works and if I were to equate this to software development it would be building small apps or even just parts of an app starting with simple tasks and progressively adding more complex tasks all the way to building a fully functional app with many features.

Scott Hanselman does what he calls code reading.

By going over software projects and learning how they think and how their apps are built you can learn style and technique and draw from that experience when you are building your own apps. (And have sample code that you wrote and understand that you can use.) It is like when I was in college and several of my friends who were music majors would be assigned to listen to music so they could understand it better so they would be better at playing and writing music.

Most of the apps that we use may not be Open Source so we cannot read through that code, but quite a bit is. The Facebook app for the iPhone is built on a library which as been released to allow anyone to make use of all that code. We could read it and learn a lot from it. But jumping right into it as a novice Objective-C and iOS programmer would not be a productive practice, just like you would not want to get off the couch and start running a full marathon. You gotta work your way up to it.

Other great open source projects are...

And while I have my head in code a lot, I believe I could do a lot better if I were to do more practice coding and code reading. I have a backlog of sample projects and blog posts that I plan on following so that I can learn more about how things work so that when I need to do the same I already know how to do it.

When I work on iOS projects I find I am always learning and figuring things out. I have felt like I was falling short of what I have done with other programming languages and platforms. But I recently learned this is pretty common.  With web development I have built many web sites which often do the same thing, so I have repeated the same tasks and improved on them. For a mobile platform there are so many new uses which means each new app is often doing something I have not built yet. I find I also have to work with a different part of the iOS platform that I have not touched before, like CoreAudio, which is a rich and complex framework that allows you to do a lot but it requires considerable preparation.

So I would like to propose that we start doing some code reading together. I want you to be my workout partners and want us to push each other. We can start with small things and work our way up to running a full marathon in under 5 hours.

I am interested in getting better at the following technologies.

I know others would like to cover the following areas:

In the course of 6 months I expect we could all learn a lot.

I plan on having Study Hall sessions at my office on Wednesday nights from 5 to 8. I have conference tables set up with a 37" screen for working as a group. We could take 30 minutes to read over some code and write up a blog post on what we learn. Once we learn a few things we could challenge each other to build something based on what we have learned. We could post the code line and point to it from Twitter using the #devmke hashtag.

My space in the King Building has multiple conference table set up with a 37" LCD for group sessions as well as a more casual sitting area with a projector. There is also high speed WiFi available. Everyone is welcome to use the space during these 3 hours to work with each other or alone on their projects.

Interested? Please let me know. (@brennanMKE)