

Ask HN: How did you go from self taught coder to professional developer? - franl


======
bliti
Lots of late night programming, then lots of late night paid programming. It
all boils down to putting the time into learning. The difference from self-
taught coder and professional developer is the paycheck. Though the self-
taught coder might have experience writing code, it will not have experience
developing software. Two different things altogether. That is why you need to
put in the time in both scenarios.

~~~
franl
This is one of my biggest concerns: writing code vs. developing software. I'm
trying my best to follow/learn best practices, but the contract job I'm at
right now kind puts quality aside in favor of "JFGID right now!" And since I'm
still fairly new, I feel like I'm taking shortcuts just to get things working
in a timely manner sometimes.

~~~
bliti
Yes, that is quite common. People will start asking for 100% quality at 100%
time. Then reduce time to 80%. Problem is quality is closely tied to time. As
a result, code starts being written under the guise of it being a temporary
solution. "It will be fixed on version 2." \- is what clients or managers
often say to keep you at ease.

Solution? Do your best. No one is perfect. Make sure to document the code well
(comments) for future revisions. But realize that this is how a lot of
software is written. In all size companies.

~~~
franl
Ha, I heard something like "it will be fixed on version 2" multiple times last
week. The more I do this the more I realize I can only do what I can do (and
try to get better where there are shortfalls in skill/knowledge). Like you
said, no one's perfect. Thanks for the reminder and tips!

------
clockwork_189
Work at one or more startups and build your skills. You'll find that at a
startup you wear more than one hat(eg: You need to worry about front end,
backend and database stuff), that in most cases you dont have to worry about
in big organizations. Most early stage startups, since they dont have much to
pay, will take anyone with experience and willing to learn. The only caveat is
that, you will have to work crazy hours, at least for the initial few
weeks/months. But you will find that the more you work/code, the more
experienced you get and hence can finish tasks faster.

Thats pretty much how I started and why I still prefer startup jobs over jobs
at bigger companies with more focused roles.

~~~
franl
I think you're right, especially for someone fairly new. It helps develop a
solid foundation of overall skill, upon which one can eventually choose an
area to specialize. Thanks.

------
bobfirestone
Find someone to pay you a professional rate.

You get there by working your but off. I recommend specializing and going deep
in one area. Knowing a little about a lot if things with no real world
experience is not a competitive position. Having experience with mongoDB and
rails landed me a position over developers with significantly more general
experience. At the time MongoDB was an up and coming technology with rapidly
increasing demand. With out the specialty I had little chance competing
against more experienced developers for general positions. Having a specialty
I knew very well gave me the ability to compete.

~~~
franl
Great points, thanks. Has this been anyone else's experience? Specialization
makes sense to me (and I like the idea of deep focus), but I feel like most of
the job postings I've looked at usually list a wide range of desired skills.
Maybe I'm looking at the wrong postings though!

------
natch
Got a super low paid almost intern-type job at a very respected institution.
Once that was on my resume, people didn't care (and I sure didn't go out of my
way to tell them... I would if they asked, but they never asked) how low level
the job was... they just saw the respected institution name and I was golden
for the next step.

Also had published some software that got me the first couple jobs. Publishing
some software (open source, or an app in an app store) is a great way to get
the credibility you need.

If these are not an option, you could work for a friend, long enough to get
something you can point to as yours.

~~~
jagawhowho
Seconding the internship route. Internships are easier to get due to no or
little pay and limited duration. There's no risk to the company to bring on an
intern.

~~~
argumentum
I can assure you, even if you offer "no pay" or zero subsidy, there is
absolutely a risk on bringing on _anyone_ , intern or employee. Building a
good company means bringing together the right people at the right time ..

~~~
franl
Agreed. I learned this the hard/frustrating way when I tried to go this route
with very little technical experience.

------
lsiunsuex
Mine is more of a step by step story. Worked customer service for internet
banking at a major world wide bank. While there, I got into VB 4/ 5\. Left
that, took a contract job at a medical company doing visual foxpro. Left that
for entry sys admin job and web development job. While there, I scored side
work from a Canadian designer; did that 7 years on the side while at the day
job. Was at the day job for 8 years; now I'm 100% freelance.

~~~
franl
Very cool. Part of my problem is that I'm impatient with myself as far as
building my skills goes. But day after day I'm reminded that it takes time to
become a "good" developer. I'm trying to take more of a long view now. Your
story is a great reminder of all that, thank you.

------
cookrn
I started out by attending meetups and getting to know people locally where I
was at while continuing to work on skills. Next, I started letting people know
I was interested in freelance work and started taking small jobs. That
eventually led to bigger and better things :)

~~~
franl
This was pretty much my plan for when my current contract ends. Glad to hear
it worked for you, thanks! :)

------
ghostdiver
Students/grads are not self taught coders? Who are they then?

~~~
franl
Aren't they taught by professors? Good point though - at the end of the day,
we're all self taught. I should've been more specific: "self taught coders
with no formal computer science education."

~~~
ghostdiver
You must find a way to communicate that you have computer science knowledge in
your resume or during interview. Someone will ask questions, which are
supposed to be difficult for a "self taught" guy, you better know the answers,
lack of formal education is not an excuse, it will only prove that you are
lazy enough to read some books(or just wikipedia :P)

~~~
franl
Awesome point. Do you have any reading/strategy you'd suggest? One thing I'm
doing is open courseware like CS50 from Harvard. Do you think that sort of
work is worthwhile with regard to what you mentioned? Study algorithms? Do
topcoder challenges? Project Euler? I'm open to whatever it takes :)

~~~
ghostdiver
Top Coder challenges may work for you, reading some books will help in solving
problems(like Cormen Introduction to Algorithms). That may help only about
"theory".

In case of learning the more technical terms, open source projects are the way
to go, no need to be active committer, try to understand the workflow and
language they use.

~~~
franl
Awesome man, thanks! I actually got Algorithms by Sedgewick and Wayne instead.
The reviews on Cormen said it's the seminal resource on algorithms, but a
little too advanced for the self-directed (non-genius) learner.

