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.