Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am 15 year old student looking to buy his first car and thought I could earn some extra money by learning to program since I like messing around with the computer all the time.

I have been reading a lot of the posts here and have come up with a list of books I think would be beneficial to me, however, I do not know which information is most important to know first or if I have everything I will need. Here is what I was thinking:

1: Learn a programming language in depth. I am about 1/2 way done with the Step-by-Step book 2. Learn about object oriented design and design patterns 3. Learn about software testing 4. Go practice these skills on websites like projecteuler, topcoder, and try and do simple projects on freelance websites like rent-a-coder.

Is there anything else you think I may need or should look into?

Thank you.

Microsoft Visual C# 2010 Step by Step

Professional C# 4.0 and .NET 4 (Wrox Programmer to Programmer)

C# in Depth

CLR via C#

Applying UML AND Patterns

Head First Object-Oriented Analysis and Design

Design Patterns: Elements of Reusable Object-Oriented Software

Test Driven Development: By Example

Growing Object-Oriented Software, Guided by Tests

share|improve this question
6  
I think you will earn money quicker by getting a summer job cut the grass (if its cash you want). Learning programming will take a bit longer to get good enough to earn real cash from it (even through rent a coder (Experienced developers from India/China/Ukraine will under bid you)). –  Loki Astari Jan 21 '11 at 7:30
7  
Keep at it. You'll have your car in about 5 years. –  ChaosPandion Jan 21 '11 at 7:43
1  
Nice book list. Apart from theory you need practice though, similar to how you can't get a black belt in karate by reading books. Buy yourself time for practice, see GrandmasterB's answer. –  Joppe Jan 21 '11 at 18:22
1  
@Rig FYI - users with less than 10 rep (this was created when the OP had 1 rep) are restricted to 2 links in a post. The hxxp was to work around that restriction. –  MichaelT Oct 8 '13 at 16:15
    
@MichaelT Thanks for pointing that out. I had no idea. –  Rig Oct 12 '13 at 16:19
add comment

closed as off-topic by MichaelT, Eric King, gnat, GlenH7, Kilian Foth Oct 10 '13 at 14:01

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – Eric King, gnat, GlenH7, Kilian Foth
If this question can be reworded to fit the rules in the help center, please edit the question.

7 Answers

up vote 19 down vote accepted

Your First Step = Learn Your Craft

Experience is more important than book learning:

Pick a project and work out how to achieve your goals.

This will undoubtedly lead you into book-learning etc. but will enable you to gauge your own progress and to choose what to read and when. A few pointers:

  • Start with something small.
  • Take things one at a time.
  • Do things as well as you can.
  • Don't add things to your code until you need them.
  • Don't ever add code you don't understand.
  • Don't repeat the same code twice in your project.
  • Always imagine that someone else will be working on your code tomorrow - try to make it as clear to that person as you can.

As for your choice of books:

If you want to got the C# route, your book list is superb. If you get to know all that lot than you'll be worth your weight in gold! I've been a (fairly well) paid .Net programmer since the early days of .Net, but still haven't read the most advanced of these books (but they are on my reading list). The lesson I take from this is that the advanced stuff has its place, but mastery of the basics can still give you a great career. So, don't worry too much about the advanced books until you actually need them. There is one book I would add to your list - even before the advanced C# books: Code Complete 2. It is probably the most recommended book on this site. Deservedly so, IMO.

Your Next Step = Build Trust

You mentioned earning a little money. To state the obvious: to earn money from developing software, you need to find someone willing to pay you. Unfortunately for you, finding that someone is going to be a challenge for you.

Why?

  1. Because of your age.

I may be mistaken about this, as it is (of course) quite unreasonable. However, the sad reality is that people hold prejudices about age. In my experience, many potential employers are likely to turn you away because they consider young people unreliable and unable to deliver on their promises. What makes this particularly unfair is that you can't do anything about your age except wait.

However, there are things you can do to increase the likelihood of finding employment as a developer despite your age:

a) Keep at it. If you don't go looking for customers because you don't expect them to turn you away then you'll never find the ones who will look past your age and see your qualities as a developer. In other words, don't allow other people's prejudices about age become your prejudices about other people.

b) Get an advocate - someone who will vouch for your abilities who has more credibility in the eyes of prospects that you have in yourself. Perhaps you have an older friend or relative who can speak up for you? Of course, you'll need someone who can vouch for your personal qualities, so make sure you really are up to scratch technically.

  1. Because you don't have industry experience.

Despite the fact that you obviously have talent, knowledge and enthusiasm, you don't have 5 years experience on the job. This is a problem that faces everyone new to a profession no matter their age. Often, people don't want the bother of employing people who don't already have a proven track record at doing the job.

Fortunately, you can do a lot about this one:

a) Recognise that this is a reasonable concern

It is difficult for someone to justify paying for a service when they have no evidence that they will get what they pay for.

When you're talking to prospective clients, be honest about your lack of experience, but demonstrate why it won't a problem. If show the initiative in this then you can undermine their objections before they have thought them through properly. The benefit of this is not to manipulate, but to show that you understand their business needs.

b) Build a reputation

Do small, manageable packages of work for a small enough fee that you take the risk out of the transaction for the client. Often, this will mean that you do your first work for free. Choose these clients carefully - you need to do something that will give you satisfaction for someone who will sing your praises when you deliver. I'm told that many developers do charity work to get themselves started, but family and family friends might also be able to offer you something.

c) Build experience

To demonstrate experience you need... experience. If you can't find anyone else to work for, work for yourself. Start a hobby project. Pick something that people will find useful, and may (in time) be willing to pay for. Don't work on it for the money, however, but for the experience. Consider this a long-term investment - you can expect payback over the long haul, not necessarily in the short term.

d) Develop your non-technical skills

If the paid programming thing doesn't work out at the moment, don't worry. Employers don't really just pay for skill in a particular area, but for a complete package.

Non-technical skills are as important in the IT industry as technical skills: employers are looking for professionalism as well as programming ability. These professional qualities can include people skills, financial experience, business knowledge and personal qualities like honesty, reliability etc.

All these can be developed independently of your technical skills. For example, if you need the money you could take a non-programming job. Alternatively, you could get involved with a community group or charity or port or whatever where you can built upon your non-technical abilities. Ultimately, these activities may well lead to you landing your first proper programming contract, if not directly (you never know what contacts you'll make) then indirectly because you are more rounded and have more to offer than other people.

share|improve this answer
    
Thank you very much for your insightful advice. Very much appreciated. –  user13822 Jan 21 '11 at 23:44
    
+1, this is these kind of answers that makes me love this site. Clear, to the point and useful. –  user1041 Jan 24 '11 at 10:01
    
Why would a client know his age? I'm not aware of any freelancing sites that post a provider's age. I'm at the other end of the scale -- I'm 66, and the only clients who know my age are those I have met face-to-face. With that said, because of his lack of experience his resume is going to be lacking. –  tcrosley Oct 8 '13 at 23:49
add comment

I have always found it necessary to have a problem to solve or a game that I want to write. That way you're always looking for ways to solve that problem and that will lead you to read books and search online. I have never been able to read a book and then know a subject.

Once you have decided on a 'problem' to solve, your choice of books may become more obvious.

share|improve this answer
add comment

Id suggest to add some Asp.Net books, Webforms or MVC. Mots to freelance jobs are about Web development. Also, Asp.Net is not very popular in this field.

Maybe Ruby/Rails or Python/Django will be more suitable for freelance. Also PHP has a huge share of freelance jobs.

You can check any freelance sites and analyze most wanted technologies.

share|improve this answer
add comment

You might be better off focusing right now on the 'softer' areas of deveopment - for example, setting up websites and learning how to install and configure content management systems and other open source applications.

I dont see a 15 year old really being able to freelance as a programmer - not unless they are truly exceptional at programming. I think you'd be more likely to be able to get smallish contracts for setting up websites for local businesses, and then progress up to larger projects from there.

share|improve this answer
2  
Do this - and in the meantime, go on learning more complex things. DO you have some friends with a band and still a static website? Implement a CMS for their site. You'll gain real production experience and some proof of your ability for potential clients. –  cbrandolino Jan 21 '11 at 9:55
    
And without someone to sign contracts for them as in most countries a 15 year old can't enter a binding contract. –  Rig Oct 8 '13 at 16:09
add comment

I think it's awesome what you're looking at doing. This sort of thing ought to be encouraged! That said, as you only have the Summer to work on paying projects you might want to pick up a quicker technology stack than full blown C# and .NET. There's plenty of short contracts for things like PHP apps, RoR apps, iOS and Android development, CMS customisations etc. Those types of roles are also less likely to be prejudiced against your age (a sad but true fact that you're going to run across).

Best of luck and don't give up - programming is one of the most creative, fun and rewarding things you can do, period.

share|improve this answer
    
Thank you for your encouragement as well as other areas that may be beneficial for me to start in. –  user13822 Jan 21 '11 at 23:47
    
+1. One of the best answers –  TJonS Oct 8 '13 at 15:02
add comment

My recommendation would be what I have personally done. Go to work to MacDonald or anything else to make some money. Don't expect any revenue coming from IT before you have graduated from an University.

I don't want to disappoint you but in the next few years I think you will mainly be a consumer and not a technology provider. It means that you will spend more money on IT that you could expect to generate from it :-)

share|improve this answer
    
There's plenty of freelance work available to university students before graduation. –  Norman Ramsey Jun 23 '13 at 20:33
    
Maybe not graduation but, until you're 18, it's going to be hard for anyone to agree to do business with you. Being an adult & being able to sign contracts is an important part of doing business. –  Sean McSomething Oct 8 '13 at 16:22
add comment

I recommend you taking some summer jobs instead of trying to earn money through programming. It takes quite a lot of time and effort before you become proficient enough (on average) that people would pay you to write software for them. Programming is not something that can be learned over a summer. Therefore unless you plan to do this over a long term I don't think software development will yield the return on investment (in terms of time and effort) you're looking for.

That aside if you're really keen on programming I'll suggest a slightly easier way in than C# and .Net - setting up websites (no offence to anyone). Start with static sites first then learn to set up a full CMS driven site. Though if you do go down this path I recommend learning about the basics of web design and design in general (not necessary but it really helps, especially if your client wants custom-made sites instead of using pre-made themes).

Good luck on your car and I hope that you may grow to enjoy programming instead of seeing it merely as a source of income. :)

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.