Book Recommendations For A New Programming Shop?
QwkHyenA asks: "I'm a new programmer who has been working for a DOD government contracting company for 2 years now. We started off with 2 programmers in house and will move up to 6-8 within the next 3 months. What books/resources can help me with setting up a real programming shop (i.e. language references, CVS, Do's & Don'ts...)"
XP is based on a really happy intersection of novelty and practicality. There are lots of strange new ideas in these books, but they really deliver.
For something a bit more basic, but equally concerned with results check out "The Pragmatic Programmer" by Andrew Hunt and David Thomas. This book nailed down lots of points about programming for me. It would be especially useful for a new shop because it would give your crew a common vocabulary for the fundamentals.
--Tim
"Peopleware: Productive Projects and Teams" (2nd ed) by Tom DeMarco and Timothy Lister
"Extreme Programming Explained" by Kent Beck
You may not agree with everything in these books but nonetheless they offer a lot of ideas to consider. I would suggest that is much easier to overcome poor software tools than poor project management and leadership.
For any programmer/team that wants to get a handle on how they do things, how long they take, where the defects come from and where they are found, there's probably no better beginning that the techniques of Watts S. Humphreys, starting with Introduction to the Personal Software Process. I like the price at FatBrain.
I would also stand behind 'The Pragmatic Programmer'. While it it is focused much more on the individual programmer, it has sound advice that applies to just about any programming work environment
- Mike
- Mike
It sounds like you're looking for software design and development practices. If so, Steve McConnell has written several excellent and very accessable books on the topic. (You can get more details on the books at .)
In particular, his "Software Project Survival Guide" does a great job of describing a good process you should follow to give your software the best chance possible of shipping on time, within budget, and with as few bugs as possible. I especially like that Steve is not dogmatic about his approach; he readily admits that not everyone is going to find it a panacea. However, it *is* a very good place to start, especially if you're new to professional software development. Once you've followed his recommendations on a few projects you'll know enough to know when you should deviate from those recommendations.
When dealing with developers who have recently graduated from college, or those that haven't worked with more than a couple other developers, I've found that this book provides excellent guidance. Most of this kind of developer just don't understand why and how formal policies and procedures are important, but this book makes intelligent arguments that are quite persuasive. (Some folks will never get it, though, and the best thing you can do is get rid of them as quickly as possible before their ways doom the project.) I bought copies for every person on my development teams and had weekly reading assignments that we'd discuss over beers on Friday afternoons. It made for great conversation and learning!
For any language Programming Pearls by Jon Bently(Addison-Wesley) is great.
For Linux-
The Unix Programming Environment by Brian W. Kerninghan and Rob Pike(Addison-Wesley)
If your using ANSI/ISO C++ then:
If you are using C++ and Windows I'm moving to Canada. And you should have The Official Reference Library for Microsoft Visual C++ 6.0(Microsoft Press)
In my opinion these books kick ass.--
Spelling by m-w.com.
For overall coding efficiency and insight, I warmly recommend "The Pragmatic Programmer". Not linked to any programming language or paradigm in particular, it explains the secrets of the trade in clear and concise terms. I have given this book to others regularly, and rookie and veteran coders alike benefit from the advise in the book.
Black holes are where God divided by zero
Ah...
To ONLY program!
Happy Holidays!
LFS. Have you built your system today?
Thanks,
QH
LFS. Have you built your system today?
Thanks to everyone for their help on this matter!
Happy Holidays to Everyone!!
QH
LFS. Have you built your system today?
_Refactoring_ by Martin Fowler
anything by Laura Lemay
_The Design of Everyday Things_ (aka The Psychology of Everyday Things)
_One Hundred Years of Solitude_ by Gabriel Garcia Marquez
I would also look through the publication catalogs of the ACM and the IEEE Computer Society.
Mea navis aericumbens anguillis abundat
The basic set of books I recomend for a company library are:
- The C Programming Langauge - Kernighan & Ritchie, Prentice Hall
- The Standard C Library - P.J. Plauger, Prentice Hall
- The UNIX Programming Environment - Kernighan & Pike, Prentice Hall
- The Practice of Programming - Kernighan & Pike, Addison-Wesley
- The Elements of Programmiing Style - Kernighan & Plauger, McGraw-Hill
- The Mythical Man-Month - Fred Brooks, Prentice Hall
- Peopleware DeMarco & Lister, Droset House Publishing
- The Cathedral and the Bazaar - Eric Raymond, O'Reilly & Assoc.
- C+C++ Programming with Objects in C and C++ - Allen Holub, McGraw-Hill
- Enough Rope to Shoot Yourself in the Foot - Allen Holub, McGraw-Hill
- Tog on Software Design - Bruce Tognazzini, Addison-Wesley
- Tog on Interface - Bruce Tognazzini, Addison-Wesley
- Managing Projects with make - Oram & Talbott, O'Reilly & Assoc.
- Open Source Development with CVS - Karl Fogel, Coriolis Inc.
This set covers a wide range of topics, from bare language issues, through design and coding practices, all the way up to project and corporate management issues. You may need to supplement these books with a few more that address specific fields of interest to your business (my list is a bit short on web, C++ and unix system programming books, for example), but these are a good start.Bjarne Stroustrup's The C++ Programming Language, Third Edition has some chapters at the very end which are about software development and management. Very much worth reading, and it's applicable to just about any programming language or development environment.