More on this book
Community
Kindle Notes & Highlights
Pragmatic Programmers won't sit idly by and watch their projects fall apart through neglect.
taking responsibility for yourself and your actions in terms of your career advancement,
You have the right not to take on a responsibility for an impossible situation,
it is up to you to provide solutions, not excuses.
Instead of excuses, provide options.
Try to flush out the lame excuses before voicing them aloud.
Don't leave "broken windows" (bad designs, wrong decisions, or poor code) unrepaired. Fix each one as soon as it is discovered.
Tip 7 Make Quality a Requirements Issue
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
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.
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.
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.
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.
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.
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.
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.
Tip 8 Invest Regularly in Your Knowledge Portfolio
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
After you've mastered the technologies you're currently using, branch out and study some that don't relate to your project.
Don't forget the human side of the equation.
Isolation can be deadly to your career;
Experiment with different environments.
The process of learning will expand your thinking, opening you to new possibilities and new ways of doing things.
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.
Tip 9 Critically Analyze What You Read and Hear
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.
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...?"
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.
You get two major benefits if you write orthogonal systems: increased productivity and reduced
Don't rely on the properties of things you can't control.
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.
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.
How Accurate Is Accurate Enough?
The first part of any estimation exercise is building an understanding of what's being asked.
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.
it's knowledge.
Preconditions. What must be true in order for the routine to be called; the routine's requirements.
Postconditions. What the routine is guaranteed to do;
Class invariants. A class ensures that this condition is always true from the perspective of a caller.