The Career Programmer
What's with the title? The Career Programmer: Guerilla Tactics for an Imperfect World is a gem of wisdom in a sea of dry, academic books on the software development process. It seems to mix equal parts of any software process book, Dilbert, and Sun Tzu's The Art of War. The development "process" that most developers find themselves enduring today isn't too dissimilar from the "process" that developers have endured for the life of our industry. Management specifies deadlines before they specify requirements, and frown when programmers start designing instead of immediately typing. There are a lot of things wrong with this, but the problem persists.
For this problem, there is at last a real answer. Duncan, a developer himself, brings the wisdom he's gathered during the course of his career to bear on the problem. Surprisingly, he succeeds. With exquisite humor and wry wit he prescribes remedies for the variety of ailments that beset the software development process. The Career Programmer helps software developers in the areas where they are often weakest, from dealing with the politics of an organization, providing estimates that are real, and coping with the realities of management driven timelines. In short, all of the things you never learn in any school except the school of hard knocks. If you want to avoid the endless death march, have a life outside your job, and gain credibility by delivering your software on time and under budget, this book is for you. This book is intended for software developers of all skill and experience levels, no matter which language or operating system they might use.
The Career Programmer differs from most books on the development process in several ways. First, and most importantly, it is a pragmatic book. There are no pretensions to developing the "one, true process" that is better than all of the rest. It concentrates on strategies that work. Different environments require different strategies, and this book doesn't ignore the impact of office politics on the development process. Many developers already know how to develop software in a perfect world, but few are allowed to gather requirements in sufficient detail, take adequate time for design, develop test plans or any of the other important aspects of development. There are a variety of reasons for this, and this book covers them well.
Second, this book provides much-needed balance to books that focus only on the development process, by reminding the reader why the company they work for is in business. Obviously, it's not to let you play with the latest cool tools, despite the attitudes of many developers I've known. Learning to appreciate what motivates the managers and executives at your company is vitally important if you want to succeed. They pay the bills, and you work for them. That makes them important, even if they can't code a bit. Last, succeeding in spite of your boss sometimes requires you to fly under the corporate radar to be successful. Like any good guerilla, you do your best work when you aren't noticed.
What's in the book? The first section of the book, "Software Development in an Imperfect World," introduces the reader to the realities of the corporate world. For someone just out of college, this section is bound to be a rude awakening. They probably didn't understand why Dilbert is so funny, either. However, there is a lot of information in this section that will be useful for veteran developers, especially those who feel that they shouldn't have to "play politics." Playing the political game doesn't have to mean you stab people in the back, but it sure helps if you don't want to be on the receiving end. This section lays out the issues and problems that are dealt with on a daily basis in many companies. If that sounds depressing, never fear, help is on the way.
The second section of the book, "Guerilla Tactics for Front Line Programmers," examines the development process, step-by-step over the life of a project, and provides useful, practical information on how to succeed in spite of the hurdles placed in your path. The reader is guided through requirements gathering, design, estimation, development and testing with an eye toward fixing the perceptions management often has about the development process. If you can convince the people you work for that it is in their best interest to let you gather requirements, design and test, in addition to writing code, you have achieved a great deal.
The best parts of this book are the chapters "Effective Design Under Fire," and "Managing Your Management." Again, both are practical approaches to real problems. "Effective Design Under Fire" alone is worth the price of the book. This is a tremendously pragmatic approach to the problem of limited time for design. I wish every developer I knew understood the concepts here. Frankly, the approach used in the book can make you look like a guru, both to your coworkers, and to your boss. Simply put, it works. "Managing Your Management" is also very valuable, with an emphasis on learning to speak the language of the folks you work for. Sometimes a good guerilla must blend in.
The Summary Something different than the run-of-the-mill development process book, The Career Programmer: Guerilla Tactics for an Imperfect World will allow you to gain control of your software projects. It provides pragmatic, useful information that will allow you to push your organization toward successfully delivering software on time. Even junior programmers can affect the development process when they follow the guidelines in this book. Chris Duncan's humorous writing style makes this a very enjoyable read.
Table of Contents
- Software Development in an Imperfect World
- Welcome to Corporate America
- Business Is War. Meet the Enemy.
- Good Coding Skills Are Not Enough
- Guerilla Tactics for Front Line Programmers
- Preventing Arbitrary Deadlines
- Getting Your Requirements Etched in Stone
- Effective Design Under Fire
- Practical Estimating Techniques
- Fighting for Quality Assurance
- Keeping the Project Under Control
- Managing Your Management
- Corporate Self-Defense
- Controlling Your Destiny
You can purchase The Career Programmer: Guerilla Tactics for an Imperfect World from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Agreed. It almost sounds like joelonsoftware.com, which also makes me want to buy the book. If you can't afford the book, go read Joel Spolsky's blog.
It's more expensive at bn.com. Amazon has it for 10 bucks less.
/sig
Another review and interview with the author is available at
v iewGuerilla.htm
e erProgrammer.htm
Interview with the Author
http://www.vbrad.com/pf.asp?p=Reviews/books/inter
Book Review
http://www.vbrad.com/pf.asp?p=Reviews/books/brCar
Small companies have their disadvantages as well. I'm a career small company guy, but I've done consulting work for larger companies, so I've seen both sides...
It can be much harder to avoid and deal with political issues at a smaller company. If there's a good, open, honest environment, then issues are easier to deal with, but if the people there have a hard time getting on with one another, it can be really bad, as there's nowhere for you to "hide."
But, on the bright side, there's less of a chance you'll just be a code monkey at a smaller company who is constantly put on death marches with no input. But that doesn't mean that management won't be unreasonable, either. Just do your homework if you get a job offer -- really find out what type of people you'll be working with. Again, if you don't discover that another developer (or manager) at the small shop is a jerk, you're probably worse off than if it was a big place.
Whereof we cannot speak, thereof we must be silent. --Ludwig Wittgenstein
...you're a SICK, SICK, CANIBAL, and -
*cough*
If you're interested in seeing some of his work before throwing down cash, check out his his articles over at CodeProject.
Pro Developer: Creating Your Dream Project
Pro Developer: Throwing Money Out the Window
Pro Developer: Improving Your Career In Any Economy
Pro Developer: This is Business
Pro Developer: Delivering Quality Software
Vacancy for signature. Apply within.
A brand-new startup frequently doesn't have any serious competition for resources, which removes a fertile source of office politics, but once money gets tight things can go sour quite easily. Large companies always have lots of inter-group rivalries, either because of a desire to be cost-efficient, or simply because VP Smith thinks his empire isn't as large as VP Jones'.
Steering closer to the topic of the book under review, the main disadvantage of (most) small companies is a tendancy to stint the design phase; slapping something together for an aggressive demo schedule is all-too-often not simply more important than crafting a workable, implementable, and maintainable design, but is crucial to obtaining the funding needed for the next round of aggressive demos which will be more important than doing real design work... Not that large companies never substitute demoware for design, of course, but in general large companies are big on Formal Process, and Formal Processes usually begrudge at least a little time for design. (Of course, once you've completed the ritual design phase, you often are then told that the completion date was already set by the salesman who had no concept of how much time the project would require...)
Even less at Overstock.com only $16.99 + $1 shipping at overstock
-- these are only opinions and they might not be mine.
I was born in the U.S., and I know Gujarati (an Indian language) in addition to English (and a bit of Spanish).
In any case, in India, English is much more of a common language than Hindi. Only educated people know Hindi (but English is more common even for educated people), many people only know their native languages (which is not Hindi). My cousin, after going to bording school for many years, almost forgot how to speak Gujarati (the native language in Gujarat), and only knew English really well.
There's no need to learn Hindi if you want to get into outsourcing to India, they all speak fluent English (it sounds more like British English with an accent). In fact, for some of the call centers, they are trained to have an American accent, and even know the local news for the area!
This is one of the reasons India is so popular for outsourcing. No language barrier and good education (for those with money). China could get a piece of the action, but I think language is a barrier in that case.
Yup. I was lucky in that my first job out of school included a heavy dose of customer support, a lot of contact with "management" and even order-taking (it was a ~10 person operation). Although I absolutely hated it at the time, I now realize it made me a better developer and gave me a much wider perspective on technology business as a whole. 15 years later, at a multibillion dollar corp, part of my job is supporting internal customers and occasionally external beta test users. It's eye-opening to see how they view the machines vs. how we, the developers do. It's difficult to be a good high-level developer without a lot of domain knowledge and an understanding of how the product will be used. For low-level, bit-twiddling stuff you can just sit in a corner all day and never talk to anyone.
My experiences and observations based on working at Sun thru most of the 90's and recently on a contract is just the opposite. As people move up the corporate latter they become more conservative as there is more at risk, more to loose. Decision making takes longer and conflicts go unresolved because of the increased risk. A pattern of Good News up, Bad News down becomes the norm. And with the Peter Principle in full affect, accountability goes at the window. -psk
Actually, the "etched in stone" chapter is why the book didn't get a 10. I've had the same experience you mention throughout my career. I'm much more of an iterator, myself. Duncan uses a similar approach in "Design Under Fire", and frankly, I've been able to be successful taking his requirements approach, and using it in an iterative fashion. I know that wasn't how he intended it, but you always have to adapt something to your world.
- Think of it as evolution in action -