

Ask YC: Any newbie coders? - willphipps

About a year ago I started reading PG's essays and one thing that stood out was him saying 'if you don't know to code, learn to'. Since then I have had my head immersed in html/css/php/msql and nearly have something that works, looks good but would have probably cost me upto $10,000 (give or take) to create.<p>I just saw another post by someone that made an elearning site who has only been learning to code for 9 months.<p>Are there any newbie coders here? if so, have you got an app. and what language did you learn in?<p>I struggled with Ruby to begin with so moved onto php and found it a much easier language to get going on. Some people said to start with Python, i'd be interested in what  more experienced developers think are good languages to start off in, also any useful tips or resources for the newbie coder.<p>Cheerio..
Will
======
whalesalad
I'm 18 and have worked for three startups in the past and am currently the
lead designer on two. I really don't mean to brag by this, it just leads to my
next point. Also, this doesn't fully pertain to programming per say because I
am a front end designer, but hopefully this comment helps :)

When I was younger, 14 or so, I really became fascinated with server
technology, databases, the web, etc... I was just starting High School so I
essentially had all the time in the world to dick around with linux and php
and all of that jazz, and I did. I was REALLY frustrated until maybe 6 months
ago with programming in general. I would try tutorials, and could follow along
and do what was written, but it never made sense in my head.

I pretty much dismissed the concept of being a programmer and stuck to what I
feel is my talent, front end design. I build blogs atop Wordpress, dabbled
with PHP, but never really became a programmer.

In the summer of 2006 I joined my first startup and began working with a team
of really, really talented and smart guys on a Django site. This is where I
was first introduced to a real smart environment. I was in a place where I
knew just enough to ask good questions to help me learn. It's now 2008 and
although I am STILL not a programmer, haha, I feel I have a really good grasp
on database modeling, basic functional programming, etc... I know PHP fairly
well and am becoming familiar with Python because every major site I have
built since that first startup in 06 has been Django :)

Anyways, moral of the story is, a few years ago I could have never even
dreamed of being where I am today. In the world of front end design _and_ back
end programming. I went from looking up to designers like Bryan Veloso, Steve
Smith, Dan Cederholm, to actually feeling like I can sit at their lunch table
and talk the talk with them. I still admire those guys of course, but now I
feel like I am closer to them.

So, my advice is to just dive into anything you can, just like you have. It
really doesn't matter what language you learn first. Focus on learning the
thought processes behind building something. You can write a book in spanish
or english, the meaning will be the same. So focus on problem solving, finding
solutions.

Also, surround yourself with smart people. Stay passionate. If you're
passionate about becoming a programmer, you will, and you'll do it the right
way. The best way to learn something, hands down, is to just do it. Don't try
learning PHP through tutorials on how to make a shopping list, start learning
PHP by building the webapp you want to build :)

This all kind of just spewed out of my mind, I hope it makes some sense :)

~~~
dhotson
I've been coding for ages now, but I still feel like a beginner. There's
always new stuff to learn. :)

I'd agree with this advice: be passionate about what you do and keep on
building stuff, it's the best way to learn.. not only that, try to think about
what you're doing and why. It's better (and more fun!) to actually understand
how things work.

Learning from smart people is also a great way to learn.. it can be hard to
find these people though. I'm tipping this is a good place to find
smart/talented people. I think you're in the right place. :)

------
mixmax
I started coding around 9 months ago, so it might have been me blabbering on
about that.

I did the html/css/php/msql with the addition of some javascript thing as
well, primarily because it seemed like the easiest thing to do, and because I
could get results fast. Which I did.

I find it to be great fun, particularly the fact that I now can mock-up
whatever ideas I have without having to convince someone else that it is a
great idea.

I'm currently doing an online project management tool, which I think will turn
out pretty well. Particularly since I am normally a manager, so I know what
functionality it needs. I've run into some database problem, which I have
learned is called EAV (<http://en.wikipedia.org/wiki/Entity-Attribute-
Value_model>) that I'm currently trying to solve. Not all that easy, but a
great learning experience.

------
simplegeek
One PhD CS candidate (a friend of mine) once told me "It's all about
controlling your frustration. Each day I come across at least half a dozen
things that I don't know. I'm still learning". He later dropped out :) That
said, as others have pointed out, it's all about passion, measuring progress
and good execution. It won't happen overnight but some day it will.

~~~
aggieben
I totally identify with this; I've been coding for over 10 years and the only
thing that has been truly consistent about my experience has been that
frustration with my inability to learn everything I want to learn. I have a
stack of books to read that would probably be as tall as me, a gaggle of
programming languages I want to learn, and 3-4 languages I want to be an
expert in.

That doesn't include the math, Bible scriptures, Chinese, Gaelic, and
carpentry I want to learn.

Persistence. What else is there, until the Matrix-style skull-jack gets
implemented?

~~~
jprobitaille
I have the same problem! How do you deal with it? Whenever I'm exposed to a
new thing I want to learn, I ask if it's something I can and will apply
relatively immediately, or something I'd learn only to incorporate it into my
'zombie plan' (or any other unlikely contingency). If it's for the far off
future, I stick a pin in it and come back if the urge becomes more than a
whim.

Also, I try to limit the time I spend ingesting info (discounting recreation)
to about 20% of the time I spend creating.

~~~
brentr
I had this same problem for quite a while. I had force my mind to accept that
I probably didn't pick up everything the first time around. I didn't let that
stop me in my tracks. I simply went onto the next thing. Eventually, something
would come up, usually a compiler error, that would force me to flip back to
some section I have previously read. I would find out what was causing the
error and fix it. I have stopped trying to learn it all, and instead I read
once and then reread only what history has pointed out I failed to pick up on
the first round.

------
parker
Yeah, I'm new to web development and I'm 26... I started reading about
php/mysql in January, and began developing my first application in February,
and I'm about a month away from being able to launch it.

I didn't start from scratch though -- I knew visual basic for applications
from my MS Excel jockey days, and took a couple of java courses in undergrad.
Those give you the underpinnings behind programming logic, which extends to
other languages pretty easily. Making my VB skills transfer into PHP and web
development has been satisfying. It feels like I'm actually creating for the
first time.

I had exposure to the 'online environment' at an internet startup for a year
prior to this as well, which probably made the environment a little less
mystifying.

One insight I'll give you is that I learned more in a week of sitting and
coding than I did in the month of reading 3 hours a day. Try stuff out, test
it, see what works and understand what your natural tendencies are and your
common mistakes. Ask for help when you need it, but never avoid a sticking
point, always push through.

------
brentr
I would consider myself to be relatively new to coding. I can read code in
almost any programming language, however, I have never been involved in a
large scale project. I just never could find the time to get involved with
something that would take longer than a weekend to work on; that is my own
fault. Now that I am unemployed (I resigned to move back to Ohio due to the
cost of living in Rhode Island) and have no hope of finding a job in finance
anytime soon due to the credit crunch, I have decided to pursue a second
undergraduate degree. I will be working on a computer science degree at
Bowling Green State University in Ohio. I hope to use my time there to get a
team together for early 2010's YC.

------
dhimes
I started coding a couple of years ago with Java for a desktop app. I really
didn't know where to start, so I picked it because it was available. I dabbled
in web stuff to have a web site (css, xhtml, php, a little mySQL), and now I
am back to that as I need a much better website in order to start marketing.

I still feel like a newbie, though.

~~~
brentr
Many people will probably disagree with me on this, but I found Head Start
Java to be a good introduction to Java. I picked it up when I wanted to learn
the language. I started a program that focused on drilling a user in Jeopardy
questions (I have a huge fascination with Jeopardy), but I didn't really like
Swing, so I have added the project to my long list of things that I have
started but never finished.

~~~
dhimes
I started with Java Swing (O'Reilly) and Complete Reference (Schildt). It's
funny--Java's tough, but I really didn't know the difference because I had no
GUI language with which to compare. I had done a lot of (non-GUI) work in
Mathematica (which I love), so I found Java cumbersome, but I also was
interested by the story of the development of OOP and I figured it was
worthwhile to learn.

Now I've found Python, which has a lot of the characteristics of Mathematica,
and is very fun. But I have to fix my Java printing issues before I can play
with it. (If I can figure out how to deploy it as a GUI desktop app I could
better justify spending more time with it).

------
revorad
Although I've been coding for a few years, I've always been sort of a newbie
because I haven't really worked on one particular platform or technology over
a long period of time. I have just picked up stuff by building things.

I built this site more than four years ago -
<http://stp.unipune.ernet.in/zsi/> (I also did the backend data entry pages,
which are not online).

When I took up the project, all I knew was HTML. I learnt to implement LAMP
from scratch on the job.

I deliberately put myself in a situation where I had no choice but to learn,
the same way people really learn to swim - by diving in at the deep end.

I'm pleased to see that the website is still up and running.

I haven't quite kept up with the latest web development technologies or
languages, mainly because I haven't got down to building anything fun for a
while. I'm itching to start doing something again and when I do, I guess I'll
pick up something new.

What project are you working on? If you are looking for someone to work with,
I'd be interested (I'm based in the UK too).

~~~
willphipps
there's a lot to be said for jumping in at the deep end - especially if you
have some friends that can help you when you reach a mind block or dead end.

as for my project, it's very early days, i'll let you know when i have
something more substantial to show you..

~~~
revorad
fair enough. good luck with it.

------
dill_day
I started programming in Java almost 2 years ago, so I'm still very new to
everything. I hardly ever write anything in Java now though, I have to use C
and C++ in school, but for a quick project my first choice is usually Python,
and lately I've been playing with Scheme.

Something I liked doing when I was first starting is to check out the source
to some open source tool I was using, or just to some random project I was
interested in. I used to be amazed when I would look at some piece of _real_
code and think, hey, there actually isn't some magic quality to it that makes
it so much different than something I could write!

------
andreyf
I learned C as my first language, then only much later on moved on to
functional languages. Don't get stuck in PHP-think mentality, and definitely
make sure to understand the things about Python or Ruby that make them
functional ASAP.

Learning to understand macros in Lisp also really helps you think better,
that's what people keep repeating. From what I understand, it blurs the line
between that interface of the language to the compiler/interpreter, which
seems cool.

I'm definitely a newbies still (in all Lisp, Python, Ruby).

------
username2
What's a good resource for best practices or for tutorials to develop programs
the correct/proper way, so I don't have to waste time going down bad paths and
making the same mistakes others already have made? While trying to develop
applications, I feel like I'm figuring out stuff that's already out there and
sometimes have to backtrack because of something I didn't think about. Someone
may say there is no one proper way and many ways to do something, but I want
to know the many proper ways and not do the many wrong ways.

------
TrevorJ
I'm one of those dime-a-dozen arty "ideas" guys who can design cool looking
stuff but can't code himself out of a paper (or plastic?) bag. Recently I've
taken up learning html/css/php an man does it make my head hurt. Absolutely
love learning new things though so I think it is really good. Basically the
way look at it is that I may never be good at programming but I had better be
able to sit down with programmers and at least have SOME idea what the hell
they are talking about.

------
doubleplus
I asked a freelancer friend of mine a few months ago: "If I want to work for
myself, what language would I learn to reach that point in the quickest
fashion?" He told me to learn JavaScript/Ajax. Of course I see now that
nothing is so simple... I've had to catch up on how to utilize other tools I'd
rarely touched before (like CSS), and I feel compelled to learn PHP, MySQL,
etc at the same time. So while I was hoping to reach some level of employable
proficiency by summer, it's looking more like it'll be the end of the year.

I'm at work so I don't have time to read the other comments, but I'm sure
someone's mentioned SICP and various videocasts, and yeah Python is supposed
to be a good learning language. I've heard starting with JS might not be so
great b/c of its idiosyncracies. No, still working on apps/sites, nothing
finished.

------
henning
I have been programming for almost years and I think I'm close to getting the
hang of it. <http://norvig.com/21-days.html>

------
JohnN
Well I am pretty fresh i've stuck to LAMP just like you. Its a good base. I
built some of this, though had some help from a friend.

www.scribblesheet.co.uk

~~~
willphipps
definitely help from friends cannot be underestimated!

------
systems
1) Take your time and don't comapre yourself to anyone else. You are never too
old or too late as long as you enjoy yourself

2) Since you are self educating, pick tools that are beside being useful are
also challenging. By challenging I mean complicated and non trivial, this
should intrigue you better and help keep motivated, and by useful I mean
popular large nice community, lots of extension etc ...

3) Code!

------
Prrometheus
I’m very raw. The necessity of making a living in my non-hacker field of
training slows down the learning process, too. That’s why I’m taking the
summer off and then going to grad school in CS. Between the two, I should be
an uber-hacker in three years and I’ll be building stuff the whole way.

------
smook
Find a place to work under "masters" who know their stuff. Surroundings/teams
help you grow and develop your abilities. It's not a talent. It's a learned
talent! Code on.

------
TrevorJ
I am

