Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I studied in a technical school and learned programming, among other subjects related to IT and gained the title of IT Technician.

I decided to follow programming as my career choice and began a stage at a local company in order to learn more and pursue a programming career. So during this stage I developed in C#, VB.NET and VB6, but I was developing in VB.NET for the most part.

I concluded this stage 1 year later, and although I was technically better, I felt a bit lost in programming bases and theory. I could program simple things, get some pages done and learn on my own but I still felt like what I knew was poorly backed by the lack of some Algorithmics.

I got a job in a consulting company and I develop web applications in ASP.NET MVC 1. I feel like I've learned a lot while working here but I would like to learn a lot more in correct programming manners and upgrade my capability of developing algorithms.

I will study Software Engineering but I can only attend the course during the next year. During this year, I would like to do something at home, like doing some projects that could get me better at programming and logic and read some good books on the area.

What exercises, projects and/or books do you people recommend? I'm all in for good advice.


migration rejected from Aug 19 '14 at 9:37

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 ChrisF Aug 19 '14 at 9:37

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." – ChrisF
If this question can be reworded to fit the rules in the help center, please edit the question.

Dude, you sound like a robot. – Job Jan 20 '11 at 17:24
@Job: And why is that? – Hallaghan Jan 20 '11 at 17:26
up vote 2 down vote accepted

As a C# developer I HIGHLY recommend Framework Design Guidelines, and Effective C# these are great books for learning how to become comfortable with the platform and language (framework design guidelines is not specific to C# it applies to VB.NET as well). Most companies follow the FDG as their coding standards.

For general programming skills, I'd suggest starting with the following.

Also you will most likely pick up a copy of Design Patterns for reference (don't read through it but rather use it as reference when these other books refer to it which they do heavily).

Syntax and algorithms are very basic skills for a Software Engineer. These three books teach you how to approach the process of discovering and creating software the right way.

Someone else mentioned to work on a pet project. I agree. Find something that you like and know a lot about and write a program for it. Don't make the application too complex at first because you'll be writing it and re-writing it throughout your career.

This is your pet project. Use it to learn new techniques (or new technologies). Write the application. Then start reading these books and applying what you learned to re-write or improve your application (the choice is yours, there are merits to both sides).

Above All Else Even if you didn't read the rest of this answer, this is what you need to do to get better. Write a lot of code. But write the code with a critical eye for learning how to write it better. You can read all you want, but you need to practice your craft to get better at it.

Choosing the "right" answer for this question would be impossible, I agree with every point you guys brought up on this discussion. However, the answer that seemed most complete was yours, Mike, so I'm giving you the points. Thanks for everyone who helped. – Hallaghan Jan 21 '11 at 10:23

Pick up an algorithms textbook and go through some exercises.

Here are some starting points:

I will get both of those books, thanks. – Hallaghan Jan 20 '11 at 17:11
Be warned: "Intro to Algorithms" is good, but it is not light reading. You might want to brush up on proof methods and techniques, statistics, geometry as you work through it. – FrustratedWithFormsDesigner Jan 20 '11 at 17:14
@FrustratedWithFormsDesigner: What do you mean by light reading? – Hallaghan Jan 20 '11 at 17:15
@Hallaghan: It is not an easy book. But it is good. – FrustratedWithFormsDesigner Jan 20 '11 at 17:16
@FrustratedWithFormsDesigner: All that matters to me is the quality of the book. If it is hard, I'll pay more attention to it. As long as I can develop my skills, it is worth it. – Hallaghan Jan 20 '11 at 17:20

This might not be the answer your looking for or an answer that most of the community will agree with, but I have learned the most by attempting projects that both interest me and that I know next to nothing about. For example, when I was 14 I made a video game and I learned tons of useful geometry and sprite theory. Then I was 16 I tried to write my own emulator. That one didn't go so well but I learned a lot about computer architecture which has proved invaluable. Now I'm 18 and I've jumped into Android programming and I've taught myself Java and tons of mobile development techniques. All of these projects were things I was interested in but knew nothing about prior to trying to them. I learned loads from each of them which has helped me endlessly down the line and helped me to build a strong and varied resume.

tl;dr Program something you're interested in but know very little about. It will keep your attention focused longer than any bland book or website (Project Euler is an exception though) and what you learn will really stick with you and help you later on.

I can't help but to agree with you there. Maybe finding the right project to get my attention will be the key to learning more. – Hallaghan Jan 20 '11 at 17:12

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