Hacker News new | ask | show | jobs
by ezl 5727 days ago
Was it weeks/months/years until you felt comfortable writing an entire Web app with basic functionality?

Comfortable? I don't know. Capable? a few months. Starting to flesh out your ideas? Within 1 month of starting an EARNEST effort to learn what it takes to write web apps.

I was in your shoes about 15 months ago (roughly).

I had ideas and wanted to be at least "sort of" able to flesh them out on my own. I had more than zero exposure to programming, but by most standards not much more. I had recorded and hacked up some VBA macros for work, had no idea what objects in object oriented programming were, and in college I had used Mathematica. I had just started using python and the longest script I had written was less than 100 lines.

I had ideas and I wanted to be able to execute (even poorly).

The general "I can't hack but I want to" theme comes up quote frequently on HN. There are a ton of resources for this. This link by by iamelgringo is the one I first read and it was immensely helpful, partially because it gave me time targets to try to beat. I more or less tried to follow this path.

http://iamelgringo.blogspot.com/2008/05/teach-yourself-you-t...

After you get started though it'll become clear to you what you need to learn and the process will take on a mind of its own.

Other resources from HN:

http://news.ycombinator.com/item?id=190518

http://news.ycombinator.com/item?id=149482

http://news.ycombinator.com/item?id=127952

http://news.ycombinator.com/item?id=123903

http://news.ycombinator.com/item?id=90782

If you're really at absolute ZERO on programming, I've been recommending Zed Shaw's python book:

http://learnpythonthehardway.org/

By lesson 20, you should be concurrently working on iamelgringo's lesson plan.

I am really happy on the python/django side, still awful at CSS, can barely deploy a server right, and use the reference manual all the time for jQuery. What you'll realize is that being comfortable has less to do with being able to sit at a blank terminal and typing than knowing how to traverse the documentation for each project.

People WANT to help you learn. As long as you make some effort to try yourself, hang out in the python, django, jquery rooms and ask questions whenever you need. I still do all the time. Spend 5 earnest minutes each question looking for the answer. If you keep asking questions that are answered by the first google hit, nobody will want to help. But if you're making an effort to self-learn, people will be very sympathetic.

Typing "terminal" above also just reminded be that learning to use linux and vim was an entirely separate battle. The process is the same. You'll keep hitting tasks you don't know how to accomplish. Google it and ask someone. I still suck with both, and I'm still learning.

Its a tough battle, I definitely recommend you reach out to people in your city, find startups and say "hey I suck, want a free intern?" (I did this). Try to sit in the same room as them once a week and hack. Having an immediate resources available to answer questions verbally is huge.

You don't have to "know" how to do all that stuff to be able to write apps quickly, you need to know where to find all the information.

I'm probably slow by most people's standards here, but less than a year after I started I felt comfortable with deploying a small weekend project. For the first 3 months, I was hacking 60+ hours a week, not because I felt like I should, but because once you start learning, you realize how much you still need to learn and you get obsessed. There's a sick satisfaction to banging on your terminal and watching your vision come to life, little by little. Every month you'll look back at your code and want to vomit. This is a good sign (I think?). Don't worry about memorizing anything, just worry about doing it more and more. The things that you look up a lot will stick and your production efficiency will improve.

Last week I spent 60 hours to produce a crappy MVP of a project I"m working on, roughly 2300 lines of code. I was on IRC the whole time asking questions.

3 comments

> still awful at CSS

I recommend you look into SASS/Compass. You have to learn the abstractions on top of CSS but from there you can leverage other people's knowledge of the tricks/hacks involved in putting together a good CSS layout.

I've recommended this to a number of people in roughly your position with good success. The biggest problem they've run into is with the SCSS syntax and once I got them converted over to sass (-x SASS) they all did fine. SASS won't teach you design and the designs have all been terrible, but generating the stylesheets ceases to be the problem.

On the other hand, I've had a terrible track record trying to do the same with designers.

> This is a good sign (I think?).

The revulsion tends to go away after you've been doing it a few years. You never stop learning, so there's usually a sigh when you see something you could have done better.

I want to say thank you for the list before I ask my stupid questions. How and where did you learn about object-orientation, etc? I find myself in a very sticky situation where I've been programming micro-controllers in C and assembly for years and using Matlab for high-level simulations with a giant chasm in my knowledge in between. Every resource that I have read so far seems to assume a student who has formally studied CS. Is there an accessible guide to object-orientation?
If what you're comfortable with is lower level stuff, one possibility is to look at an implementation of an object system in C. In particular, I found reading the Python source code to be helpful when learning about object orientation.
Probably I would not suggest this book otherwise, but if you are an experienced C programmer then Bruce Eckel's 'Thinking in C++' book might be for you. It explains to C programmers why object orientation is a good thing. It gradually shifts from C to C++. (If I remember correctly; I've read that book long years ago.)

You can freely download the book:

http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

caveat emptor: Eric and I are co-founders, so I'm obviously biased.

I was the guy he emailed saying "want a free intern?" and I can safely say: listen to what he wrote above and execute on it. It is straight up good advice. For one, I've been writing code with Eric since he just wanted to hang out and watch me and another person write code, and he's made progress that I would've doubted was possible a-priori. Just having a resourceful predisposition is half the battle.

The reality is that it probably takes ~10 years to get to the level where you are proficient in all the relevant areas to make a scalable, robust, well-designed web application. Most projects you'll take on won't make it to the stage where those are relevant. The only way to get there is by doing and doing over again.