tags:

views:

287

answers:

7

I'm the worst example of a hack coder - 7 or 8 years of Perl and a bit of Ruby layered on top of early 90's excursions into Pascal and C. No formal training and it shows.

I write code to get my job done. It's never elegant (but it works) and I'm forever looking at problems knowing that somewhere there is a much more elegant solution for the thing that I have just done.

I'm a biologist by training (but work with a lot of computer scientists), so what I would like is an approachable, language agnostic text that outlines some of the fundamentals of programming that I feel I have missed - everything from data structures, to algorithms, structuring code etc.

Is there a good text (I would imagine something aimed at new undergraduates in CS) that anyone would recommend for someone in my position?

+12  A: 

I would say Steve McConnell's Code Complete is a must for every coder, casual or not.

Konamiman
yep, definitely
Maciek
I was wondering if this was going to be flagged, I actually have a very old copy of this sat on my bookshelf, which to my shame I don't think I've ever opened. Do newer editions add much to this?
dswan
10 Seconds of typing, and im already beaten to it :P
Fusspawn
@dswan The newer edition (there are only two AFAIK) does expand on the original book and would be the one that I'd recommend if you want/need to buy one. If you've already got the original edition, that's certainly good enough to start with.
Timo Geusch
@Fusspawn: the same has happened to me many times. It's really frustrating, indeed.
Konamiman
+1  A: 

Code Complete

Fusspawn
+4  A: 

I would check out this other post on influential books. Lots of good references and lots of good titles.

Xetius
+6  A: 

The Pragmatic Programmer

luvieere
That looks interesting too - thanks
dswan
+1  A: 

Since you are already aware of the problem, I would recommend reading Design Patterns: Elements of Reusable Object-Oriented Software, by Erich Gamma, Ralph Johnson, Richard Helm and John Vlissides

I read this book about half-way of my CS studies, and it greatly opened my mind. I think in the end, patterns are the tools of the expert : put words on the constructs and problems that you reuse frequently and discuss them with others!

I would also recommend Refactoring: Improving the Design of Existing Code, by Martin Fowler which is more like an entryway to a different philosophy of coding. Most coders I met like to think that their next project will be better starting from scratch with a different language/framework/library. This book gives you techniques toward progressive enhancement of existing code. A must read.

GAMMA 1994, Design Patterns: Elements of Reusable Object-Oriented Software

FOWLER 1999, Refactoring: Improving the Design of Existing Code

Eric Bréchemier
A: 

http://headfirstlabs.com/ is a good place to start to improve you coding skills. They have a searies on

Head First Software Development Head First Object Orient Analysis and Design Head First Web Design Head First SQL Etc.

These books give a a developer a heads up on good program structure and development. These books and others in the series allow a casual coder to see how a project should be developed.

Anyone can code like a mad man to get their coding task to work but a developer who is willing to learn will find new ways to make his coding elegant.

Clean code is easier to maintain and expand on in the future. Depending on the casual coders background these books will explain proper programming development in a visual way so you don't have to be a computer science major to code a proper program.

Chuckie
A: 

Code Complete may be great (I don't know yet, I've not read it), but it's rather long. I've read that Kernighan & Pike's The Practice of Programming covers some of the same territory, and it's much shorter. I'm reading it now, and it seems pretty good so far.

GreenMatt