

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

Hello HN, I have a twofold question. I&#x27;ve always been interested in entrepreneurship and tech entrepreneurship always seemed like the more accessible platform. My problem is that I don&#x27;t know how to code, and it&#x27;s a little too late to pursue a CS major (I&#x27;m a Bio major). (1) What&#x27;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?<p>(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&#x27;s successor Swift. What&#x27;s the deal with that? Would it still be okay to learn Objective-C, or should I just start learning Swift?<p>Thanks
======
MalcolmDiggs
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.

------
a-saleh
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 :-)

------
thewhitetulip
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.

~~~
ekr
>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.

~~~
thewhitetulip
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.

------
0redux
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.

------
matthewjames
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/](http://www.appgyver.com/)

Hope this helps have a good one.

------
0942v8653
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.

------
coralreef
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.

------
xiaoma
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.

------
ftchirou
Take a look at Udacity's nanodegree (Web, iOS, Data science)
[https://www.udacity.com/nanodegrees](https://www.udacity.com/nanodegrees). It
could be interesting for you. They said it may take 6 to 9 months to complete
each.

------
devdraft
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.

------
beher
"Teach Yourself Programming in Ten Years" by Peter Norvig
[http://norvig.com/21-days.html](http://norvig.com/21-days.html)

~~~
hackerboos
10 years to 'expert'. Far less for 'competent'.

