views:

121

answers:

7

Hi guys,

I've got a question related to the practical learning of programming skill.

I'm acquainted with basic programming stuff, know syntax and some concepts of several languages (Pascal, PHP, Python, now want to learn C#) and I debug quite a lot, so I can write (and have written) programs not bigger than 1000 lines of code for my own needs.

However what I'm looking for is some way to get to the intermediate level of programming. I mean: - Understanding how to solve complex tasks/projects, how to break them into smaller ones - Practical appliance of the design patterns kicking off the practical task (as I think it will be a lot easier to understand and remember than just reading about them) - Starting using OOP in a serious way

I have several project ideas that I would like to implement myself. However I don't want to write these projects without understanding how to write middle-sized projects properly. The knowledge that I have now is insufficient. I'd like to read something on this topic or get other ideas from the experienced engineers.

Thanks.

A: 

Please see http://stackoverflow.com/questions/tagged?tagnames=books&sort=votes

If you're looking for just one suggestion on how to be "better", I'd suggest reading Code Complete. But reading anything at all will put you head and shoulders above most professional developers.

Ether
*Anything*?? Does Maxim count?
Wim Hollebrandse
A: 

The only way to get better is experience. No matter how many project you write over the course of your lifetime, whenever you look back at one of your old projects, you'll think, "Man, tis code sucks, I could write it now to be significantly cleaner/faster/more elegant."

Start coding up one of your projects. When you finish (or get significantly bored, but try to finish), work on the next one. You'll find that suddenly, on your second or third project, things seem much easier and higher-level concepts just "click."

Cory Petosky
A: 

I've been on a bit of an agile kick lately, which is probably reflected in my suggestions. I'd recommend reading up on that, and here's a couple strategies I use:

1.) Plan! The last thing you want to do is completely wing a medium sized project. Now, I'm not talking about planning out every single method, variable, etc. but have a fairly thorough overview of what you want to do, and how you want to do it before writing a single line of code. Even if this takes a week or more, you'll be saving time in the long run.

2.) Set goals. When working on a bigger project; I like to break it up into 2 week intervals, upon the completion of which I have a deliverable. (i.e. Database structure in place, CRUD layer implemented, basic GUI, etc.) It's too easy to get stuck in the ether when you say "It'll be done in 4 months"

3.) Don't shoot for perfection on the first try. Nothing's going to be perfect right off the bat, so you'll just be struggling if you're working on getting it "just right". Plus, things change over the span of a large project; where what you envision isn't really what it ends up being.

4.) Use what works for you! Don't try to shoehorn yourself into someone else's thinking. What I described might not work for you.

Jim B
+2  A: 

Read the Pragmatic Programmer and/or Code Complete. I think the Pragmatic Programmer is a faster read, and would probably start there.

Dean J
A: 

Thanks for the answers. Code Complete and Pragmatic Programmer are already in my reading list (I was going to start them after finishing some Python books), your recommendations are really helpful.

Vlad
A: 

Well, the only real way to become a better programmer is to read code and to write code.

One option you always have is to pick the open-source code, review how it's done and to try to add some feature to it.

Vanya