I am entirely new to programming, other than basic HTML/CSS knowledge. I want to learn programming as quickly and efficiently as possible, and I'm willing to put in the time (at least 70 hours a week). The reason I want to learn is because I have a startup that I've written a business plan for and have prototyped in Photoshop (both front-end and back-end pages). My goals is to have a prototype of the site up within 6 months.

I have a good aptitude for math (A's in all math courses up through DiffEq and Linear Algebra). I assume learning programming from scratch can be a daunting task -- not because it is particularly difficult, but because there are so many areas and so much information. I want to make sure that I learn as efficiently as possible and have individuals (in addition to Google) to solicit advice from and that will help me when I get stuck or have questions. I know with other's help, my learning experience will be both more productive and enjoyable. What is the best way to find people that will help me in this? What are some good 'live' resources in addition to asking questions on Stack Overflow?

Thank you very much for your time and help.

share|improve this question
1  
If you have the social skills, make friends with someone who can program and convince them to do it for free. Shouldn't be tricky. If not, learn Ruby on Rails. – Alison Mar 9 '11 at 12:02
5  
"not because it is particularly difficult" - unfortunately, it is difficult. – Ant Mar 9 '11 at 13:26
3  
Take your good idea to a good programmer and have them code it for you. That's how Facebook was born. – zzzzBov Mar 9 '11 at 19:10
1  
If you want your site up quick, pay the cash for a professional to write it for you, just as @zzzzBov suggests. – Gary Rowe Mar 9 '11 at 21:53
show 1 more comment

migrated from stackoverflow.com Mar 9 '11 at 11:25

11 Answers

Spoiler alert - you ain't gonna like this

You can pick up the basics of programming very quickly - loops, conditionals, sub routines, in a couple of hours you'll have programs running.

Another 10 hours will get you OO concepts, and you'll have programs up and running using those ideas.

Yay! You now know "programming"

However, from here on you have 3 monumental learning curves to climb

  1. How to use an RDBMS (your web site will need to store data somewhere)
  2. How to build a dynamic website
  3. How not to program.

There are lots of resources on line to help you with the first two, even then you'll find yourself constantly stopping, going back and restarting bits as you paint yourself into corners.

The last one is the killer, all those programming techniques you learned early on can be combined in almost infinite ways, however most of those are bad ways. Learning what not to do is mostly a matter of experience, which even for us professionals can be quite painful, and even this is pain that has been mitigated through years of University and later on the job mentoring.

Honestly, a large portion of programming knowledge is knowing what not to do, and you're not going to pick that up in 6 months.

I'd advise you to either hire a programmer to do the work, and try to learn as much from them as possible, or get a programmer on board who will work for free, but will get a share of web site profits (and from whom you can learn as much as possible).

That said - depending on how simple/complex it is - you could have a web site up and running in 6 months, but I strongly doubt that it will be stable, scalable or easy to change further down the line.

Update
Saw this and though of this answer, works for most things, not just C++
Teach yourself C++ in 21 days
Teach yourself C++ in 21 days

share|improve this answer
1  
I love this answer. Especially the part about learning what "not" to do. I just wish we could overcome the experience gap to make it easier for those who haven't had the bad experience, to learn from other's mistakes. – crosenblum Mar 9 '11 at 14:57
6  
+1 Syntax is easy, idioms are hard – Gary Rowe Mar 9 '11 at 21:51
Very well put. "What not to do" indeed. – System Down Mar 9 '11 at 22:08
2  
I'll be he stands a better chance of creating a scalable enough website than selling and marketing a successful business plan. – Jeff O Aug 1 '11 at 19:30

I don't want to bring you down, but the first thing I would say is: forget your business plan. At least for a while. Learning programming is nice, but you have to put the effort into it. There are lots of resources online, and lots of people who will kindly help you. I'm just trying to say that even if you learn a lot, you are not ready to finish a 'business project' of such magnitude. Start with simple fun projects. Remember that you don't only have to learn the best practices, you should know WHY are those the best practices, and this involves lot of trying and failing. And then, after a year or two, you might be ready to do a big project.

You can find some ideas here: http://www.wikihow.com/Learn-a-Programming-Language .

I also suggest starting with PHP. It has a really good documentation, and good community. Find a tutorial, book or something (you can start looking here) that will familiarize you with the basic programming concepts, step by step. If you are stuck with something, search Google, search StackOverflow, if you find nothing, ask a question on StackOverflow.

If you have money, you can always find a tutor, a mentor, you need an active and good web programmer who also has good teaching skills.

share|improve this answer

There is a little essay written by Peter Norvig named Teach yourself programming in 10 years you should check out this.

This may be off-putting but I don't think that you can learn programming in 6 months. Even if you put in 70 hours a week it would be only 1600 in 6 months. You can try though but you should be advised that learning to program is not working this way.

share|improve this answer
1  
That is a FANTASTIC essay! – James P. Wright Aug 1 '11 at 20:47

This question is akin to saying: "I want to build high-rise buildings commercially. What's the fastest way to learn architecture and structural analysis to accomplish this in six months?". This is not an exaggeration.

Sorry to join all the naysayers, but six months, even though you're willing to put a lot of time and effort into it, and assuming you're of above average intelligence, is enough to learn how to build a log cabin for yourself (maybe), nothing of commercial quality. Not even if you don't care about quality and understanding what you're doing.

Of course, you could specialize A LOT, learn only one technology without understanding what you're doing, buy a commercial framework and hack something together. But that'll be a house of cards that'll fall apart at the slightest gust of wind. You shouldn't trust your business on it, and you couldn't in good faith ask your customers to move in. And, unfortunately, to really be able to take shortcuts like this, you'd have to know more about software development than you could learn in six months.

My advice: If your business idea really holds water, get a good, professional (and, sorry to say, expensive!) developer experienced in the field you want to be doing. If you don't have the money for that, get venture capital. The tricky part, of course, is working out what kind of technology you'll need, and how to tell a good developer apart from an impostor. http://onstartups.stackexchange.com would be a good place to get help with some of those problems.

share|improve this answer
This is great advice. I wish I could up-vote this many more times. This should be the answer. – WeekendWarrior Aug 1 '11 at 20:37

I always saw programming as more of an 'explore, learn, enjoy' sort of thing.... you make it sound like you want to learn it so you can build your one site and then get it over and done with. Not a great attitude for a programmer to have, IMO - you won't enjoy it, and won't be able to put in the required hard yards.

share|improve this answer
+1, and I would add to this: if you aren't enjoying it, it will also take longer to learn, compounding the problem. – asfallows Aug 1 '11 at 21:02

I highly suggest looking into Berkeley's first CS course, the text (Structure and Interpretation of Computer Programs) has been by far the most useful throughout four years at the university. The ideas are fundamental to the field of computer science and it is a very good introduction to familiarizing yourself with the core concepts. It's important to go beyond the reading, going through the exercises at the end of each chapter will help you gain a holistic understanding.

The reason for the suggestion is because they are all available online at webcast.berkeley.edu and there are active newsgroups built for the class (usually available on Google groups).

share|improve this answer
Although I also recommend your source (SICP), I assume one would go through the book using Scheme. Scheme isn't typically used these days as a startup's weapon, so it might be more fruitful if OP asked what exactly is going to be built, and afterwards suggest technologies that might be suitable for attaining the end goal. – darioo Mar 9 '11 at 8:56
The fact that Scheme is not used in industry or anywhere for 'real' application is true, however the ideas of functional programming are and continue to become increasingly relevant. Sans syntax of the language, the concepts learned will appear with whatever the OP decides to do. – mduvall Mar 9 '11 at 9:02
The site combines video sharing with basic social networking features. I will use a 3rd party to initially handle video transcoding and delivery. (It is a custom site, and I do not think it could be forced into a CMS like Drupal or Elgg.) I am inclined towards Python or PHP, depending on 1) support network; 2) ease of learning/use. – David542 Mar 9 '11 at 9:10
@David542 I don't know much about Python but php.net is a good resource for PHP. – Belinda Mar 9 '11 at 9:14
1  
Six months to learn how to program and produce an application and you recommend the SICP? Never mind that the OP's goal is impossible, but the SICP? Isn't this a little like recommending Feynman's Lectures on Physics to someone that wants to build a rocket in six months? – Corbin March Mar 9 '11 at 17:33

Unfortunately, its not a fixed amount of time, the kind for which you can allot in a business plan.

Some kids can read a couple of magazine articles on programming in Basic, and a couple months later they're writing an interesting game... in 6502 assembly language.

Other adults, after a technical degree and at least a half dozen semesters of CS classes, can show no evidence of being able to program their way out of a paper bag during a job interview. Some people drop out of the CS or software engineering dept. because they can't even get that far.

The best you might be able to do is to start programming, any language, any book, do lots of it, problem solving particularly, and see which group you fall into. After that, assuming you're still in the game, specialize in the technical needs of your planned project.

share|improve this answer

Although I do not guarantee that you will learn enough to make a commercial website , I can confidently tell you, from my own experience, that you can learn a lot in 6 months. Here are a few tips.

1-Start from the Basics.

Do not in any case think that you can skip the basics, even if they do look a bit easy. This is one of the greatest mistakes I did when learning C++, I skipped the basics. Before trying to use any language, especially advanced ones, you should have a firm concept of the basics. Try buying a good book on the language you are trying to learn for the website.

2-Learn the Easy Stuff First

It is not necessary to start directly from the main stream languages of the web (C# , PHP etc.). Try learning some easy language first. Something educational to make you familiar with the key concepts of Programming. I suggest you learn a scripting language with a nice clean syntax like Python. Or you can learn one of those educational languages like Pascal, though it is a bit obsolete.

3-Try Making Some Simple Programs/Web Pages First

Before starting to make an advanced website containing client-side and server-side code. You should try making something simple for practice and to make you more familiar with the concepts and features of the language you are learning and how to apply those features to suit your needs.

4-Think Like A Programmer

Sometimes the biggest problem and challenge for beginners is how to "think like a programmer". You must understand that knowing all the features and the odds and ends of a language does not make you an expert developer, or even an intermediate hacker :) . You must not only know how to solve a problem but must also know what the best way to solve a problem is.

5-Learn from Other People's Code

Try reading other people's code. The best way to do this is to make a program and then see the source code of a similar program made by an expert. Aside from increasing your programming knowledge it will also make the mistakes and design - flaws of your own code clear. The expert's code may not only be more efficient, but may also be shorter than yours which may teach you how to do more in less code. Increasing your productivity and making your code better.

6-Never Think You Have Learned It All

You must never , never ever, give way to the illusion that you have learned every thing there is to know. Always keep improving yourself and thinking how you can solve a specific problem better.

Resources: There are a lot of resources available on the internet including online books, wikipedia, planet source code etc. But the best resource in my opinion is something that looks for resources i.e search engines like google. You may also buy books but please avoid the ones which have titles similar to "Learn X Language in N Days".

I know with other's help, my learning experience will be both more productive and enjoyable To contact with experienced developers and learn from them , the best thing you can do right now is to join an open-source project. You needn't contribute to it much, it isn't even necessary to be good enough to be listed in the "Main Contributors" List; just try to understand how and why all the other people coded the way they did. This will easily help you accomplish points 4 and 5.

Helpful Links:

1: Simple Advice For Learning A Programming Language

share|improve this answer
check the edits – ApprenticeHacker Aug 3 '11 at 9:47

It's going to take you a lot more than six months to learn enough to code up a reasonable prototype. You not only have to learn how to program, you also have to learn about all the other stuff that goes into making a Web site: database management, communication protocols, security, etc. Even with all the frameworks around, it will take some time to learn what works well together (and what doesn't).

It's like not knowing how to cook, but wanting to open your own restaurant. Learning how to cook is only one of many skills you would need to develop, and it's not the most important one.

Having said that, if you want to learn how to program for its own sake, dive right in. The suggestions offered by the other responses in this thread are pretty good.

share|improve this answer

Like any Do-It-Yourself projects, you can find enough information on the internet and get some help on specific problems and who knows, it may be good enough to build your site. I have no idea how complex it is, or how much traffic you expect. You'll waste more time than an experienced developer. The easiests tasks will take you exponentially longer.

The question is, do you care? When your potential customers tell you the site is too slow, will you give up or spend all day and night trying to fix your website only to discover it's the database design holding you back?

I've hammered thousands of nails, but no one has ever called me a carpenter.

share|improve this answer

If you want to be as efficient as possible, then you have to do something counter-intuitive; you have to repeat things. I mean, you have to take code someone else has written and copy it over. You have to take exercises you've already done and repeat them again. It may seem stupid, as if it doing it once is the same as doing it twice but it's not. Practice matters. You'll want to be able to do easy things without thinking so you have free thought for harder things.

As for your site, start out by taking your mockup and taking things away from it; make it simpler and simpler. If you do this and you also learn the coding basics then you'll know what to learn next to build your site. You'll be able to make "exercises" for yourself that you can either do or you can ask for help on (what to study to be able to do it or just how to do it). So you'll be building your site as you are learning.

"For the things we have to learn before we can do, we learn by doing." -- Aristotle

share|improve this answer

Your Answer

 
or
required, but never shown
discard

By posting your answer, you agree to the privacy policy and terms of service.