Here's a list of excellent online programming guides that i am compiling. I will add more links as time permits. The best guides also outline how to deal with people outside the cloistered priesthood of programmers.
- How to be a Programmer: A Short, Comprehensive, and Personal Summary,
Robert L Read
Not short, but excellent distillation of one man's programming wisdom. Covers handling difficult colleagues, management, coding, optimizing and the difficult task of debugging.
- The Art of Unix Programming, Eric Raymond
More than just a programming guide, an exposition of a design philosophy -- the Unix way. Encyclopaedic in ambition and scope.
- Producing Open Source Software,
A guide on how to run a successful open source software project. I like his introduction: "Most free software projects fail. We tend not to hear very much about the failures. Only successful projects attract attention, and there are so many free software projects in total that even though only a small percentage succeed, the result is still a lot of visible projects. We also don't hear about the failures because failure is not an event. There is no single moment when a project ceases to be viable; people just sort of drift away and stop working on it.".
- Worse is Better,
Still provocative and topical. The concept known as "worse is better" holds that in software making (and perhaps in other arenas as well) it is better to start with a minimal creation and grow it as needed. Further debates on "worse is better".
- Being A Better Programmer,
Advice written from a game programmers perspective. I don't quite agree with his opinions on documentation (I think you need to think of documentation as teaching, not making notes; in a large project, there should be some programming overviews and tutorials so people can kickstart without bugging you), but overall it's good advice.
- Little Nybbles of Development Wisdom, Terence Parr
What one man learnt over the course of a 3 year software odyssey - a bit too preachy for me (some of the advice seems specific to his project) but still interesting.
- How To Write Unmaintainable Code, Roedy Green
Roedy is a dangerous man :)
- The archives of Joel On Software are a good read.
- Alan Cox, Linux coding master, on writing better software.
A methodology provides a framework for software development. That's all. Never forget that within the framework, you have to keep everyone working towards a common goal, get the people motivated, the work coordinated, the participants properly briefed, and the bugs minimized.
- Nasa's Sofware Engineering Laboratory Methodology
I highly recommend reading the Manager's handbook (PDF). There are some incredible metrics inside. For example, here's their productivity estimate for experienced programmers (a 10 year veteran is supposed to be 5 times more productive than a freshman):
Years Experience Work Required 10 0.5 8 0.6 6 0.8 4 1.0 2 1.4 1 2.6
- Agile Software Development
Agile is an umbrella for a wide range of ways to write software quickly.
- Rapid Application Development
- I have always believed in the Spiral Model.
- Extreme Programming
XP is a well-known Agile methodology. Very controversial - here's a counter-point.
- Great Hackers, Paul Graham
A hacker manifesto. Anti-methodology. Show's how smart people can be a pain in the $#@^&@!
Don't be fooled, the methodologies freely steal from each other, often doing similar things under a different guise; the key thing is listen to what is being offered by each methodology, then use common sense. Also methodologies only work on fertile soil -- make sure it suits the scope and scale of the project, and the natural working style of the key participants.
Some of the programming articles could have been placed under software methodologies too.
- The Economics of Software, Bryan Cantrill
A supply and demand analysis of software for the layman.
- The Business of Software, Eric Sink
An excellent collection of essays on running a software business and making the right decisions.