E-Book, Englisch, 544 Seiten
Duncan The Career Programmer
2. ed
ISBN: 978-1-4302-0119-9
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark
Guerilla Tactics for an Imperfect World
E-Book, Englisch, 544 Seiten
ISBN: 978-1-4302-0119-9
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark
The crucial wisdom-guide to surviving within the programming industry in 2006. Provides raw material for surviving and thinking smart in today's industry. Delivered with the wit and aplomb to make a serious topic entertaining and palatable TE Conquer Master self-defense techniques to shield yourself, your project, and your code from corporate politics, arbitrary management decisions, and marketing-driven deadlines Explains how the individual programmer or project manager can work within the existing system to solve deadline problems and regain control of the development process
Founder of Practical Strategy Consulting, Christopher Duncan is the bestselling author of Unite the Tribes and The Career Programmer. He's been a frequent guest on radio shows across the country, his monthly columns have been read by hundreds of thousands worldwide, and he is widely acclaimed for his immensely practical approach to success in the real world where self interest and office politics are often more prevalent than common sense. This keen insight does not come by accident. Christopher has an unusually diverse background which includes a career in sales consulting, life as a professional musician, and experience fighting deadlines as a cubicle-dwelling software developer. He's also performed mind-numbing factory work, labored on construction sites, and built components for guided missiles. Currently, he writes, speaks and mentors professionals on career and business strategies. He understands the problems and goals of your people, from the lowest-paid workers to the executive elite, because he's been there himself and lived to tell the tale. Whether he's talking about the job-related anxieties of the night watchman's attack chihuahua or explaining the relationship between bunny slippers and corporate productivity, his humor and light-hearted antics will entertain your audience as he shares his vision of success through the pursuit of American excellence. Lively, expressive, and a consummate professional with three decades of stage experience, Christopher delivers an exciting and practical message to your people, inspiring them to reach for their very best and showing them how to get there in the real world, where things don't always go according to plan. Most importantly, he makes sure that everyone has a little fun in the process. He can be reached at www.PracticalStrategyConsulting.com.
Autoren/Hrsg.
Weitere Infos & Material
1;Contents at a Glance;5
2;Contents;7
3;Foreword;14
4;About the Author;18
5;Acknowledgments;20
6;Introduction;22
7;PART I SOFTWARE DEVELOPMENT IN AN IMPERFECT WORLD;34
7.1;CHAPTER 1 Welcome to the Corporate World;36
7.1.1;So You Thought You’d Just Be Coding All Day, Eh?;36
7.1.2;What’s a Nice Programmer Like Me. . .;38
7.1.3;Why People Run Businesses and Pay Programmers;39
7.1.4;The Corporate World Is Not Logical;41
7.1.5;You Can’t Win If You Don’t Play;44
7.1.6;The Food Chain;46
7.1.7;The Various Species of Programmers;49
7.2;CHAPTER 2 Business Is War. Meet the Enemy.;54
7.2.1;Unrealistic Deadlines;54
7.2.2;Vague Definition of Requirements;61
7.2.3;Inadequate Time for Analysis and Design;64
7.2.4;Sometimes the Enemy Is Within;67
7.2.5;No Time or Resources for Testing;69
7.2.6;Poor Company Management;71
7.2.7;Internal Politics;74
7.2.8;The Unexpected;75
7.3;CHAPTER 3 Good Coding Skills Are Not Enough;78
7.3.1;What’s in It for Me?;78
7.3.2;Who Needs These Skills?;82
7.3.3;Taking Control of Your Time;84
7.3.4;Enhancing Design;86
7.3.5;Improving Interaction;86
7.3.6;Getting What You Want;87
8;PART II GUERILLA TACTICS FOR FRONT-LINE PROGRAMMERS;90
8.1;CHAPTER 4 Preventing Arbitrary Deadlines;92
8.1.1;Defining the Process;93
8.1.2;Commissioning a New Software Project;96
8.1.3;Identifying the Requirements;97
8.1.4;Building Your Testing Environment;98
8.1.5;Entering the Design Phase;99
8.1.6;Estimating the Effort;101
8.1.7;Coding Bliss;103
8.1.8;Testing the Candidates;104
8.1.9;Addressing the Installation Issues;104
8.1.10;Managing the Beta Phase;105
8.2;CHAPTER 5 Getting Your Requirements Etched in Stone;108
8.2.1;You Don’t Have to Like It. It Just Has to Be Clear.;109
8.2.2;Where Does the Power Lie?;110
8.2.3;Politics Are an Inescapable Reality;112
8.2.4;Identifying the Other Influential People;114
8.2.5;Selling the Process;115
8.2.6;The Definition Questions;116
8.2.7;Preparations for Effective Information Gathering;117
8.2.8;Defining the Requirements;119
8.2.9;When the Party’s Over;121
8.2.10;Coping with a Hostile Environment;122
8.2.11;Politics Are Never Far Away;126
8.3;CHAPTER 6 Effective Design Under Fire;128
8.3.1;Design? What Design?;129
8.3.2;Estimating the Design Effort;130
8.3.3;Rolling Your Own Design Methodology;133
8.3.4;Hitting the High Points;138
8.3.5;Effective Prototyping;139
8.3.6;When You Can’t Get Even This MuchTime;141
8.3.7;Onward to Implementation;143
8.4;CHAPTER 7 Practical Estimating Techniques;144
8.4.1;Understanding the Process;145
8.4.2;Avoiding Common Mistakes;146
8.4.3;The Myth of the Eight-Hour Day;147
8.4.4;Crunching the Numbers;149
8.4.5;Converting Hours to Delivery Dates;151
8.4.6;Don’t Forget the Final Details;154
8.4.7;Wrapping Up the Project;156
8.4.8;What If Things Didn’t Go by the Book?;157
8.5;CHAPTER 8 Fighting for Quality Assurance;160
8.5.1;How Do We Get Away with Buggy Releases?;161
8.5.2;Justifying a Quality Assurance Effort;162
8.5.3;What’s a Tester?;164
8.5.4;Building Your Team;166
8.5.5;Training Your Testers;167
8.5.6;Make the Testers Feel Like a Part of the Team;169
8.5.7;Establishing the QA Process;171
8.6;CHAPTER 9 Keeping the Project Under Control;174
8.6.1;Keeping Track of Your Time;174
8.6.2;Managing Your Team;176
8.6.3;Improving Your Coding Discipline;177
8.6.4;Thinking Ahead to Debugging;180
8.6.5;Incorporating Version Control;181
8.6.6;Improving Productivity;182
8.6.7;Knowing When to Walk Away;184
8.6.8;Optimizing Your Meetings;185
8.6.9;Wrapping It Up;189
8.7;CHAPTER 10 Managing Your Management;192
8.7.1;Improving Communications;193
8.7.2;Instituting Change;196
8.7.3;Bolstering Your Position;198
8.7.4;Frontal Assaults (For Those Who Respond to Reason);200
8.7.5;Stealth Tactics (When Reason Is Not Enough);202
8.7.6;Credibility, the Key to Success;204
8.8;CHAPTER 11 Corporate Self-Defense;208
8.8.1;What Do You Have to Lose?;209
8.8.2;Picking Your Battles;210
8.8.3;Avoid Being a Target;213
8.8.4;Assessing the Lay of the Land;214
8.8.5;Escape and Evade;215
8.8.6;If You Must Attack;216
8.8.7;Improving Your Skills;218
9;PART III BUILDING A BETTER CAREER;220
9.1;CHAPTER 12 Controlling Your Destiny;222
9.1.1;Considering Your Options;223
9.1.2;The Company Man;225
9.1.3;The Mercenary;227
9.1.4;The Entrepreneur;230
9.1.5;Off to the Races;232
9.2;CHAPTER 13 Get a Job (Sha na na na. . .);234
9.2.1;The Usual Suspects;235
9.2.2;Fame for Fun and Profit;239
9.2.3;Getting the Word Out;240
9.2.4;Digging Deeper;241
9.2.5;Shuffling Paper;242
9.2.6;Face Time;248
9.3;CHAPTER 14 Career 2.0;252
9.3.1;Captain, She Canna Take Much More o' This!;252
9.3.2;Life Beyond Coding;253
9.3.3;Where’s a Compass When You Need One?;256
9.3.4;Abandon Ship!;258
9.3.5;Where Do We Go from Here?;259
9.3.6;Turning Passion into Paychecks;260
9.4;CHAPTER 15 Flying Solo;264
9.4.1;Many Hats;265
9.4.2;Getting the Picture;271
9.4.3;Know Your Weaknesses;272
9.4.4;Creating Your Deliverables;273
9.4.5;Distribution Decisions;274
9.4.6;Getting the Word Out;275
9.4.7;Continuing Education;276
9.5;CHAPTER 16 Job Security;278
9.5.1;Long-Term Thinking;280
9.5.2;Taking Care of Your Peers;281
9.5.3;Improving Communication;282
9.5.4;Overcoming Fear of Change;283
9.5.5;Turning Drudgery into Games;284
9.5.6;Promoting Your Agenda;285
9.5.7;Becoming a General;286
9.5.8;Inspiring Innovation;287
9.5.9;Generating Enthusiasm;288
9.5.10;Promoting Unity;290
9.5.11;The Indispensable Programmer;291
10;Index;294
3 CHAPTER Good Coding Skills Are Not Enough (p. 45-46)
But I just wanna be a programmer! Why do I need all of these non-coding skills? Can’t I just sit in my cubicle and concentrate on programming? Sure you can. In fact, the overwhelming majority of programmers worldwide do just that. Of course, the overwhelming majority of programmers worldwide also have an extremely common set of complaints about their jobs. The simple reality of the matter is that your job is probably not anywhere near as good as it could be, and neither is your software. We’ve already identified a large number of culprits that appear to be responsible for the problems we encounter, but, when it all comes down to the bottom line, it’s your fault. Ouch. Can I say that? Well, perhaps, if only because I’m safe for the moment from the sting of a whiteboard eraser.
How can all of the shortcomings in your software development shop—so many of which are typically caused by managerial decisions that exhibit about as much common sense as a lima bean—be your fault? Simple. If you sit on your hands and do nothing, then you’re part of the problem when you could be part of the solution. Wait, that sounded a bit like one of those trendy catch phrases. Maybe I’ve been hanging out in the corporate world too long. If I’m suggesting that you take a more active role in dealing with the issues you face as developers, I suppose it’s not that different from asking you to storm a machine gun nest. Of course, all those years of dealing with maintenance programmers has undoubtedly prepared you better for such a task. Still, to be practical about it, anyone taking risks should have a reason for doing so. In other words, what’s in it for you?
What’s in It for Me?
Probably one of the biggest hassles in any full-time programmer’s career is sacrificing your life to countless hours of unproductive—and very often unpaid— overtime. It’s bad enough that you’re given a situation where you can’t get the job done working forty hours a week. The way most businesses are run, the end result may well be yet another release disaster, even if you put in eighty hours a week. That’s not exactly a rewarding experience, particularly if you have to give up your life for it. When we fire up the editor, what we’re reaching for is the next killer app. We are artists as much as anything else. To put blood, sweat, and tears into a project (okay, maybe not the former if you don’t have to interact with the maintenance programmer) only to have management ship it in a half-baked state can be downright infuriating, and that’s with a full night of sleep. I have no desire to work day and night as it is. Doing so on a project destined for failure adds insult to injury.
Along those lines, one of the things that are in it for you as an artist is the ability to ship a better-quality product. Whether your name is in the About box or not, your signature is on every piece of software you ship. We all tend to take a great deal of pride in our accomplishments, so who wants to be associated with anything other than a spectacular success? Do I work for money or for ego? Both. (In that order, for the record, but definitely both.) If you want to be involved in projects that make you proud, you have to do your part to help them survive in the wild.
Actually, I’ve always had a pretty bad attitude towards companies that take advantage of programmers and expect them to dedicate their every waking minute to the job. Maybe it’s because I’ve been a musician all my life and have seen how nightclubs and other aspects of the music industry tend to pay almost nothing. They get away with this because they know we love music so much that we’d probably play for free and are usually happy to take whatever we can get. A low-paying gig on the weekend is more fun than no gig. Because of this, bar gigs pay today almost exactly what they paid twenty years ago— really. It’s an unfair and predatory practice, but is so common that it’s become the accepted norm. If you push for more equitable pay, you’re simply told that they’re not doing anything different than every other venue in town. That’s typically true, but it doesn’t make it right.
Many software development companies employ this exact approach in dealing with programmers, and for the same reasons. We got into this business because we were passionate about programming. We tend to do it at home in the evenings and on weekends just for fun. With the same predatory attitude, these sweatshops take advantage of our love for development and make continual overtime an accepted norm.
I have a friend who is a programmer working in such an environment. In fairness, I must say that he was told up front in the interview that, due to the stock options giving the employees a sense of ownership in the company, they hired only those people who were willing to dedicate above-average hours to the job. Nonetheless, he has been killing himself the past few weeks working late hours. I made some of the usual jokes with him regarding end-of-theproject crunch time and asked when the release date was. His answer floored me, even though it’s nothing new. He said there was no deadline, it was simply a corporate culture. If you weren’t putting in all the extra hours, you just weren’t working hard enough.




