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 16 years old and want to get a job in the programming field in the future. Since I will be applying for a foreign university, I want to start programming by myself and gain experience, both to increase my chances for quality education and for later employment. Last year I learned Java, but whatever motivation I had mustered fizzled out after finishing the book, and I only did some basic work on a project I came up with by myself, before getting stuck and abandoning it.

This year, I decided to learn C#. My Java knowledge, however small it may be, would help me pick up and remember more information from a beginner book, and since an year of inactivity without much prior experience warrants a reread anyway, I thought I might as well learn a different-yet-similar language, as opposed to just going through my HF Java for a second time.

I picked up Herb Schildt's "C# 3.0 A Beginner's Guide" and finished it. However, I have no idea what to do now. Come up with a random project and work on it (potentially picking up something far beyond my limited ability)? Read up on more advanced topics (even though I don't have any practical experience)? I'm at a loss regarding what to do to actually become a capable programmer, after reading a beginner's book.

share

migration rejected from stackoverflow.com Oct 22 '13 at 0:48

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as off-topic by gnat, GlenH7, MichaelT, Bart van Ingen Schenau, World Engineer Oct 22 '13 at 0:48

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

  • "Questions about what language, technology, or project one should take up next are off topic on Programmers, as they can only attract subjective opinions for answers. There are too many individual factors behind the question to create answers that will have lasting value. You may be able to get help in The Whiteboard, our chat room." – gnat, GlenH7, MichaelT, Bart van Ingen Schenau, World Engineer
If this question can be reworded to fit the rules in the help center, please edit the question.

4  
Start Making a small programs like calculator, you have to put your knowledge in a practice. –  Jalal Aldeen Saa'd Aug 3 '11 at 16:13

9 Answers 9

up vote 13 down vote accepted

Pick something small. Really small and write that. It has to be something so simple that you can easily complete it.

Once you've written that first program, write a second program that is marginally more complex: but keep the step very, very small. Think simple text based application for converting units, for example.

Keep doing this over several months. Don't dwell on any one program. Keep it a small step up from the previous (by adding something you've not done before) and finish it but don't worry about making mistakes or writing bad code.

The idea is to make something you can actually finish each time so you stay motivated but that has some new element that will hold your interest: do not get too ambitious! You will quickly find that the mistakes and stupid decisions you make in your early projects you will not make again. You'll try different approaches to problems, some of these stupid too, and, with time, hone in on better solutions to each problem. By keeping the problem small and by moving on to new successive new problems you won't get bogged down by the baggage of your design decisions: you'll be starting afresh each time and bringing with you the ideas and pieces of code you're especially proud of.

Most of all, keep trying.

And read this.

share
    
It also helps if you choose problems that scratch an itch. Got some info that you need all lower-cased, parsed, convert celcius to farenheight or meters to feet? Program it. Yes you can look it up, but small little programs like these should be easy to write and act as drills. As time goes on, you should start thinking about problems and seeing algorithms to solve them and you will be much more fluent in your language of choice. –  Blackbeagle Aug 3 '11 at 22:23

C# in Depth

It's the book you should read to learn C# along with exercise projects. Consider learning other languages like F# later, when you will be confident enough.

share
    
Really? I'd say have a stab at some programming challenges first and then go and read In Depth. Good as it is, it's probably a bit too overwhelming for someone as inexperienced as the OP. –  Doozer1979 Aug 4 '11 at 6:59

Everyone does it differently. Try a lot of technical stuff, and then stick to something you find interesting and deepen your skills in that. You're doing it right when you work long hours sometimes and you didn't realize how time flies.

share

I would improve my skills with Code Kata exercises that can be found online, and work through 15 Exercises to Know a Programming Language. Then write some more practical applications, even if they are just silly things that you use to entertain yourself. Possibly:

  • Calculator
  • Simple web crawler, or website searcher. (for example a small app that would auto-search Amazon.com for a certain product every couple hours and monitor the price to a DB.)
  • Text-based game
  • Log file parser (good practice for regex too)
  • You can also look for an open source project and try to contribute to that.

Either way, even doing the same exercises over and over will help. Learn to refactor, identify and follow patterns, practice unit testing or TDD, etc.

You can also take some of your solutions to code kata, or commits to an open source project, and use them to demonstrate your skills to a potential employer, since you won't have previous programming work experience. These things demonstrate a passion toward programming, and many employers will respect that.

share

If you have made decision on a technological stack the next step is to master it. This can be done only by practicing. Define what would be interesting for you to write (web app, desktop app, mobile app). Choose some commonly spread features (authorization, rss feeding etc.) Define tasks. Implement them. Read books on best practices in each technology. Fix code according to them. Ask someone to review the code. This process should be iterative.

P.S. About MS stack:

Must read book CLR via C#.
Next step What is the single most influential book every programmer should read?

share

So you need an idea for a project... Look at your hobbies (outside computers, if possible) and see if there's anything related to those hobbies that could be done with a computer. For example, if you're into photography, you could try to write a photo-album program. It doesn't have to be something totally new and innovative and ground-breaking (though that's what everyone wants), just something that is interesting to you, and larger than a simple "Hellow, world!" program. Before you start, write down what you want your program to do, and try to break that down into small, measurable pieces of work.

Or you could do some problems from Project Euler

share

Just start programming. Only reading will bring you nowhere. Start with some small projects, e.g. an adressbook, a calculator or whatever. The first few projects won't be useful anyway and you will restart them probably a dozen times because you are not satisfied with the first solutions. But that's completly normal. And even though it's slightly off-topic: You should also consider that becoming a capable programmer is more than just mastering a language. I wrote a small article about that which you can find here

share

You learn to program by programming. Pick something simple you would like the computer to do and write it.

share
    
Could you explain why this is the answer and back it up with facts? –  blubb Aug 3 '11 at 21:43
    
@Simon Stelling: Note how most of the answers on this question are some variation on "Write code"? –  Loren Pechtel Aug 4 '11 at 0:30

Write a web application that performs CRUDS operations on a database. This is a good (and commonly required) skill to have.

If you feel like getting fancy start adding a little javascript to make the UI a little nicer.

share

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