Ask HN: Amount of time needed to become a competent programmer?

8 points by Bundesliga ↗ HN
Hello HN, I have a twofold question. I've always been interested in entrepreneurship and tech entrepreneurship always seemed like the more accessible platform. My problem is that I don't know how to code, and it's a little too late to pursue a CS major (I'm a Bio major). (1) What's a realistic amount of time for a beginner to become competent in iOS app development, and would it be feasible for a busy University student?

(2) If it is feasible, how would I go about starting? I previously thought I would need to learn Objective-C, but then I started reading about it's successor Swift. What's the deal with that? Would it still be okay to learn Objective-C, or should I just start learning Swift?

Thanks

14 comments

[ 3.3 ms ] story [ 42.4 ms ] thread
Hi,

What is your goal?

Do you have an idea and you are trying to build a prototype?

If you are a sales / marketing person one option is to find a tech co-founder. Learning tech from scratch takes a long time although there are plenty of resources available online.

Hope this helps.

I would reccommend looking at www.codeacademy.com and getting a good introductory grip on js (javascript). A lot may disagree, but learning Objective-C can be a long process compared and there are more and more frameworks out there to develop mobile apps with native-like performance with web languages (html5/css3/js).

Check out the AppGyver Supersonic framework, they have a awesome platform called Steroids that allows you to do cross-platform apps with the same codebase.

http://www.appgyver.com/

Hope this helps have a good one.

You can do it in a couple of months. I saw it first-hand with some of the students in the original class of App Academy, back when they focused on iOS instead of Rails.

That said, they were living it and breathing it, not studying as a hobby on the side as busy uni students. In your case, a couple of years is probably more realistic.

If your idea is to be a tech entrepreneur, while a Biology student, while learning to code, without no team behind you, I'm afraid you're living in dreamland.

You can probably learn competent iOS development (that will get you hired) from scratch in a year. You probably can't do this while being a busy (your words) Biology student, so the clock doesn't start until you graduate.

To be good enough at engineering to bootstrap your own venture, aim closer to 3-5 years of work in the field. To learn all of the things above and beyond being a good engineer that you'll need to succeed as an entrepreneur, it's probably closer to 7 years.

I don't know you, so I don't really know where you're starting from, but I'm not going to sugar coat things. Behind every glamorous cover story, I'm afraid you'll find that an overnight success takes seven years.

1) I would say around 5 years? That is how long it took my friend realizing that MBA on the school he was attending won't get him very far, banding together with a friend of mine that was already developing mobile apps, and working his way through several apps onto being a fairly decent programmer.

On one hand, he wasn't very busy student. On the other hand, it took him only a year to be fairly productive in their little tandem.

2) Find a friend who already knows to code. Code with him. That is how I learned coding at highschool :) We wrote a small graphing calc, in the beginning he did bulk of the work, I mostly tested it, read through code, fixed his errors if I found any ... in half a year I was good enough to add my own features.

This would answer the second part of the question, write in whatever you programming partner writes. If you take programming seriously, you will learn many different programming languages anyway, and having someone around to share the excitement is excelent starting point :-)

IMHO like most (modern) programming languages and frameworks, you'll be up and running in a couple days. That is, you'll have no idea what you're doing, but you'll start recognizing small patterns and structures, and you'll be able to start tinkering.

That tinkering phase lasts quite awhile. If you're doing it fulltime let's say a few months. Almost everything with look like gibberish or hieroglyphs to you. But knowing what 1 piece of code means, will lead you to 2 pieces, 3 pieces etc. Over a few months those hieroglyphs will start to look like actual language to you. Tinker tinker tinker. You'll get there little by little.

After a few months you're dangerous. I say dangerous because at this point you'll be confident and you'll think that you know what you're doing. You still wont, but people might even start asking you for advice. I've taken work in this phase. Believe it or not, you're hireable at this point. (For better or worse).

For me, the only true way to become competent is to work on a team. You need to start working-on (and shipping) products with devs who are much more senior than you, who will take you under their wing. After 1 year of that, you're competent.

Now keep in mind, competent isn't good. Competent is just a satisfactory level of literacy. You won't understand any theory at this point, just practice. You won't know why anything does what it does, but you'll know how to complete a task that is assigned to you. And hopefully you'll know where to go to get answers to your questions. You'll still be a long way from good. If you wanna be good, that takes time, but more importantly a devotion to your craft.

Programming is an art, the more you practice, the better you get. The amount of time required is totally subjective, but you need to have worked on a couple of projects before you can call yourself an experienced programmer.

You can read hundred different programming books but none of the theory books will teach you more than just the syntax of the language/ programming paradigm.

There is a huge difference between theory and practice, and no matter how much at home you are with the theory, you'll be pretty much be stumped when you will create your first big or medium scale project, and I am saying about a complete project and not some modules that you created over a weekend.

Programming is much more than just knowing syntaxes or paradigms, it is about creating an end product, with all error handling done, you need to design the code and the UI so it is usable.

>You can read hundred different programming books but none of the theory books will teach you more than just the syntax of the language/ programming paradigm.

Huh? That's not true. I wouldn't call a book that teaches you a programming language a programming book. Art of Computer Programming is a programming book, and I guarantee that you'll learn more than just a programming language from it. Or Introduction to Algorithms. Or books about operating systems, or computer graphics. These are all programming books.

Okay then don't call them a programming book, call them a language book.

What I had meant to say was that just reading a python book won't make you a programmer, it goes in the same way about any other definition of programming books you may call, one has to practice to gain perfection regardless of which books are called programming ones and which ones aren't.

I've been programming iOS/Obj-c for about 3 years. I was shipping apps after the first few months. I had income in the first year. The income wasn't particularily easy, I was very strategic about the types of apps I created. I was also lucky to rank well on some keywords.

As for Swift vs Obj-C, I don't know if theres enough resources for swift yet. Also most libraries/open source stuff will probably be Obj-c.

To address your Swift question, please don't try to learn Swift. It is not worth it, at least not at first. The main thing that matters (is difficult to learn) is the Cocoa Touch library, which was made with Objective-C for Objective-C. So, if you try to start with Swift it will be much more difficult. Once you're comfortable with Cocoa Touch you can decide whether you want to look at Swift or not. You'll be fine learning Objective-C.