I’m a teacher by profession. I teach business, marketing, and technology to teenagers in Lehi, Utah. I’ve run a few websites in the past, and done some Wordpress consulting on the side, but prior to this summer my only real coding experience was a C++ class in high school that went from awesome to painful when the teacher took an industry job midway through the semester.
I often wondered what different paths my life would have taken if that teacher had stuck around and I had continued to develop my embryonic programming skills.
With development bootcamps sprouting up around Utah, I felt like that would be the right way to catch a glimpse of my missed opportunity.
I enrolled in the Web Development course through DevMountain for my summer break, but when they announced the iOS Course and I learned that my good friend Joshua would be writing the curriculum for it, I jumped at the chance and transferred.
I had done some work that ended up in the App Store before. I founded Lift Media, a niche third-party ad network with Joshua in 2011. I also collaborated with him on a couple of apps in late 2011 and early 2012. But my contributions were always web-related.
Class started 9 weeks ago, and today my first app went live in the App Store.
Piano Timer - A Noise Activated Piano Practice Timer
The first 4-6 weeks of class were great. Hard, but great. The first and most important thing we learned was how to learn the iOS frameworks.
We worked on class projects, with great sample code and solution comparisons. We learned UIKit, data persistence, basic MVC, Core Data and networking. But what I remember most from those first weeks of class was learning where I could go to learn more and turn my ideas into code.
My first real experience building something extracurricular was building a simple little pomodoro app. It had started as a class project, but I built it up into a working pomodoro with project time tracking using Core Data. It was spaghetti code, and terrible, but I was proud of it.
I never released it (story for another post). But I was hunting for something new to build alongside the classwork. I asked around for ideas at a family reunion when three people told me independently that they wanted an app that would help time their kids’ piano practices. Not just a straight timer, but one that only counted down the time when the piano was playing.
My gut reaction was ‘not a huge market, but definitely an interesting project for my current skill level’. So I got to work.
Building the App
I looked around online, I learned how to sample audio from the microphone for specific decibel levels, I built my basic timer view, and I had a label updating with the current decibel values before I went to bed that night.
‘I’ll have this done in a week!,’ I thought. Naïvete at it’s finest.
I kept at it. Refining my Timer class. Adding a settings page. Persisting those settings for each launch of the app. Building my own Onboarding Controller and views. Adding reporting and timer options. Putting in hours of learning, experimenting, fixing bugs, refactoring, and then doing it all over again for each change and new feature.
After a couple of weeks, I had something ready to submit to the store.
The Value of a Boot Camp
A quick aside for a moment. As I’ve gone through the bootcamp, I’ve been asked if I was really learning how to code in 12 weeks. The answer is no. You can’t master programming in 12 weeks in a part-time night class.
The value of the boot camp is building a foundation, working with other students on the same level, having access to mentors who can help you along the way, and most importantly… spending your own time outside of class to hone and develop those skills. You get out of it what you put into it.
Let me say that again. You’ll get out of a bootcamp what you put into the bootcamp.
Don’t expect to show up, have the instructor’s words wash over you, and start cashing checks from your high paying development job. It won’t happen. You’ll get frustrated and drop out. I promise.
What About Swift?
I was sitting with a talented group of iOS developers when Apple announced their new programming language, Swift. Initial reactions ranged from wild excitement to soul-searching introspection. One of them said:
My entire career just got deprecated.
I wondered the same thing. I was 5 weeks into my fancy iOS bootcamp! Was it all wasted? Should I toss everything out the window and start over with Swift?
Swift is cool. I’m excited to do more with it. But Swift is the language for the next 30 years of Apple. The language of the past 30 years isn’t going to just fade away into irrelevance in the next 12 months.
As I’ve learned while building Noise Timer and my current capstone project… iOS development isn’t about the language. It’s about the frameworks. It’s about how Cocoa works. The language is an implementation detail. The most important things I learned still apply whether it’s Objective C or Swift.
Back to Piano Timer. I had the skeleton of an app that I felt was ready to submit to the app store. But as I got ready to submit I realized that I didn’t have an interesting user interface, a logo, an icon, or a written description for the app.
I was running out of time I could spend on this side-project app, because I needed to get to work on my capstone project. In a world where Delight is in the Details, I was hesitant to push it live without spending more time on the little things. But, real artists ship, and it was time to move on to my next project. So I quickly put together the missing pieces, uploaded them to iTunes Connect, and submitted the app.
That was about a week ago. This morning the app went into review, and without a hitch was processed to go live on the store.
I’m happy to present my first iOS app, Piano Timer. Check it out in the App Store.
So What’s Next
I’m nose-to-the-grindstone on my capstone project, which I will be presenting during Demo Night at the Adobe Building in Lehi next week. DevMountain has an Eventbrite page set up for it, it’s free to attend, and I’d love to see you there.
I’m not sure where iOS development will take me in the future. But I’m thrilled with my experience so far. I’ve learned a lot. Most importantly, I’ve learned that development is something I truly enjoy. And even though it’s 12 years after my first failed development experiment, better late than never.
If you have any feedback, questions about how I learned, DevMountain, bootcamps, or anything else, I’m @calebhicks on Twitter. I’d love to hear from you.