Ask HN:
"I'm 20 and I need advice."
I am 20. My goal is to amass $1m (Australian) by 35 so I can do some substantial things later in life (I've got an idea for a business of maintaining water wells built by various charities in African villages and charging the US government for it.). I could do this by getting a high paying job within 5 years and getting above average returns investing $50,000 a year. I could also do this by building a successful small business and reaping a high income or even gasp selling that business for $1 million.
I imagined that if I was 35, and I became 20 again and asked myself what I would be doing... I'd be saving money, learning how to invest in stocks, a girlfriend, learning to drive, finding a part time IT job, building random stuff and trying my hand at making a mini-business.
I've saved up several thousand dollars which I've invested into various stocks (and got lucky :] ). I have a girlfriend, and I make stuff in my spare time. All I think I need to do now is learn to drive and get a job. Driving lessons cost money so I'll do that when I get an IT job first or some other form of income.
The problem is, I can't find a job.
I've been reading lately about how IT-related university degrees are worthless if you want a job in IT... Either you've been putting effort into learning programming so you've become proficient and easily become hired, or you don't.
I'm still in university studying software engineering / commerce (3rd of 5 years). I've applied for many (every) programmer job that seems remotely doable for me, but besides a telephone interview for a internship and an email or two I haven't gotten anything back.
I am alone.
In my software engineering degree year, there are people of various degrees of competency. There are some who are so good they already have jobs in IT companies before they entered university. There are average people who seem to get 60-70% in their assignments... but wouldn't be able to start a proper project for real. Then there are students who copy and paste code instead of using for loops and still managing to pass.
The smartest people (ones with jobs already) seem to be stuck ups and they talk about students not in their clique as if they're lower life forms, so I haven't bothered making friends with them. My friends in uni are of the second group... good enough to do the degree but not quite people I'd choose to work with on projects with.
I feel like I'm one of a kind... I get full marks for most of my assessments but I know nowhere near as much as the smartest students. They each have slick personal websites and portfolios of past projects and stuff, know the latest version control tools, can solve homework problems in seconds, etc. I have past projects too but not of the type I'd show to people....
I spent most of my free time programming things. My latest 'project' is a site for trading used textbooks, (I needed one and IMO the existing ones sucked). This is my most ambitious to date. I keep looking for people in my university to work with me but students seem to either be not good enough, or they're too good for me : /. I did find a acquaintance yesterday who was doing a design degree offering to do a landing page for me, though. Progress is chugging along but I have no one to guide me. I've razed the project and rebuilt it half a dozen times after finding some fatal architectural flaw and recently I've just found out using tables to layout pages is a bad thing : / . Every time this happens I get some what discouraged however I push on because I still need to make an extra $1000 by the end of the year to spend * (It doesn't look like I'll make it). If this site becomes popular enough I was thinking I could charge for extra services like bolding a textbook listing, or sticky-ing it for a short period of time; Ads is also an option.
I'm not getting anywhere.
I'm learning a lot the past two years but it seems like I'll never quite get good enough to be doing 'real work'. It's like entering the ocean to escape a deserted island; the island becomes smaller and smaller behind you while in front of you is the big blue ocean with nothing but water in sight... I keep learning stuff but there's always more that's "must-know knowledge to become good programmer". The latest one of these this year is "testing".
No, I'm not going back to work in McDonalds. I've worked there for three years and frankly I'm sick of dealing with the stress of waking up in wee hours and coming back home past midnight, not to mention the substantially lower academic grades that'll come with spending so much energy making burgers.
I guess all I'm looking for is some re-assurance that I'm doing the right things; I feel I'm not making much progress anymore even if I logically believe it'll be fine eventually as long as I keep putting effort in... Let me go back to my original topic: If you were 20 years old today, what would you be doing?
* I don't dip into my savings because its my retirement fund - it's for "learning how to invest in stocks" and buying capital goods like houses and computers only.... at least until I'm 35. To spend an extra $1000, I have to earn it, not just sleep waiting for stocks to grow.
And that's my life story so far.
(Replying to PARENT post)
If you can't get people to work with you, may be you can get to work with them. Great people may need someone to help with some projects. Be indulgent, help others, if they have lesser capacity than you do (on some things, they'll be better than you on other things ).
The trading textbook website is a good idea. I can feel how this idea came from your experience, and trying to solve an issue for yourselves is a good way to start a project.
(Replying to PARENT post)
Knowing what I know now? Fixing my mental hangups.
I can't really tell from one post, but possible hangups in your post include fear that you can't do something you want if you don't have a big bankroll, fear that you aren't doing enough or accomplishing things fast enough, fear that you aren't going in the right direction, worry that you are inherently unhirable, worry that you aren't good enough, worry that your past work isn't good enough, worry that your present work isn't good enough / fear of showing it in an unfinished state, fear that you don't know enough, desire for external reassurance before you can feel assured.
Anyway, things like this are all deeply in your head, and fixing them would go a long way to the confidence that wallflower describes.
I mean, that's the sort of thing I'm trying to do to myself now, and that's the sort of thing I really really would have benefitted from when I was 20. Would (I think) have made a lot of difference to the intervening years.
(Replying to PARENT post)
You're just setting yourself up for disappointment if you go down this route you've planned for yourself. The kind of money that makes people rich doesn't usually come from wishful thinking. Hard word, passion, and perseverance play a part. Of course it also helps to come from a wealthy background, have influential parents, and be well educated.
But all of that doesn't matter.
What you should be doing is figuring out what gets you up in the morning. That can take years. Some people are just lucky and find it early before they go into university. Most people I know who've gone to university ended up working in a completely different field than what they studied.
So don't sweat it man. You're twenty. Go drink. Get high. Backpack around Europe. Start a band. Or a business. Watch it burn away all your money. Move in with your parents until you figure things out. Move out to the big city. Meet people.
Eventually it will hit you straight in the face. Whatever it is you're suppose to do that gets you up in the morning... it will just come to you and you won't be able to sleep without thinking about it. That thing is what will give you the drive to wake up in the morning and work your ass off all day.
And if you're lucky, you'll get that million dollars. Only when you do you might not even realize it. You'll be too busy working on the next big thing.
(Replying to PARENT post)
* Finish your degree, but be aware it's probably just a meal ticket.
* Adopt a philosophy of lifelong learning.
* Setting goals is good, but don't fixate on the number such that you miss an opportunity.
* Show your projects to your friends in the second group; someone will surprise you.
* Do your homework or hack your side projects at Jelly or a similar co-working group.
* Unless your project is very small, don't raze it, iterate it. This more or less applies equally to code and business (pivot).
* As you grow in confidence, show people from the first group your projects; someone will surprise you.
* Learn a new language about once a year. Be sure it's sufficiently different from the last one, i.e. C family one year, ML family the next etc.
* Read news.yc and make a note of the interesting tech people here are using. Read up on it.
* Don't read too much news.yc.
What school are you studying at?
(Replying to PARENT post)
Live to be happy now, because the future is never what it's cracked up to be. Not that "live in the moment" do karaoke bullshit, but look after "you".
(Replying to PARENT post)
I'm a senior software developer in Australia who have spent the last 4 months searching for talent at the junior level. I believe that experience is less important than attitude; particularly enthusiasm and initiative. If you have both--and it sounds to me like you do--and are smart enough, we can teach you the rest.
Please do me a favor and send your resume to me: sebastian@e-channel.com.au--make sure to reference this HN thread. While my team is currently full due to recent hires, we're growing rapidly and could be in a position to put on another full or part-time developer soon.
And even if I can't give you a job, I can hook you up with other budding entrepreneurs to collaborate with on projects. I might be available to give you a hand myself.
You'll get there. I've seen quite a few of your peers lately, and you seem to be way ahead of most of them in the areas that matter (at least to me). Trust in yourself and your drive will take you where you want to go.
(Replying to PARENT post)
Quote from George Foreman about longshoremen. Longshoremen are the people who work on docks, loading and unloading giant container ships.
Mr. Foreman, who stared down financial collapse as an adult despite a troubled, impoverished childhood, said he knew real wealth when he saw it. "If you're confident, you're wealthy," he says. "I've seen guys who work on a ship channel and they get to a certain point and they're confident. You can look in their faces, they're longshoremen, and they have this confidence about them...Iβve seen a lot of guys with millions and they don't have any confidence," he says. "So theyβre not wealthy."
(Replying to PARENT post)
1.) I found out that it's easier to impress people if you have some portfolio that's related to the job you are applying. So write code. Opensource projects or personal projects.
2.) Spend sometime doing #1. Say 6 months? You'll be surprised how much you'll learn in that very little period. I'm in this stage.
3.) Don't bother about how bad the code it for a while. Just write it. It should just work. Should just solve the problem it intends to solve. Doesn't matter if you write in php or ruby. It might even be a simple shell script that helps you setup Adobe AIR projects quickly (http://gist.github.com/306363)
4.) Show it off! Flaunt it everywhere. You'll be surprised how a simple application can be useful to people. ex: I found myself lazy to signup for an invoicing site to create invoices. I wrote http://billmebob.com It's dead simple. But I still see some people use it (a few regular users).
5.) Do variety. Write a shell script, android app, rails app, then hop to tryout Arduino... whatever... it's upto you. just remember _variety_
6.) Once you find out what you like at #5 get back to that and do similar things (say writing android apps).
7.) Stop reading this and write code.
P.S: $100 bet! Try this and you'll enjoy it :)
(Replying to PARENT post)
1. Things chance. It's fine to have a rough goal, but don't think you'll be able to plan to road there for the next 15 years now. Things change, often.
2. Sounds like, apart from this long-term goal, you have an initial goal too: get a job. You mentioned you don't know the latest version controls? I assume git? Just learn it. You just found out using tables for layout isn't hip? Learn css. It sounds like you have a lot to learn, to be quite honest, I wouldn't hire someone who didn't know those things. Learn and study.
3. Because things change, what seems very hard now will seem very easy later. So keep things into perspective :)
If I was 20 years old right now, I'd take any crap job for 3 months, live with my parents, save the money and then take off with a cheap ticket on a trip around the world going as cheap as I possibly could, no return date. While oil (= tickets) is affordable :)
(Replying to PARENT post)
Some tips from my small experience so far.
(1) Don't take life to seriously. When I was in college, I started a simple business that kept very good pocket money flowing in - like your textbook business _might_. I spent every single cent that business brought in. I reckoned that after I graduated, my first couple paychecks will probably cover 3 years worth of pocket money savings. They did.
(2) Being a billionaire by 30 requires something extraordinary. Being a millionaire doesn't. The best way to do it is by working hard, saving money and being really good at something most companies will pay you for doing. You don't even need to be excellent - just really good, That, combined with a disciplined saving mentality will get you there quickly. It helps to live with your parents for as long as absolutely possible.
(3) When you start earning real money (after graduating - or maybe before if things go well) then save up a nice little bit. Invest in shares and so on, like you are doing now, but as soon as you can, buy a little house and start renting it out. Then pay it off and get another. And another. You'll hit that million mark pretty quickly that way.
(Replying to PARENT post)
I'm 20, Australian and finishing a Bachelor of IT degree. I've worked part time at a small marketing agency (developing websites, managing servers) in Brisbane. Getting the job was easy, they needed someone that had an idea of how MVC worked and how to program PHP. There's so many low barrier programming jobs around, I don't understand why you haven't been getting much attention.
I contribute to and start open-source projects as much as I have time to. I have a tiny portfolio:
A month or two ago, I applied for a Graduate Developer position at Atlassian and got asked for an interview. I think my open-source experience had a bit of influence, there (many Atlassian employees are open-source developers). I studied up on algorithms, data structures and Java. I was able to ace the interview and I'll be working at that really nice company next year.
My naive advice, get some work experience at any small business, contribute to open-source without being embarrassed and study hard for interviews.
Then again, do the opposite of what I do if you think that's best. I'm just working on instinct and it's possible I'm not going in the right direction.
(Replying to PARENT post)
Because it harms your application, or because you read somewhere that is a bad thingt? Hacker News actually uses tables for layout... Don't worry about what you are supposed to do. Maybe a layout without tables would be better in a way, but to the end user it doesn't matter. Just focus on launching.
(Replying to PARENT post)
Go to developer user group meetings (Java, Microsoft, etc.). Join the IEEE and ACM and go to local meetings. Look for interesting techie Meetups or even ones that aren't technical but are likely to have software developers there.
Take one of your projects and build up a neat talk about it. You'll be "the guy with the neat textbook site" or something. That includes just talking at the pub or even giving a presentation somewhere.
Build up your LinkedIn, Twitter, and maybe even Facebook connections with people you meet. Stay in touch with them all and let them know that you're looking for work.
(Replying to PARENT post)
If you are serious about that dream, talk with people who are or has been working in Africa, learn what are the real issues and figure out how you would overcome them. Learning CSS layouting won't move you an inch toward that dream.
On the other hand, if you want to make money as a programmer, learn to program. It has nothing to do with particular techniques - during the next 15 years, you will learn a lot different ones, which themselves will become irrelevant, but your generic programming ability won't.
(Replying to PARENT post)
1) Building an asset base that provided me with an unearned income equal to whatever my needs are at the time (e.g I need $1000 per month to live, I make an asset that generates $1000 per month without any significant effort on my part)
2) To achieve 1) I would be investing my time and energy in learning web based technologies. Specifically: Java 1.6+, Ruby, RESTful web services, XML, JSON, AJAX, Spring, Maven, GITHub, SVN and so on.
3) To achieve 2) I would spend my evenings writing code for my own medium sized project (e.g. travel review site) with no intention of selling it. My work would involve learning how to make things work efficiently on the web so that my own involvement was kept to zero, with the system continuing to work perfectly.
4) To achieve 3) I would work closely with people who really know how to code for the web. I wouldn't worry about how "cliquey" or anal they were. I would ask them questions and listen carefully to their answers - particularly if I didn't understand them.
Hopefully this will help you, but if you'd like more information then feel free to contact me via www.gary-rowe.com.
(Replying to PARENT post)
Sounds a lot like you're designing a system to have a good design by your internal metrics, then measuring it by how much money it's bringing in, which is giving mixed results.
Your guides should not be some idol programmer person but your customers. What do they need? What do they want? What value can you/your site add so they can't not use you? What deals can you work towards - e.g. getting your site in the freshman handout literature, getting it endorsed by the student union, finding which textbooks are needed for which courses, adding amazon links for textbooks for particular courses that you don't have used copies of, buying the textbooks yourself and reselling them? Escrowing the transaction somehow? Are you solving this as a problem which scratches an itch for yourself?
Your architecture will always have flaws - leave them alone. Go find some people wanting to trade used text books and put some adverts up around you (not on the site).
(Replying to PARENT post)
You should aim to get a good software job within a year. For this, I recommend - Work on small projects or contribute to open source with the aim of lightening your resume. - Start taking part in online programming contests (TopCoder, etc) to clear those interviews. This also ligthens your resume. - You seem to be do-it-from-scratch-everything-myself guy. Instead learn technologies like Wordpress, Joomla, GWT, etc and get yourself one of those fancy personal websites. - Keep trying for a good job and get over your failures after a beer. It may take a hell lot of interviews but eventually you only need one job and it won't matter how many interviews you did fail.
(Replying to PARENT post)
1. Learn C and master pointer arithmetic. All modern computers are von Neumann machines and this is the only way to learn how a real computer works and how OS is implemented. This is the low-end of the power spectrum. 2. Learn Lisp (Common Lisp, Scheme or Clojure) and master closure and macro. This will help you understand lambda calculus. This is the high-end of the power spectrum. You will learn things you didn't think were possible. 3. Learn the good esoteric languages in between: Python - great for prototyping, web dev Perl - great for Unix system admin Ruby - great for web dev Erlang - for concurrency Haskell - for purely functional programming perspective <any other language that interests you> This will give you different perspectives on how to solve your problems. No one language is suitable for all tasks.
4. Learn to run Unix (Linux, FreeBSD, etc.). Start with an easy newbie distro then move on to advanced do-it-yourself distros like Arch, Gentoo, and FreeBSD to hone your skills. 5. Learn the Unix tools (grep, sed, awk, tr, etc.) and its editors (emacs, vi[m]). 6. Master sorting algorithms (quick sort, merge sort, heap sort, etc.) and their respective strengths/weaknesses. 7. Master data structures (heap, hash table, tree, list, vector, stack, [de]queue etc.) and their strengths/weaknesses. 8. Master graph theory and graph algorithms (shortest path, DFS, BFS, strongly connected components, etc.) 9. Understand TCP/IP (and other protocols), pipe, socket, IO file handling 10. Read source code written by top programmers. (FreeBSD/Plan 9 kernel and utilities, C Programming Language by K&R, PAIP by Peter Norvig, On Lisp by PG) 11. Work on interesting problems and challenge yourself.
Expect to spend the next 10 years developing your skills. You're only 20 so you'll be there by 30 ;-). Develop passion and curiosity for what you do. Embrace a life-long learning attitude and help those who are less knowledgeable and be humble about what you know. And the most important of all: have good taste. I wish you the best!
http://www.catb.org/~esr/faqs/hacker-howto.html http://norvig.com/21-days.html http://cb.vu/unixtoolbox.xhtml
(Replying to PARENT post)
Concentrate on the short term. The best way to get into IT is through internships. Can't find one? Get on an open-source project. Even if you can't contribute, keep reading other people's already reviewed code (open source tends to have better code than what you'll see in school). At least it will give you some experience in distinguishing good code from bad. IT is all about patterns, some of the newest coolest technologies you see around are based on the same ideas as the one that solved a similar problem 10 years ago. You will see patterns as you get more experience in reading/writing code. Once you feel comfortable and start making contributions to these projects, it will help with your resume as well.
In the mean time, keep doing what you do today. You have a gf, going to school, learning more. Take it one step at a time and keep a positive attitude. Also, talk to people from this first group that you mentioned. You will be surprised how much of a difference connections make in getting an internship, and maybe you'll get to work with a couple of them on good projects for school.
Good luck :)
(Replying to PARENT post)
http://37signals.com/svn/posts/2359-bootstrapped-profitable-...
2. Your belief that stocks will help you get to $1million worries me. Most of the West is swamped in debt, and the retirement debt bomb hasn't even hit us yet. We've pulled forward so much future demand via debt accumulation that we may not be able sustain current levels of aggregate demand, and the debt bomb (google it) hasn't even hit us yet.
That could hit stocks hard over the next 10-20 years, especially since most stocks are priced not just on the company's liquidation value but also on the net present value of 'expected' future cash flows (Wall St.'s ability to accurately anticipate the future should be by now be roundly questioned if not outright laughed at).
I would advise not relying on stocks to get you to your goal. Remember, a dollar saved or not lost is a dollar earned.
(Replying to PARENT post)
Let me know if you are in Brisbane, there has been a couple of opportunities for vacation/part time work at my company that I haven't been able to find anyone for previously. Not sure if there is any right now, but wouldn't hurt to know where to contact you (assuming you are in Brisbane).
(Replying to PARENT post)
(Replying to PARENT post)
(Replying to PARENT post)
Have you ever heard of the Google Summer of Code? It is this program ran by Google every summer where you get to contribute to an Open Source project. You can only apply to this program if you are student, and I think it would be a very valuable experience for you if you manage to get in. Working with Open Source can also give you the time traveling experience that you want by receiving the advice of the most experienced developers from that community, since it is in their best interests for you to become a better developer so you can help within that project.
(Replying to PARENT post)
* exercise (gym, sports, whatever I enjoyed but got me moving)
* go into engineering, comp. sci., or statistics instead of physics --> main thing is choosing a discipline with solid job prospects in a variety of locales while also aiding me in my pursuit of bootstrapped projects
* go to hacker meetups, democamps, diy clubs
* work on more personal projects
* find like-minded people that have personal projects (see going to hacker meetups, democamps, diy clubs)
* have fun with friends
As an aside: my experience is that a good deal of students in B* programs feign being smarter than they actually are. It's usually not until towards the end of a B* program that students realize how little they actually know. If you're looking for partners in the second group look for people who are clever and genuinely curious (about life, people and how things work). (where * is A, Comp., Sc., Eng., etc)
(Replying to PARENT post)
Most HN'ers will tend to go on about how much work you can do at 20 because you have no real responsibilities and are used to living in a single room and eating whatever is convenient. Don't waste those characteristics on a goal 15 years out -- if you are passionate about the goal, start on it now, if you are passionate about something else (mountain climbing, interesting women, photography, good conversation, travel, diving, etc) go do it. If there is no obvious passion (pretty common) then adopt travel and make it a point to talk to people wherever you go -- you'll find passion, and the next steps become obvious.
(Replying to PARENT post)
I won't reply to everyone but here are the main points I've taken from all the comments.
Don't worry so much about money and long term goals because they change easily, working on oneself is important, e.g relationships, skills, confidence and principles.
When building a product, don't fret about internals and things on the list of "programmer's best practices"; users only care about what they want.
Keep learning and be confident; I'm making progress. Contribute to open source, participate in programming contests and keep meeting new people. Also, keep finding a job, one of these days I'll get one.
To answer a couple of people, I study at the University of Sydney and live in the same city.
Again, thank you very much. :)
(Replying to PARENT post)
(Replying to PARENT post)
It maybe sounds cliched, but I say just do the best you can and set expectations realistically. If you're not getting callbacks for jobs it doesn't mean you suck - it probably just means your resume/CV or your approach needs to be tweaked. Maybe let some other people look things over and see what they think? You're obviously motivated, so I think you're one step ahead of a lot of people already...
(Replying to PARENT post)
This is what I did to get a good job - 1. Play in programming contests - topcoder, codejam, etc. and get under top 20 in India, and hence learn to solve algorithm questions 2. Apply to companies
I recommend that route. Google, Amazon, Microsoft, now Facebook as well - they all look at problem solving first. Next comes Computer Science knowledge - can be gained in dedicated 2-3 months' time. Do it. It's worth the result.
(Replying to PARENT post)
Let me copy from what I read in an article lately here on Hacker News: better beg for forgiveness than ask for permission.
You can only do substantial things if you live like it. Not even a billion dollars is going to help on water problems without vision.
And you can make a difference already without any money.
(Replying to PARENT post)
Simply untrue. We all feel that way sometimes, but try asking someone familiar with yourself two years ago if they think you've progressed. (Hint: you have.)
(Replying to PARENT post)
(Replying to PARENT post)
(Replying to PARENT post)
(Replying to PARENT post)
(Replying to PARENT post)
(Replying to PARENT post)
Raise your aim higher. Aim for $1.5M by 30 to start with.
The amount you raise to will call for different things for you to do in life relevant for that aim. If you are %50 successful, its %100 for a lower aim.
(Replying to PARENT post)
Did you see vonconrad's post?
(Replying to PARENT post)
(Replying to PARENT post)
Where are you studying? Email me if you'd rather not reply.
(Replying to PARENT post)
Execute and Iterate.
At 20 you lack experience, the 10,000 hours, to be really good. Don't dream of things, do them -- even if they 'fail' in the traditional sense. Learn from the experience and try again.
(Replying to PARENT post)
2. Don't take life too seriously, there's plenty of time after 20 to do that
3. Meet girls and learn how to date them
4. Learn something useful that can help you later in life, actually just learn as much as you can about anything and everything
5. Have fun
(Replying to PARENT post)
(Replying to PARENT post)
(Replying to PARENT post)
1. Web Design Web design, from a coding standpoint, involves HTML and CSS. Using tables for layouts is bad: use CSS instead. There are plenty of tutorials online, but I recommend getting started at http://www.w3schools.com and checking out their HTML and CSS articles. Then get involved in some communities, read blogs, etc. Look at how other people are laying out their websites, and imitate. Get tons of practice. Your goal is to make websites with very simple, standards-compliant HTML and CSS. The other part of web design is, well, design. I think the more websites you make, the better eye you'll have for design (you might also need some Photoshop skills), but this can take years of practice.
2. Web Programming Once you can build static websites, you need to learn about the code that runs behind them. Start with JavaScript (start here: http://www.w3schools.com/js). After that, you'll need to learn about some back-end languages. I recommend starting with PHP (http://w3schools.com/php/default.asp). Use it to build a functional web application. It'll teach you a lot about how a back-end language can interface with the HTML you write. Chances are, however, your code will be a horrible mess all contained in a single file. Move on to Ruby on Rails, which will teach you a better way to organize your code in what's known as the Model-View-Controller framework. Heroku is a good place to go to host your Rails app. (If you want, you can use Python, Java, etc. I just recommended PHP and RoR because that's the path I followed.)
3. Database Administration Most decent web apps rely on a database to store information. Learn SQL with PHP, and put some database functionality into your app. I recommend learning SQL before using Ruby on Rails (RoR tries to hide SQL from you, so it's good to know what's going on behind the scenes). There are also some NoSQL solutions, which to be honest, I haven't spent much time playing around with. I recommend sticking with the basics.
4. Server Administration All the apps you write will run on servers, so it's good to know what's going on there. Again, this is an area where I myself am relatively weak, but here's my advice anyway. Go to Slicehost.com, buy the cheapest server they have ($20), and spend a couple days going through their articles. They are extremely helpful. Try to get a database running, and a Ruby on Rails app. You'll learn a ton about server administration, and about using Linux, too.
If you want, you can become an expert in any one of these 4 fields. Or you can be a jack-of-all-trades and become "good enough" in all 4 at once. I think this is really the way to go, because that "good enough" bar can be pushed pretty damn high. If you spend your time making real web applications that people can use, then you're bound to learn everything on that list.
Remember that Google is your friend. If you run into a problem, chances are someone else has run into it, solved it, and put the answer on the net. And communities are your friend, too. For example, spending a few hours in online web design communities would have taught you to use CSS instead of tables, and saved you weeks of time. You need to be persistent and resourceful, you need to both work intelligently and work hard, and you will learn a lot.
If you become a good web developer, finding a well-paying job won't be a problem. And unlike 99% of professions, a programmer can sit down at his computer and literally create wealth out of nothing. Hone your skills, put out a few projects, and you will have financial security AND personal freedom for the foreseeable future.
As for the rest of your post... The stock market is a loser's game; I think you should worry about investing later. And call me cynical, but there's truth to the phrase "money is power". Make money, put it to good use, and pat your self on the back. No matter what anyone says, at the very least having money will give you the time and security to do what you want. And Paul Buchheit's advice is good, too... without above-average drive and commitment, you won't be successful.
(Replying to PARENT post)
(Replying to PARENT post)
In other words: you're doing a lot of thinking about how to achieve a goal, but have you considered that the goal may have been hasty and not give you what you want, or may not give you what you want efficiently? You don't necessarily need $1m to do substantial things, or to run a company that can make a difference to African villages. You might do, sure, but I'd want to be certain that I wasn't making an assumption before drawing up a plan that will rule a significant portion of my life.
If $1m does turn out to be vital to your requirements, do you need to raise it yourself? Could you instead raise a small amount, launch a startup that helps African villages, and get someone else to invest the million?
For example, there was a couple who appeared on Dragon's Den (UK investment-based TV programme) a while back, who had invented a water carrier that used the rolling motion to filter the water inside as it was being carried back from dirty creek to village. It's in use now, and has doubtless saved lives already. It could quite conceivably still be a pipe-dream if they'd have decided to raise all the money themselves.
(Replying to PARENT post)
1. Ignore those who say "don't be so serious at 20." You're VERY WISE to consider the path that you're on: you're not going to magically become experienced when you reach a certain age, and it's a competitive job market, and brutally so for the younger and less experienced. You're facing the classic dilemma of how to get enough experience to be employable...one which I'm also struggling with and I'm older than you. I wonder if some of the "superstars" in your program had parents or older siblings who were in software, to provide them with "tribal knowledge" and connections.
Anyway, it's your life, and I commend you for examining its direction so that you can do something about it.
2. Consider reading "Seasons of a Man's Life" by Levinson. It starts very slowly, and is somewhat dated (life today is a little more flexible and fluid, but not that much), but it's an interesting guide to the different stages of adult life. Again, if you're like me, you had some idea of what was expected of you in childhood and teens (Prepare For University!), but not so much after that. It turns out that for most of us, life is both richer and less predictable than "secondary school, university, job, marriage, gold watch retirement, death."
(Replying to PARENT post)
I learned how to code and build UNIX systems before I went to college. So did most of the people you're going to be competing with to make any real money, so you should probably be patient, you already missed the first bus.
(Replying to PARENT post)
"Many people with jobs have a fantasy about all the amazing things they would do if they didnβt need to work. In reality, if they had the drive and commitment to do actually do those things, they wouldnβt let a job get in the way."
- Paul Buchheit
-------------------------
I think that relates to the rest of your post that way. I'm also 20 and at one time I had envisioned a future where a lot of money was going to translate into success. I've learned that it's not like that at all.
Money (billions, millions, hundreds of thousands, etc) is a consequence of success. It seems, from what I've read, that you want an "IT job" but really don't care what it is. You merely glance over the idea of doing your own product. That's what you should focus on...you have the skills to build something yourself so go out there and do it. You will literally be changing the world...and your chance of making money will significantly increase.