One of the major regrets in life is that I didn't do something with my introversion. I didn't manage to get past the first year of college because of that. I have chosen the path where there are no video games and other time sinks, all I have is the internet to quench my thirst of learning the ins and outs of the field of Web Developing/Designing. Though currently, I'm taking a Web Design Associate course at one of the best Computer Arts and this is the last month of the class.

Even though I'm still a sapling, I love this field so much. So basically, At school I'm learning web design while at home I'm teaching myself web-developing.

First thing first, returning to college seems impossible at the moment because of some financial problems.

I'm pretty comfortable with CSS and HTML and I'm into PHP/MySQL at the moment. Could you please provide me a web-development Curriculum to follow. And do I need to learn about the theories behind?

And I think I'm still young(I'm 18 at the time of writing). Is it a good thing or bad thing for choosing this path? I'm glad with my decision but in all honesty, I'm worrying about my future and employment because I'm an undergrad, coming from a country where companies are degree b!tches, it saddens me so.

Thank you.

(My questions are the bold parts. )


I question the wisdom of asking programmers for life advice :) but with the caveat that everyone's path is best left to themselves, here's my little thoughts:

  1. If finances are tight, learning enough to make money wouldn't be a bad starting point. I see dozens of requests for PHP/MySQL programmers daily, and while I wouldn't imagine liking any of those positions for long, they might be just the springboard you need to make some money while learning how to program. If you want to go down this route, I suggest starting at the PHP Security Manual. (Mostly because too many PHP programmers never learn how to avoid cross-site scripting problems or SQL injection attacks. You can write bad code in any language, but PHP seems to be a haven for bad programs.)

  2. Learning Ruby on Rails would let you build sophisticated web sites quickly, but it requires a little more discipline than PHP coding to get started. Learning about the reasons for the discipline may take years :) but the short version is "an ounce of prevention vs a pound of cleaning up after bad code". The usual introduction is the Pragmatic Programmers Agile Web Development with Ruby on Rails. (The URL is for the beta version of the next book, which ought to be out soon. Still a great starting point.)

  3. Since so much of web design is usability, legibility, and following conventions, I strongly recommend reading A List Apart.

As for what to actually do, I would recommend making a website that interests you. If you love fishing, put together a website to accept posts from fellow anglers about their favorite fishing spots, and look into what's required for adding Google Maps integration, add a fish database, and so on. If you're really into math, try building a calculator. Keep adding features. Just pick something that you think you can work on until the wee hours of the morning for weeks on end. (Me? Addicted to answering questions on stackoverflow? Never!) Show friends, ask for input, and then try following up on it. See what you can do. :)

I think being well-rounded in abilities makes a huge difference; it might not hurt to try solving problems at http://projecteuler.net/ with several languages. Roll a die to decide between Python, Ruby, C, C++, PHP, Erlang, Java, C#, JavaScript, whatever looks interesting.

| improve this answer | |

Unfortunately the "online courses" niche is pretty jammed up with hoaxes, spammers and frauds. I wouldn't really recommend any of them. That said, the best way to learn is by example. If you've decided to concentrate on PHP, there are literally hundreds of applications out there that provide source code, like MediaWiki (which powers Wikipedia), PHPNuke, Joomla, Drupal... I mean there's so much out there. I'd recommend picking one and studying it from top to bottom to understand how people with experience in that platform write software. Just that, plus your formal design training will be a good place to start.

If you really want to get serious about software development you can always use the MIT OpenCourseware site. These are lectures and assignments you can take for free online, and they provide a good introduction to computer science in general.

Good luck!

| improve this answer | |
  • MIT OpenCourseware is great, but it's also quite tough... – Fred Foo Mar 6 '11 at 10:57
  • @larsmans The tougher, the better. No? It's MIT after all :) – kprobst Mar 6 '11 at 11:01
  • Thank you, I totally forgotten about the open courseware. Thanks again – ChickenPuke Mar 6 '11 at 11:02

As far as web-design goes, I would suggest you keep your eyes open on the internet and see how other designers do things. A great source to learn about design is Smashing Magazine. However, that website will only get you so far and you might get stuck trying to do the things they show you. So like I said, just keep your eyes open and see what other designers do, then try to design original websites yourself. My teachers used to tell me to design the craziest websites I could think of, for example I was once told to design a website about elephants, just to get inspired and work on my creativity.

As far as development goes, I suggest you dig deeper in PHP if that's what you're into. If you're self-taught, you might have missed out on some key elements of the language, but of course I don't know how you taught yourself. There are a couple of books I would suggest:

PHP Objects, Patterns, and Practice, Second Edition has taught me a lot about object-oriented PHP programming and it goes well beyond the basics. If you have the time, you should definitely give it a read.

PHP in Action is also focused on OO but goes beyond that and brings in concepts like refactoring and testing.

The http://www.PHP.net documentation is also a great resource for figuring things out for yourself, but beware of the code examples. Some of them are just plain wrong.

You can also check out the CodeIgniter framework once you get comfortable with PHP.

If you don't want to stick to PHP, I suggest you take a look at Ruby on Rails; I have recently started that myself coming from a PHP background and I find it to be a very powerful framework. The Ruby on Rails tutorial is a good way to get started as it'll guide you through the basics. However, I would suggest a book like Agile Web Development with Rails if you're serious about learning RoR.

Good luck!

(had to put the links in my text cause I'm not allowed to link more than 2 :()

| improve this answer | |
  • Thank you for the input, I'll definitely grabbing that book later. I must say, I'm always browsing for showcase designs almost everyday that it leaves me frustrated because..I want to create something beautiful that I'm still not capable at the time being. – ChickenPuke Mar 6 '11 at 11:06

I were in your position just 3 years back. Now I develop J2EE based web application using Spring and Hibernate for a company based in London. Since I have been working on Java for last 3 years, my suggestions will be on Java only and I think you can bet on Java (most widely used programming language in this planet). My suggestions are :

  1. Try to learn at least one JVM based language (it could be Java, Scala, Groovy).
  2. Try to learn at least one web framework (Spring, Struts etc...)
  3. Learn MySQL (if possible Hibernate - Object Relational Mapping tool)

Thats enough to get you a job. Once you get a job then try to learn at least one new langauge every year. It could be any language.

| improve this answer | |

First, I'd like to commend you for the guts and courage to ask for advice, isn't always easy to do.

As another self-taught programmer, I've been where you are now, know a few things, have done a few things.

I think there are a few tip's I'd like to pass on.

  1. Never stop learning, and assume you know all that is needed to be known. There is never a point in your career, where you can settle for just doing what you know, and knowing and learning more. Because when that occur's your career is gonna die.

  2. Read and Practice, the more you read, and then practice what you read, the better off you will be. Probably my biggest key was that I created a lot of sites that forced me to learn or self-destruct.

  3. It takes a lot of self-discipline to be a great programmer, because it takes more than talent or skill to become good. From how to work with source control, what kind of best practices make sense or not sense to your current work environment. How to deploy your code from dev to production. How to handle and manage a good development environment. How to become more than a cowboy coder.

  4. Planning is a huge must have for any good professional programmer, before you have any code or design work done, make sure you have a clearly written plan, that meet's the goals or objectives you are trying to meet, whether they are your own or someone else's. Seen so many people and companies waste time and money because of no planning, and no clear thinking, and no deciding capabilities. Plan your day, plan your job, make sure everything is as thought out, as you want the result to appear to be.

  5. Always assume someone else is going to have read your code, and think it's a piece of crap. This is something in our dna, we always think other people's code is crap :) So always assume that your not just coding for yourself, but for the future programmer that has to fix or update or modify your code.

  6. Clear Written and Logically Easy To Understand code is worth it's weight in gold. How do you indent, do you have everything in mixed case or all lower or upper case. Whatever language you use, are you using the standard coding styles? Can other people in your skillset understand what you did and why?

  7. What happens if you die or go someplace else? Is your code understandable, and well thought out so that if someone else had to modify it, it wouldn't be too hard?

  8. Do Short Term, Think Long Term. Yes we have all our daily work that we must do, to pay the bills, but we also must think long term about: Training, Code Performance/Scalability, Design, Coding Standards, Coding Styles, Coding Frameworks.

Being a programmer is a craft, like being a blacksmith is a craft.

And there's far more to master than just doing horse shoe's, it's all the other stuff beneath the tip of the iceberg, that can kill you, if you don't master it.

Good luck!

| improve this answer | |

Andrew Grove had a good motto that you seem to be following: "Only the paranoid survive".

See if there are various groups near you that would welcome web designers or web developers. I know of a few Meetup groups in Calgary that would be another way to make connections and possibly find a mentor. A similar approach could be used on nearby colleges as well. This would also be a way to get some ideas from other developers within your desired expertise.

| improve this answer | |