The Pragmatic Programmer

Priyanka.R : Ramarson Technology Developers LLP 

A Pragmatic Philosophy is an attitude, a style, a philosophy of approaching problems and their solutions. Taking responsibility, accepting changes &Understanding the context for better software in a continuous learning cycle

Tips for becoming a Pragmatic Programmer ;

1: Care about your craft – Develop your software well with good software tools and best possible technology available.

2: Think ! about your work – Turn off the autopilot, think every decision you are making every day.

The Cat Ate My Source Code

–Provide Options, Don’t Make Lame Excuses–Take Responsibility

Don’t Live with Broken Windows

Don’t leave “broken windows” (bad designs, wrong decisions, or poor code) unrepaired. Fix each one as soon as it is discovered. If there is insufficient time to fix it properly, then board it up.

Soldier’s story! ‘Be a Catalyst for Change”! The villagers think about the stones and forget about the rest of the world. We all fall for it, every day. Things just creep upon us.

–Take awareness of yourself, don’t be the boiling frog imagine the big picture

–Constantly review what’s happening around you, not just what you personally are doing.

–Being so concerned with the details of a problem, you can’t see its overall structure.

THE PRAGMATIC APPROACH

The Evils of Duplication: The problem arises when you need to change a representation of things that are across all the codebase.

Types of duplication:–Imposed duplication–Inadvertent duplication–Impatient duplication and–Inter-developer duplication

ORTHOGONALITY

–Two or more things are orthogonal if changes in one do not affect any of the others. Orthogonality allows to:

–reduce the numbers of errors–divide functions within an application easier–divide teams more logical–test faster

TRACER BULLETS

–Tracer Bullets Don’t Always Hit Their Target

–Whereas tracer bullets (can be algorithms, techniques, languages, or libraries) should penetrate a bigger area, prototyping provides great feedback when exploring a more focused area of the project.

Advantages:

–Users get to see something working early–Developers build a structure to work in–You have an integration platform–You have something to demonstrate–You have a better feel for progress.–Shell Games–Debugging(Fix the Problem, Not the Blame)

THE BASIC TOOLS

Debugging Strategies:a)Visualize Your Data b)Rubber Ducking

Pragmatic Paranoia: You can’t write perfect software.

CUTTING THE GORDIAN KNOT
CHECKLIST TO IMPROVE: When solving impossible problems, ask yourself:

–Is there an easier way?

–Am I solving the right problem?

–Why is this a problem?

–What makes it hard?

–Do I have to do it this way?

–Does it have to be done at all?

GOALS: 

–Learn at least one new language every year–Read a technical book each quarter–Read nontechnical books, too–Take classes–Experiment with different environments.–Stay current–Get wired.