The Pragmatic Programmer
Rate it:
Open Preview
5%
Flag icon
Pragmatic Programmers won't sit idly by and watch their projects fall apart through neglect.
5%
Flag icon
taking responsibility for yourself and your actions in terms of your career advancement,
5%
Flag icon
You have the right not to take on a responsibility for an impossible situation,
5%
Flag icon
it is up to you to provide solutions, not excuses.
5%
Flag icon
Instead of excuses, provide options.
5%
Flag icon
Try to flush out the lame excuses before voicing them aloud.
6%
Flag icon
Don't leave "broken windows" (bad designs, wrong decisions, or poor code) unrepaired. Fix each one as soon as it is discovered.
7%
Flag icon
Tip 7 Make Quality a Requirements Issue
7%
Flag icon
Great software today is often preferable to perfect software tomorrow. If you give your users something to play with early, their feedback will often lead you to a better eventual solution
8%
Flag icon
Don't spoil a perfectly good program by overembellishment and over-refinement. Move on, and let your code stand in its own right for a while. It may not be perfect. Don't worry: it could never be perfect.
8%
Flag icon
Serious investors invest regularly—as a habit. Diversification is the key to long-term success. Smart investors balance their portfolios between conservative and high-risk, high-reward investments. Investors try to buy low and sell high for maximum return. Portfolios should be reviewed and rebalanced periodically.
8%
Flag icon
Invest regularly. Just as in financial investing, you must invest in your knowledge portfolio regularly. Even if it's just a small amount, the habit itself is as important as the sums. A few sample goals are listed in the next section.
8%
Flag icon
Diversify. The more different things you know, the more valuable you are. As a baseline, you need to know the ins and outs of the particular technology you are working with currently. But don't stop there. The face of computing changes rapidly—hot technology today may well be close to useless (or at least not in demand) tomorrow. The more technologies you are comfortable with, the better you will be able to adjust to change.
8%
Flag icon
Manage risk. Technology exists along a spectrum from risky, potentially high-reward to low-risk, low-reward standards. It's not a good idea to invest all of your money in high-risk stocks that might collapse suddenly, nor should you invest all of it conservatively and miss out o...
This highlight has been truncated due to consecutive passage length restrictions.
8%
Flag icon
Buy low, sell high. Learning an emerging technology before it becomes popular can be just as hard as finding an undervalued stock, but the payoff can be just as rewarding. Learning Java when it first came out may have been risky, but it paid off hand...
This highlight has been truncated due to consecutive passage length restrictions.
8%
Flag icon
Review and rebalance. This is a very dynamic industry. That hot technology you started investigating last month might be stone cold by now. Maybe you need to brush up on that database technology that you haven't used in a while. Or perhaps you could be better posit...
This highlight has been truncated due to consecutive passage length restrictions.
8%
Flag icon
Tip 8 Invest Regularly in Your Knowledge Portfolio
8%
Flag icon
Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut. Additionally, learning many languages is far easier now, thanks to the wealth of freely available software on the Internet
8%
Flag icon
After you've mastered the technologies you're currently using, branch out and study some that don't relate to your project.
8%
Flag icon
Don't forget the human side of the equation.
8%
Flag icon
Isolation can be deadly to your career;
8%
Flag icon
Experiment with different environments.
9%
Flag icon
The process of learning will expand your thinking, opening you to new possibilities and new ways of doing things.
9%
Flag icon
The last important point is to think critically about what you read and hear. You need to ensure that the knowledge in your portfolio is accurate and unswayed by either vendor or media hype.
9%
Flag icon
Tip 9 Critically Analyze What You Read and Hear
9%
Flag icon
If you are doing very detailed implementation and coding, read a book on design and architecture. If you are doing high-level design, read a book on coding techniques.
10%
Flag icon
Make what you're saying relevant in time, as well as in content. Sometimes all it takes is the simple question "Is this a good time to talk about...?"
13%
Flag icon
In computing, the term has come to signify a kind of independence or decoupling. Two or more things are orthogonal if changes in one do not affect any of the others.
13%
Flag icon
You get two major benefits if you write orthogonal systems: increased productivity and reduced
14%
Flag icon
Don't rely on the properties of things you can't control.
14%
Flag icon
When you bring in a toolkit (or even a library from other members of your team), ask yourself whether it imposes changes on your code that shouldn't be there.
16%
Flag icon
Once you decide to use this vendor's database, or that architectural pattern, or a certain deployment model (client-server versus standalone, for instance), you are committed to a course of action that cannot be undone, except at great expense.
21%
Flag icon
How Accurate Is Accurate Enough?
22%
Flag icon
The first part of any estimation exercise is building an understanding of what's being asked.
23%
Flag icon
Many new programmers make the mistake of adopting a single power tool, such as a particular integrated development environment (IDE), and never leave its cozy interface. This really is a mistake. We need to be comfortable beyond the limits imposed by an IDE. The only way to do this is to keep the basic tool set sharp and ready to use.
23%
Flag icon
it's knowledge.
33%
Flag icon
Preconditions. What must be true in order for the routine to be called; the routine's requirements.
33%
Flag icon
Postconditions. What the routine is guaranteed to do;
33%
Flag icon
Class invariants. A class ensures that this condition is always true from the perspective of a caller.