I’m facing limitations because I don't have any money to even buy a $20 VPS or a domain name. I don’t have a bank account so I can't buy books from the Internet. What's your advice for overcoming these, what should I do to improve my situation, and how should I schedule my time?
http://stackoverflow.com/questions/194812/list-of-freely-ava...
http://www.reddit.com/r/csbooks
http://www.reddit.com/r/mathbooks
http://www.reddit.com/r/eebooks
http://www.reddit.com/r/econbooks
http://www.reddit.com/r/physicsbooks
And not just books, but there is a tremendous amount of useful technical informaation, tutorials, articles, etc. on the web that are free. Heck, you could spend a lifetime just reading papers from Citeseer or ArXiv.org.
OP: it might help if you told us a little more about what you're interested in, what kind of projects you're working on, what kinds of things you want to work on, etc.
Also, regarding the money thing... at the risk of stating the obvious, have you approached your parents or other relatives about funding some of your ideas? I mean, a domain name + cheap VPS really doesn't cost a lot... maybe they'd front you what you need to get started, and if you make something that actually makes money, then so much the better. If not, it's still a valuable learning experience for a fairly small investment.
Right now my main goal is to make money. In the long term I would want to have several websites set up and do some research in CS. I've only completed one web app, and it's a really simple one in Sinatra (it's a pastebin...). I plan to learn Rails, JS, and graphic design with Inkscape.
Thanks for the links!
Understood. Another option would be to setup some sort of online "donation box" thing (like some open source projects do) and just put the word out "help a high-school kid get a VPS / domain / books" and see if you can raise a few dollars. I know I'd chip in a few bucks to such a cause myself.
And, as others have mentioned, a summer job is an option. But it doesn't necessarily have to be mowing lawns or whatever. You already have some coding skills, and apparently have a computer and a 'net connection... maybe you can find a scenario where somebody will pay you to build them a basic app or website or whatever. Unfortunately you probably can't use ODesk or anything due to your age, but you might be able to set up an "under the table" deal and get paid via Paypal or something. Hmm... not sure if you can have a PayPal account if you're < 18, but maybe your parents would be willing to help make that happen, if there's an age limit?
Please let me know if interested. Thanks.
1. Stay on the ball with your school work. I regret doing this myself. Freshman and sophomore year I had a decent average (85-90%), however, junior year I just got lazy. Most of my classes went down into the 70s and I was not enjoying myself. I'm in my final semester now, I have been accepted to university, but I'll most likely have to take out a big student loan as my average isn't good enough for most scholarships. I could have done better in those last two years of high school, but I didn't know how to manage my time. I'm getting better with it now, thankfully, and two tips I have for you are: (a) write down what homework you have for the evening on an ipod, notebook, or whatever you are guaranteed to look at once you get home. As soon as you get home, before you visit HN, reddit, or play any games(!), do that homework! You'll be able to focus better if you're not distracted by anything else, and you won't have to rush to finish it before bed (b) find time to do as much work as you can at school. If you happen to have a free period, study hall, or lunch break, take advantage of that. If you have something to do, find somewhere quite to work and JUST DO IT. You'll feel so much better after completing it and then you won't have to spend time at home on it. Don't let your friends talk you out of doing your homework to spend time with them, as there will be opportunities for that later. There's a due date on assignments, and you'll most likely not have another chance to get it done.
2. I've attended the canada-wide national science fair two times (hopefully a third. I'll find out soon), and this is something where one has to spend TONS of their free time working on a project. My projects were programming related, so I got to do what I enjoy doing and I won some cash and prizes doing so. However, there are huge time management issue with this. This is where finding those spare moments at school to do homework and assignments is really important.
3. Don't worry about a VPS. I know the feeling of wanting one though, but I've had to resist. There's just no practical reason why you actually NEED one. Before you buy something, ask yourself if it's something you actually need. If you would like to get a domain name (which can be helpful if you're advertising yourself on Kijiji or Craigslist for web dev.), you could just have a static HTML page (which most domain registrars allow you to have free), and have it link to your work (Github, etc.)
4. As others have pointed out, there are many free resources online. You just have to look.
2. Solve the bank account problem by buying prepaid debit cards. If you really need 30 dollars for VPS and a domain name (and I agree with others that free services are the way to go here), you can get that quickly by walking around asking to weed gardens or mow lawns.
3. You need to get connected, so go to meetups, try to get informational interviews with local software companies, etc.
First off, don't buy books. Pleeeeenty of great reading for absolutely free online. Just dig around a little.
Talk to your parents about setting up a VisaBuxx card in your name. It has all the controls and such they'll love and will give you the oppertunity of purchasing things online. http://usa.visa.com/personal/cards/prepaid/visa_buxx.html
As for a domain name, $7.49 with a coupon for Godaddy.com http://www.retailmenot.com/view/godaddy.com
As for VPS. A one year contract with Linode (10% off if you buy a whole year) will get you 512mb RAM, 200GB of transfer for $216. I'd consider selling your iPod or something to cover that, if a VPS is really important to you... you can always setup LAMP locally to learn server setup and programming at no cost.
As for VPS, you could use free hosting services like Heroku and Google App Engine to play with some ideas. And for books, what type are you looking for? There are tons of free resources online to learn everything you could possibly imagine regarding web development (see other comments here for links). For someone strapped for cash, seek out resources online -- the same goes for those who've got money, too.
For scheduling time, like I said, don't worry too much about it. You might want to make a very rough schedule to stick to (like finish homework by 8pm, do programming tutorials for an hour, and work on an idea for another 3 or 4). But don't break your back sticking to it. Go out and enjoy being a kid.
I used my Dads cheap video camera and some terrible movie editing software to make a Dvd of the Spring Dance recital, then got the dance department to take orders for DVDs from eager parents. By making everyone pay upfront, I was never at risk. With a $5 markup ($2 for me, $3 for the Dance Department), I suddenly was a lot closer to being able to buy better equipment.
Get OK at making really simple websites using free tools - there are tons of people who will gladly pay you if you can set up a good looking blog for their knitting group or fundraiser. Suddenly you'll have some money. Invest it in yourself to learn more complex and advanced things (through materials or just money to pay for your projects). Those new projects will lead to new jobs. New jobs means more money. You get the idea.
As for time? Its always a struggle. I got most of my work done during school vacations (spring break, summer vacation) and weekends. It helps if your friends are also your 'business' partners.
Good luck!
My suggestion is don't waste cash on domain names and physical books. You can use the free subdomains that you get from App Engine for now. If you write something awesome that people start using, you might be able to make some cash off of that. For now, you should focus on learning and building.
For time, I'd suggest coding really early or really late. Basically, when you have few distractions. Blast the music on and give at least 2 hours per coding session.
Best of luck to you!
That being said, I would recommend "being a kid" for a bit while you still can. You're already very much ahead of the curve when it comes to programming and development it looks like (14? Holy cow that's awesome). I honestly don't think your situation needs much improvement, it sounds great.
Focus on school first though - if you're getting a lot of work at 14 then it sounds like you're going to a good one. As for money, you could always get a summer job and save up for the domains and books you want to purchase.
BTW, if you had a server and a domain name do you even know what you would do with it? Not in a technical manner but what problems are you going to solve with the software you write. Learn how to recognize problems in a market and offer valuable solutions.
Don't listen to counselors or even parents on this: no one will care about a HS diploma, especially if you go into development. No one will even ask.
If it ever comes up, casually don't mention you didn't graduate. Just say I went to Such-and-such HS.
As far as scheduling your time goes, I would try and use little increments. Get yourself a calendar and think about small projects with limited feature sets, setting a max limit of one or two hours of development a day and cross off each day that you code in red marker. After a couple of weeks you'll notice a lot of progress. It may help you to focus on specific parts of a functionality in order to familiarize yourself with larger concepts and gain expertise, like authentication, messaging, client vs. server javascript, etc.
Most importantly, become a member of a community of developers. That will expose you to a lot more than just dogmatic handouts from the few people who actually get involved in online education and aside from making friends and contacts, may lead to paid work so that you'll be able to line the walls of home with fancy, outdated programming books like the rest of us.