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 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.

share|improve this question

migrated from stackoverflow.com Jan 20 '11 at 17:01

This question came from our site for professional and enthusiast programmers.

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

4 Answers 4

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.

share|improve this answer
    
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

If you want to learn algorithmics I strongly suggest Project Euler. Even though no conventional learning method, I think it has a great effect on the actual understanding of the algorithms, and very importantly, recognizing correct appliances of algorithms.

share|improve this answer
    
Other than algorithmics, where can I learn good programming manners? Do you recommend any books on C# and Unit Testing? I'm going to read C# VIA CLR now to get some understanding of the framework and how I can develop better. –  Hallaghan Jan 20 '11 at 17:07
    
No, sorry, I can't. I have no idea what good practices in C# are. –  nightcracker Jan 20 '11 at 17:08
    
@Hallaghan: If you're interested in best practices for a particular langauge, that's a more specific question, and here it is usually answered with a suggestion for a book (or sometimes a website). I don't have a specific title for C# though (sorry). –  FrustratedWithFormsDesigner Jan 20 '11 at 17:12
1  
@FrustratedWithFormsDesigner: I took a look at Project Euler and it seems to be one of the things I'm searching for. –  Hallaghan Jan 20 '11 at 17:21

Pick up an algorithms textbook and go through some exercises.

Here are some starting points:

share|improve this answer
    
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.

share|improve this answer
    
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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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