

Ask HN: Do you have any outlier examples in programming? - jeira

Hi Hackers,<p>I was wondering if you guys know of any examples of guys who have been programming say, for less than 1 year and are already proefficient at that.<p>If you do, do you know what their method was to learn how to program?<p>Thanks for all the responses in advance :)
======
n00kie
Yes!

I hired 2 programmers more than a year ago. One of them was a guy with a lot
of experience and another was a girl with only basic programming knowledge
(university, first year). It was a valuable experiment, because my gut feeling
yelled HIRE HER, but at the time it seemed like a completely irrational
decision :)

Anyway I had to let the guy go 4 months later, because he didn't progress fast
enough (imho, too lazy/ego). In fact, just after 4 months the girl was already
much better!

So how?

* Personality: high intelligence, abstract thinking, perfectionistic tendencies, fast learner

* A good mentor: someone has to constantly look over and point out design flaws/errors/bugs (btw, I had to do it only once with her! With other coders I had to do it at least 2-5 times per bug/antipattern type)

And the most important thing:

* Write consistent code!!! So when you make a bad design error or a bug. Rewrite it again (a function, a class)! And again. And again. Until your code is consistent. Whitespace, curly brackets, comments, variable names, function names, class names. Absolutely everything. It starts with tiny things like:

if(x) {

vs

if(x)

{

When you copy-paste a code snippet from a website - rewrite it so it matches
your own style!!! And repeat! And repeat!

~~~
devs1010
You should be using a standardized code formatter in an IDE to take care of
the bracket and spacing issues, etc there's no sense in putting a bunch of
effort worrying about something like that. You can take a room full of 10
developers and debate until the end of time whether a bracket should be on the
same line or next line, its personal preference and the most important thing
is to use a formatter to standardize for your company, you will never get
everyone to agree and its a pointless argument. Of course the naming is
important but its really a fairly simple concept, just to always use
descriptive names, in your example using x as a variable name is an example of
NOT doing this

~~~
GeneralMaximus
I second that notion. I've always been irrationally anti-IDE, but in the past
few weeks I've been using Pharo Smalltalk for some personal projects and I've
realized how much a good IDE can do for you. You should let your IDE handle
trivial issues like directory structure, file formatting, etc.

When I write Smalltalk, I ignore formatting and indentation. I just write
code. When I'm done, I hit Command+r and the editor formats everything for me.
This is just one of a billion tiny bureaucratic issues that the Pharo
environment handles for me.

(Offtopic: makes me wonder why we don't build programming environments from
the IDE down instead of building them from the language up. Our current
approach doesn't seem to be working very well, IMO.)

~~~
devs1010
I agree, I use what I consider to be a great IDE for the language I work in,
it does variable suggestion, everything and its great because it makes me
write code faster and not cut corners

------
devs1010
It depends what you consider proficient, I was definitely producing in my job
at less than 1 year experience but I definitely feel that I know more now than
I did then. I think it takes at least a year of solid experience to get to the
point where you can really be reflective about what you do and to understand
writing clean, maintainable code. (and every year from then on out just adds
more of this) For someone who is motivated, as I was, its fairly reasonable to
be able to start producing with only a few months experience, to where you can
make things that work, just that the solutions you come up with may not be as
elegant as they could be and the code may be messy. It takes time to get that
extra sense when coding to use best practices, etc and this is also related to
who you work with, the more you can be around more experienced developers, the
faster you will progress

