Learning to program at age 30: here's how I'm approaching it

Learning to program at age 30: here's how I'm approaching it

Summary: After 12 years, I've finally found what I needed to take the plunge into programming. So as to help others like me who have been interested, but could never quite flesh it out, here's how I'm approaching it.


For the past 12 years of my life, I've been interested in the idea of programming. I tried to learn Visual Basic back when I was 18, but once I got to the point where I needed to actually write code, my brain said "screw this!" Since that time, I've tried off-and-on to learn various languages, only to fall short right about the time my brain severely rejects the very sight of cryptic writings. Well, thanks to the proliferation of mobile phones and the apps that fill them, I've finally found what I needed to overcome the hurdle that has always blocked my path: a real reason to program.

A few months ago, I turned to Twitter to ask what the best way(s) to go about learning to code might be. I received a bevy of comments ranging from helpful suggestions to crass, would-be witty responses (this is the Internet, isn't it?). From it all, I walked away understanding that I needed something more than just a general interest in programming. As such, I chose the landscape of mobile development -- specifically, iOS -- and doing so has really made a genuine difference in my approach to finally learning programming.

With that said, the rest of this article follows a checklist format. For every point I list, I will write what my personal approaches/thoughts are. Feel free to follow my lead, but above all, I hope it helps those of you who, like me, need something more to truly excite the coder you know has been buried deep down inside of you. The following aren't in order of importance, because they've all been integral for me, so I encourage utilization of all of them:

1 - Have a goal: Why do you really want to program? Do you have a specific application or game in mind? Also, what platform(s) do you envision it running on? For me, the epiphany came in the form of a game I've loved for years that I suddenly thought would be a huge success on the iPad. Bam, there's my idea. But carrying it even farther, what are more apps/games I would like to develop? Would it be worth my time, money, and energy to learn mobile development? Asking myself those questions left me with a smile on my face as I realized I had that excited feeling in my chest that you get when you're genuinely inspired to do something you know you'd love. This step alone truly has made all the difference.

2 - Pick a curriculum: Alright, so, now that you're all fired up and you have a goal, how will you go about learning? After plenty of research into the language and tools I would need to learn to develop iOS apps, I decided to begin my journey by learning the fundamentals of Objective-C via a book titled Objective-C Programming: The Big Nerd Ranch Guide. And, as it just so happens, about a month from now, a local community college of mine is holding a "Mobile Apps Development Summer Camp." It begins with iOS dev 1; then, iOS dev 2; then, mobile gaming dev 1; then, mobile gaming dev 2. There are also Android dev 1/2 and WinPhone dev 1/2, but I'm only interested in iOS. Between the book and the classes, I feel I'll have taken a solid step towards my goal of developing iOS apps!

3 - Monitor your brain: While reading the book I mentioned in the previous point, I've been keeping a text file open with which to take notes. Specifically, I have 3 sections: questions, notes, and thoughts. Under the "questions" section, I write down every single programming-related question that pops into my brain -- things like, "What does the 'f' in "printf" stand for?" Sometimes, I look up the answers immediately. Other times, I wait. For the "notes" section, I like to write down points I've read that I feel need mental reinforcement; however, instead of just copying the book word-for-word, I reword given points such that my brain has to really consider what they mean.

Lastly, for the "thoughts" section, I write down anything else that comes to mind: "This part of the book could have been written a little better," or, "Look up the word "flummoxed"," etc. I find that doing this "brain monitoring" really helps to get all the "stuff" OUT of my head so I can continue to focus on the material.

4 - Find a buddy: Sometimes, having a buddy to go through the exact same experience as you can make all the difference in the world. Maybe you have a friend, coworker, or family member who is interested in learning the same thing with you. Or, perhaps you found a community or forum full of people looking for others to learn with. Even better, why not look for meet-ups from meetup.com that you can attend? There's nothing quite like connecting and networking with real people within your community!

5 - Find some excellent resources: Basically, find Web sites and materials that will act as great resources for you through your journey. This is a subjective point, primarily due to the changes in what you will need in a resource at any given time through your coding. With that said, you can still begin to populate your favorites list with resources you can use now, as well as ones you identify as potentially being useful later.

As for me, I've started with Apple's developer site, Ray Wenderlich's site, and Stanford's free iTunes U courses. For those resources, I single-handedly have to thank the Objective-C subreddit on Reddit -- specifically, a post titled "I'm about to embark on learning Objective-C. Looking for advice." For now, my face is buried in the book I mentioned earlier, but when the time comes, I know that these resources will prove invaluable!

6 - Find the experts: Throughout your research for resources, tools, languages, etc., be cognizant of names you either see multiple times or see people speak highly of. Seek those individuals out (Twitter, Facebook, Google+, their own personal Web sites, etc.) and follow them! The reason for this isn't just because of their expertise, but also because of how immersed they are in your field of study. That makes them excellent resources for news, tips, other valuable resources, and -- perhaps most importantly -- pitfalls/woes that are great to know. You know, there's the educational side of programming, and then there's the "real world" side of programming. Following the experts can help to give you a glimpse of the latter while you engage in the former.

7 - Don't forget cost: Luckily, it's quite inexpensive (if not completely free) to educate yourself these days; however, if you're serious about development, cost will inevitably become a factor at some point -- be it money, time, or otherwise. For me as an aspiring iOS developer, I luckily already had all the hardware I needed to get started: a fully-loaded 13" MacBook Air and an iPad 3. Xcode (Apple's IDE) comes with an iOS simulator (basically, an on-screen iPad/iPhone emulator), but since the iPad 3 has a display with the resolution that it does, looking at an iPad 3 simulated app on a 13" notebook is... well, less than optimal, let's just say. Anyway, the point here is to consider the costs associated with your education -- even if it means figuring out workarounds to compensate for a lack of time, funding, what have you.

8 - Never mind the naysayers: I'll tell you, as a society these days, we are absolutely bombarded with choice -- so much so, that it can be paralyzing. Additionally, the weight we place on reviews can be integral in our decision-making processes: you know, "Which book do I choose based on the best reviews," or, "Do I use this IDE or that IDE based on what people are saying?" Sometimes, you just have to pick something and stick with it -- be it a book, video, tool set, etc. If I listened to all the negative criticism surrounding Xcode, I would have never used it. Instead, I just decided to trust in the curriculum I've chosen (which includes the tools being used by those instructing me) and things have worked out great thus far!

Additionally, one thing I've heard from a number of developers is something to the effect of "Objective-C is a stupid, irrelevant language that's EXTREMELY difficult to learn. Have fun failing." Maybe so, but the way I chose to view it is that I'm a complete newbie to programming. As such, I have the advantage of ignorance, and so far, it's paying mental dividends to see it this way! Everyone on the Internet is a critic, so just take what you read with proper perspective and don't allow negativity to steer you off your course.

9 - Never too old; you've got time: YOU'RE NEVER TOO OLD!!! I feel this point is worth mentioning solely because it's something I've dealt with through the years when making career-based decisions. Our society is steeped in age-restrictive logic, but thankfully, such logic is increasingly being chipped away. Talent is talent, no matter your age or educational background. If you think you have it in you to be a talented programmer, then go for it! Time is on your side. Plus, if you're like me, you've essentially wasted what could have been 12 years of learning -- even if only bit-by-bit (no pun intended). In the words of one Tony Lucca, "It takes the time it takes to get it right."

And with that, I'll go ahead and bring this post to a close. While I've been selective about the bases I chose to cover herein, I feel they are amongst the most important for me, personally. Your mileage may vary, but overall, I really, truly hope that what I've written will serve as a solid foundation to give long-time aspiring programmers the push they need to actually get started this time. Good luck with your journey as a new programmer!

Are you an aspiring or experienced developer? Whichever the case may be, please feel free to share your stories, advice, and/or experiences in the comments below!

-Stephen Chapman

Related Content:

Topic: Software Development

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.


Log in or register to join the discussion
  • As you stated, your goal is to write iOS apps so learning Xcode is a

    fundamental requirement. Having stated that, your comments to Xcode naysayers are relevant. That is, regardless of what the naysayers state about Xcode (and their points may very well be correct and insightful), their objections to that programming language are irrelevant to your stated goals.

    Good luck, Stephen, with your project. Don't forget to consume vast quantities of caffeine along the way.

    PS .. Usually the best advice is to start small (that is, with small programming baby steps). However, in your case, if you have a specific app concept that you wish to develop, than I suggest you jump into that task with both feet running. You will learn what is needed (thru trial and error) in terms of programming code and avoid what your app doesn't need. If you try to learn about the whole universe of Objective C programming, you will spend the next ten years reading text books and end up coding zero projects. That little bit of advice was given me from a very special friend a long time ago when she was a med student at Wayne State University. I asked her how on earth can you learn everything a physician is required to learn in two years of "book classes" before going out onto the hospital floor. She said you have to learn how to "pick and choose" your knowledge base. I've kept that little chestnut gem close to my heart every since.
  • iPad 3 has a display with the resolution that it does

    "but since the iPad 3 has a display with the resolution that it does, looking at an iPad 3 simulated app on a 13??? notebook is??? well, less than optimal, let???s just say." - As a developer it's a complete pain in the ass. That is unless you want to spend two or three grand on a high res monitor.
    • An iPad

      is a lot cheaper than *two or three grand*!
      • You need a Mac to develop for the iPad

        But a normal 21.5" will do the job. A Macbook works well too.
      • imacs are fine

        @IAmMarty: I do my ios coding on a 17" macbook,, and its fine.

        But yeah, the really high res of the new ipads is a pain in the neck. Not sure the answer to that except perhaps a second monitor with the resolution set at "absurd".
  • tiny violin plays in background

    I didn't get my CIS degree until I was 28 and my first job in the field until I was 29. I didn't learn to program until I was 27 and took my first programming course (Fortran). At 19 I was too busy sticking a bong in my face to give it a proper try.

    I think that a person expecting to learn programming on their own is doomed to fail unless they are very, very smart. Most books on the subject expect you to know quite a bit about the subject already, and are full of buzz words and jargon. Take a class or 10.

    And good luck. Really. It can be done, but it's going to be hard on your own.
    • I'm self-taught at 61 years without taking courses.

      @cwallen19803, I never took a course in programming. I'm entirely self-taught. And I'm a senior citizen.

      In the last two years, I created my first PHP site, which has 725 dynamic pages, and my first JavaScript/jQuery prototype, which will eventually be merged with the PHP, so that there will be 316 similar sets of JavaScript/jQuery pages served from the PHP site. The prototype is really cool and already has committed users, even though I haven't been promoting it.

      I taught myself to program because I have a 2400-page curriculum to publish as a CBT, and when I was looking for programmer partners or funders, no one really understood what I was talking about. So I decided, Little Red Hen style, "Okay. I will plant the wheat."

      Nonetheless, I consider myself a writer in the realm of personal transformation, not a programmer. One of my secrets, in fact, was the technology of personal transformation, which enabled me to eliminate the personal limitations that stop me. The reason I was looking for programmer partners or funders was the belief that "I'm a spirituality/personal growth writer, and programming is too hard for me," and other related beliefs about who I am that told me I couldn't possibly do it myself. (Not to mention, "You're too old for this, Buddy.")

      What I wrote is clunky--they are both, after all, my "Hello World" applications--and that applies to both the PHP project (which also uses Smarty) and JavaScript/jQuery project. I'm pretty proud of them.

      The people who use the JavaScript project seriously for themselves tend to get addicted to it, because it has the effect of transforming your life, which is pretty good for my "Hello World" project: I forget. Did I say that I wrote at the age of 61? I personally use it several times a week--whenever I'm blocked, confused, afraid, frustrated, or simply unsure of what to do--so I'm in truth one of the addicts.

      I think these forums have rules about links, but if you want to see what I created, you can try it out at grokwisdom dot org slash gendlinexercise dot php. It doesn't really use php--just Javascript--but it's a prototype that will eventually be integrated with the php code that I created first. (It currently doesn't work well on a mobile device.)

      In other words, if you want to save your work, you're going to have to copy and paste it. You won't need to do that when I integrate it eventually into a multi-user blog system, but that's a whole long way in the future.

      If I live that long.

      Cougar Brenneman
      PS @impost--I don't think I actually started small, which was your advice. Sorry that I can't agree. That was another of those self-limiting beliefs that I had to use my own technology to overcome.
  • Aack!

  • Let us know how you progress

    Great post Stephen. At 30 you have plenty of opportunity to become a successful programmer.

    Perhaps you can let us know how you are doing from time to time.

    Best wishes...I think you are already on your way. Stick with it.
  • It's All About The App!

    I have dabbled in programming ever since I took my first Fortran course in 1969. I recently tried to get back into it, after being diverted into sales for 30 years, but the sticking point was always the question "what do I want to do with it?".

    As mentioned by SC the number one thing you need is a goal. Programming is rewarding but also hard, very hard, and without a specific goal it's very difficult to stay with it.

    If you're doing this because you want a hobby, enjoy! If, on the other hand, you're doing it for commercial reasons, because you have a great idea for an app, then you're probably better off working on the storyboards and graphics and outsource the coding. Keep in mind that if you have a commercial motive all the value is in the creativity and design of a good app, not in the coding (with exceptions of course).
  • Do yourself a favour. Disconnect your internet connection!

    I didn't start programming until I was 30 and had my first Java development CS job when I was 34. One piece of advice I would give is to avoid trying to learn off the web. The web is great for answering specific questions (and being able to evaluate the hundred of conflicting opinions) but for actually learning something from scratch it is an unpleasant and off putting experience. Get yourself a book written by someone who actually teaches people coding from scratch for a living (i.e. University lecturers). Being a professional programmer with X amount of years experience does not mean that you are going to be any good at teaching.
    • Disconnecting = good point

      I was a long time food industry person who decide to do something different and went to our state's tech school for IT at 37 years old, I'm graduating with a Bachelors and a very nice GPA at 41. I've always been attracted to programming and, when a specific problem must be solved, you WILL learn to program: the problem forces singleness of mind. The hardest thing about having/using the internet is that there's no other resource as instantly searchable, there's almost always some hint out there. But it's a huge distraction, countering the focus needed to solve the focus requiring problem, encouraging impulsive thinking (feeding into my A.D.D.). I also find that I call 'the end of the internet' with certain questions to specific problems I have, getting caught in the idea that if I search long enough and modify the search terms jut right, I'll get the answer, and it just wastes time. This leads me back to whether it's good or not to use the internet to learn. If one has a specific problem to solve, try to see how far you can get using one resource or book in solving the problem with the techniques in front of you, even if there's not something specific to your problem, try building on what you see and experimenting from that single resource. It will stick in your brain much better that turbo surfing and copy-pasting. The internet is almost a must, but pick one resource and don't give into the impulsive thought that 'there's a better site/answer out there'.
  • Coders, start your engines

    ...wow, just had to say great article, very positive (unlike most posts that all lack a caring element) and helpful to the aspiring beginner.
  • How old is too old

    I started programming in 1976 on a PDP-11 using Macro 11. Since then I have written in every language that ever existed. 6 years ago I went back to school to learn the language of the web. HTML, CSS, Javascript, Ajax, Json, PhP and MySql.

    I have never regretted going back to school. At 51 years old I have been programming for 36 years, and I am currently employed as a User Interface design analyst/developer. That's the best way to describe what I do. I develop prototype User Interfaces for every platform imaginable. I am old school , and don't use frameworks and libraries. The reason is they cripple your understanding of the pure language. They often make debugging a nightmare.

    I teach something I like to call "WebUFace". It is the marriage of all the above, as if they are just one. In reality they all co-operate to provide some of the best web experience you will find on the web.

    I am constantly amazed by the clever people that simply are everywhere, such inventiveness and creativity. The likes of which never existed in the days gone by.

    Start small, but actually have something real to do. You too will be hooked.

    Good Luck
    • Repect

      @impost I love to hear of people who really have a passion for this stuff, and are willing to pass on what they have learned. 36 years is fantastic.
      Thanks for your post.
  • It's all about logic first, then code.....

    Like someone else earlier said, he started programing in 1969. I started 3 years later in 1972, but one of the first things i was taught was logic. Since then, all of the courses and books I read on logic were the most helpful to me.

    Maybe that's why you struggled when you were 18? I seriously doubt you ever took or were taught predicate and prepositial logic. If you had been, it would have made a lot more sense to you.

    Too often, when i'm asked to go in and trouble shoot programs, I find a completely illogical order to the code. Just straightening that out fixes the majority of the issues. It's not the syntax that messed them up, but their logic.
  • Point 1

    When I originally decided I needed to learn C/C++ it was slow going at first, until I had a specific goal. I don't know if your points were in any particular order, but point 1 is probably the most important (to me at least). I guess I had the advantage of already knowing Pascal, BASIC and FORTRAN though.
  • The Dawn of Software

    I'm 62 and wrote my first code when I was 19, a EE (and stayed one) at Iowa State (in 1969.)

    You have touched most of the right bases. I do want to add some thoughts (in a short bit of time.

    You are right about getting help and also about deciding into which field you wish to deposit yourself. The local college with the classes is an excellent idea.

    During my last stay in Silicon Valley a few friends and I put together a class on C# (this was in the 2004-2006 period.) It was more like a SIG than a 'class' but we did problems and discussed programming issues. With Objective C (I assume that Apple must use that rather than other forms of C modified for OO; one of the early Xerox PARC developers said this about C++: "I was the guy who came up with that term... and I can assure you I was NOT thinking about C++ in its present form."

    If you want to jump start your run at programming, I'd suggest grabbing one of the Ivor Horton books, "Visual C++ Version 6" or "Visual C++ 2005" (I don't have th titles in front of me) not because of the subject - you can learn a LOT about general coding practice from these books because Horton sweats the details, unlike most authors who purport to service the 'beginners', Horton takes you through the most minute details of a compiler. You will NOT spend hours and hours trying to figure out missing steps; Horton rarely leaves any.

    When I want to feel young I write code. I am always looking for problems to solve with code. I started with FORTRAN in an intro programming class in the autumn of 1969 (within a couple of weeks saw: 1 it was a great game!; 2 I theoretically could automate a LOT of the electronics engineering problem solving grunt work; 3 I could also control HARDWARE with code - embedded apps, long before I ever heard that term; 4 that at some point automation based code would become a major societal headache because, well, if I could make the profession of engineering more efficient (in terms of live bodies at desks) then others like me could do the same for every human on the planet... it would throw the "production and distribution" part of the economics equation completely out of whack AND thus ruin "supply and demand."

    The corporate bureaucrats haven't allowed me to write code for over a decade, so I'm an island at the present time.

    Just ran out of time, over and out. Maybe I'll add some more comments later. Perhaps less on my experiences.
    • Do it again

      Please don't stop coding. If it makes you feel young again, do it. Guys like you inspire me.
      Thanks to all you seasoned coders for your input in this discussion.
  • Objective C is a fine language.

    Ignore the objective C knockers. I think its a great language. As an old hand (25years+ experience) , Obj C is very similar to an earlier language Smalltalk, which itself is the *gold standard* of object oriented programming implementations (simula + smalltalk where the two languages that really started it all), and as such its a very clean and pure implementation compared to C++ which is very powerful but possibly a bit overwhelming as a first language (hell its a bit overwhelming as a second or third, it does not even pretend to be anything other than "advanced). Objective C does tend to throw a lot of more experienced coders due to the square bracket syntax because its so different to other languages but ironically this actually gives new programmers a bit of an advantage, because they have nothing to un-learn.

    In may respects Obj C reminds me a bit of another language I'm very fond of, Python , due to the fact its a fairly simple language that packs a fair bit of power under the hood. The only real criticism I can make of it, is that some of the method nameing conventions can be unnecessarily verbose at times making memorizing many of the method signatures bit of a chore.