views:

469

answers:

12

A friend and I have been coming up with website ideas for a couple years, mostly just jotting them down whenever we come up with a good, useful idea when browsing the web. For the past 6 months we've hired a couple different programmers to make a couple of the sites for us, but have been disappointed with how it's gone. Been too slow and too many miscommunications for our liking. So like the saying goes if you want something done right do it yourself, we're going to do it ourselves.

I know nothing about programming, I've never written a line of code in my life. I consider myself very good with math and about as logical as you can get, but I have zero real-life programming knowledge. The sites we want to make are all pretty 'Web 2.0'ish', meaning user-generated content, commenting on posts, pages that change on the fly, etc.

So here are some of my questions for anyone who's been there before:

Is there a language you'd recommend learning first? Something that is a good indicator how most other languages work?

What web programming languages do you recommend learning first based on popularity both now and the future. I don't want to learn a language that's going to be outdated by the time I'm an expert at it.

Any specific books you'd recommend?

Any general advice you'd give to someone literally starting at square zero for coding who plans on being in it for the long haul?

+3  A: 

The following question on stackoverflow contains a lot of interesting suggestions and starting points in respect to building public web sites: http://stackoverflow.com/questions/72394/what-should-a-developer-know-before-building-a-public-web-site

Don't be too preoccupied by the choice of the language to learn: if you're in it for the long haul, you'll learn several.

Advice for all beginning programmers: go build something.

marapet
+8  A: 

Start by making a website using HTML. If you get stuck, build off of that and slowly progress until you know everything you need to know. Rinse and repeat for the next 15 years.

  1. Learn basic HTML
  2. Learn basic CSS to style your HTML
  3. Relearn HTML correctly while following web standards
  4. Relearn CSS correctly while following web standards
  5. Learn PHP (or some server-side web development language)
  6. Learn SQL
  7. Learn to use PHP+SQL together properly (avoiding SQL injection and things like that)
  8. Learn jQuery or some other javascript framework
  9. When what you know is outdated, go back to step 1
Joe Philllips
Surely learning HTML doesn't take 15 years alone :)
Earlz
No, but you start with HTML, then you see you want/need to learn CSS, Javascript, various frameworks, oh some server side script wouldn't hurt so PHP, Python, ..... :D
KTC
Why is javascript at 8?..i would put it at 5.
SysAdmin
Sure, it could go there too. I was thinking about putting it there but really you could rearrange a lot of these so I didn't bother worrying about it too much.
Joe Philllips
+1  A: 

I was able to teach myself by breaking down other projects. Take a few open source applications that are relatively lightweight, and see how they work. Change things around and see what it does, look for tutorials on how to add things and try to create your own addins for the program.

Eventually you will be able to write something on your own without any support from another program.

webdestroya
+2  A: 

I would say first thing learn how to make a static website with HTML and CSS. Maybe learn a bit of Javascript(look at jQuery!!) and make a decent looking site. It doesn't matter if it doesn't actually "do" anything.

After this, it's time to learn a server side language. By now you'll probably know enough about programming(hopefully from the javascript bits you did) to make a rational decision. Some of the notable frameworks include:

  • PHP
  • Ruby on Rails
  • ASP.Net
  • C++ CGIs (nah I'm just kidding)
Earlz
+17  A: 

Don't. Just Don't.

Generally sites put together by amateurs who think they can code up a complex websites first time out rapidly descend into an unmaintainable mess. You may consider yourself logical and good with math, but frankly that really won't count for a great deal when it comes to cutting clean maintainable code straight out of the blocks. This isn't to be elitist and say that there are not a great many gifted self-taught coders around, there are, but like any craft it takes practice, mistakes and failures to achieve competence.

Instead look at why your previous attempts failed:

  • Did you employ 'cheap' labour? It's quite common to find people who have limited experience 'doing websites' who are frankly out of their depth with anything beyond simple HTML.
  • Did you fail to specify correctly? If you had 'miscommunication' problems with your developer the problem is more likely to be your specification than the developer. It's very common for people like yourself to 'specify' websites by waving their hands at some 'web 2.0'ish' examples but not really deliver a hard specification as to what they actually expect. Disappointment inevitably follows.
  • Did you confuse designer with coder? Apart from very small sites the two are not the same and you should expect to employ different people with appropriate skillsets for each area.

I can suggest a couple of approaches. If your really want to try 'developing' then use a content management system like Drupal or Joomla. They offer a lot out of the box, have solid communities, and have extensions for just about everything. You could even skip using a designer to an extent by using Artitseer or purchasing an pre-designed template. And if you do need to create a new extension because you'll be focused on a limited module you'll stand a much better chance of success because you won't have to make the more fundamental decisions about code structure which will trip a beginner up.

Alternatively if what you are looking for won't fit into a CMS and you do need bespoke development then make sure you have your site exhaustively specified. Balsamiq is an excellent visual tool for laying out design, but you'll also require extensive written documentation too specifying all inputs, outputs and processes completely. Once you have that look to hire a professional developer who has a proven track record. Language is of secondary consideration, but be wary of any coder who just develops in PHP as it has a reputation for being easy to use and so tends to attract the less experienced. Deployment around a solid well established framework is a plus too.

Finally remember the old engineering adage: Good, Fast, Cheap. Choose any two.

Cruachan
Thanks for the honesty Cruachan. I responded to your comment in the post above talking about why it fell through with other developers so won't repeat myself here. But we haven't stopped looking for developers and if we found another one we liked we'd love to work with them. I'm not replacing my search with learning programming on my own, I'm doing them side-by-side. I still feel like there are good spots to find developers where we haven't looked, and some answers on here so far are confirming that feeling. But even if we found a great developer tomorrow I'd still like to learn coding...
Mugatu
...so I can better understand what is going on behind the scenes, get a better feeling as to what our future website ideas will take work and time wise, and so I can know what the hell I'm talking about when discussing how I want our sites to work. I feel like trying to contract people to make websites without knowing how websites are made will never end up too good. I'm also trying to rethink and rework our current ideas to make them simpler so if/when we do find another developer we have an easier project for him to work on. I'm not putting all my eggs in my own coding basket so to speak
Mugatu
+1  A: 

Your problem seems to be a lack of understanding of the available technologies. It will take you months if not years to learn to use them effectively.

I would recommend that you research into what exactly it is you are trying to make. It is not hard to find reliable programmers to do the work for you, but you need to be able to specify what you are after.

Explaining what you are after will take far less time than learning it all yourself.

This is not to discourage you from pursuing a path in programming, but be aware that it will take you years of effort to become as good as you will want to be.

Craig T
+1  A: 

Unless you really think that web programming will be your passion for the next 20 years, then I wouldn't start learning it. The best programmers are passionate about their craft, those are the type of guys/girls you want to hire. It will take you 2-3 years to get a solid background and enough experience to become competent enough to even start thinking about making a project like yours.

If you actually have the funds to make a project, then go to a web site like TopCoder and start from scratch:

  1. Run a competition for conceptualization.
  2. Run a competition for software specifications.
  3. Run a competition for design/architecture.
  4. Run a competition for development.
  5. Run a competition for testing.

Do it in the order specified above and in each step use the results from the previous ones. You'll get 10-15 people competing for each part of your project, it will be completed by a solid deadline and you'll get to pick the best one of several competed versions, and it will not cost you more than an independent contractor/freelancer that gets the entire thing done.

Lirik
A: 

Be curious. Try something small (probably smaller than you think would be interesting). Fail. Try something else. Make some mistakes. Try again. Get something small right. Take pleasure in that. Try something harder. Repeat.

Assume that the frustrations you will inevitably have are because of something you don't know, not because your tools suck. They may suck, in fact, but they probably suck less than you do. Read voraciously (books, code, articles, occasionally some poetry), so that you know, at least broadly speaking, how problems that are similar to yours have been solved before.

I don't think you need to make a lifetime commitment, but you do need to make a commitment to learn something today that you didn't know yesterday. If, after a few years, you're still learning, and have built a few useful things, but you wouldn't build them the same way if you started over, you're mostly doing it right. Keep going until it stops being interesting. If you think you know everything that matters, get out of the industry, because at that point you're either not as good as you think you are or you're not doing anything worthwhile.

For web programming, the language you choose is not important, but if you don't find Ruby or Python rewarding, there's not much hope for you. You won't be doing anything particularly wrong by learning C#, Java, or more "mainstream" languages. You'll need to learn enough HTML to make something ugly, enough JavaScript to confuse you, and probably enough SQL to be dangerous.

JasonTrue
A: 

Hey you are just like me! I had great ideas for websites and wanted to create one for a hobby. Just a few months ago, I knew 0% of HTML. Now I can create simple web 2.0 forums, classified ad sites, etc. Here's what I did and hope it would help you. (This is my opinion as to what would help you best)

  1. Go to w3schools. It is a site that explains to you the very basics of many computer languages. Look at the HTML section first. It's a MUST to learn HTML. Spend 2-3 days learning and creating a basic website in HTML.

  2. Go to the PHP section. PHP is specifically for web development(making websites). It is VERY VERY easy to learn compared to other web development languages. PHP is very easy to set up on your computer(xampp). Basically you can have a website up and running in a few days-it's that easy, you just got to put in the effort. Glance of that section and if PHP seems like a good fit for you to learn, go to step 3. If not, look at other languages, python/rails on ruby/java.

  3. Get XAMPP. This program basically makes your computer or laptop a server, meaning you can run sites. Use this youtube video to help you install it. (will take you step by step)

  4. Get this book. head first PHP/Mysql. This will probably be the BEST book to use to learn PHP/Mysql if you haven't done any web development before. It treats like a "newborn" and tells you to click on this, copy this, and what not. After you finish this book, you can probably create simple web 2.0 sites. ALL the head first books are good.

  5. Practice, practice, and practice.

jpjp
+1  A: 

If you really want to learn to program, and are interested in putting in the time to mature from from "newborn baby" to an adult, I would take a couple classes at a community college. Start with an introduction to programing class. Having an professor that knows the ropes will be helpful when you are first starting out. While taking computer science classes, teach yourself HTML.

Once you understand the main concepts of programming, switching from one language to another is mostly a matter of learning new syntax.

Good luck!

Barlow Tucker
Switching from one language to another can be just learning new syntax, but equally it can be a whole lot more - there's a vast difference for example between C and Prolog, and learning the syntax is a minor part of that
Cruachan
A: 

Try this e-book: Learn Python the Hard Way

The book is a very beginner book for people who want to learn to code. It's intended for people who have no coding chops to build up their skills before starting a more detailed book.

You can download the book here:
LearnPythonTheHardWay.pdf

The book is very simple:

  • 52 exercises in all.
  • 26 cover just input/output, variables, and functions.
  • 26 cover logic (boolean algebra, if-statements, while-loops, etc.)

Each exercise is one or two pages and follows the exact same format. You type each one in (no copy-paste!), make it run, do the extra credit, and then move on. If you get stuck, at least type it in and skip the extra credit for later.

Bill Paetzke
A: 

IMO you should start with Ruby. Its really easy to learn and if you follow the right tutorials you can get some impressive results real quick. See: http://www.ruby-lang.org/en/documentation/quickstart/

Good luck!!

WANNABE