Ask HN: Amount of time needed to become a competent programmer?
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 ] threadWhat 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.
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.
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.
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.
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 :-)
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.
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.
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.
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.
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.