[ Content | View menu ]

The Pragmatic Programmer Reread, Part 1

Mark Mzyk May 31, 2013

I’ve begun rereading The Pragmatic Programmer. It was originally recommended to me by someone at my first job out of college, which was six years ago. Now I’m in a position where I’m the more experienced programmer working with younger programmers. It’s good time to pick up the book again and see if what lessons I’ve forgotten from it and what I can pass on to others.

As I’m read it I’m taking notes, especially around each of the tips. Presented here are my notes, copy and pasted. There will be eight of these posts, as the book has eight major sections and that’s how I’m dividing my notes. Hopefully you find this useful as an abbreviated guide to what the book teaches. If you haven’t read the book, pick up a copy and read it, because no notes can do it full justice.


A Pragmatic Programmer is:

Early adopter/fast adapter – ties into Jack of all trades – try lots of new things

Inquisitive – try lots of new things, always learning – never know when you will need the knowledge

Critical Thinker


Jack of all trades (specialize when need to, but keep abreast of developments)


Tip 1: Care About Your Craft

Tip 2: Think! About Your Work

Tip 2 follows from Tip 1

Be a craftsman. You may be part of a larger team, but in your individual work you can leave your mark.

If one builder of a cathedral doesn’t give a damn about his bricks, won’t that stand out when you marvel at the otherwise amazing building?

(To expand on the analogy used in the book)

Learning and improving is a continuous process. You get better one small step at a time.

So too, we’re learning this about software. Small steps lead to large improvements (continuous delivery anyone?)

Always be aware of the big picture in which you work – it informs your work and what you do.

And the big picture changes in scope – it’s your team, your company, your country, the human race, the universe. All apply, but how often do we think of each of these?


Tip 3: Provide Options, Don’t Make Lame Excuses

Take responsibility for your work, which means admitting when you are wrong and providing ways to fix things.

Also remember: if the situation you’re in is impossible, you can step away and not take responsibility – but don’t act like you are going to take responsibility only to bail later.


Tip 4: Don’t Live With Broken Windows

Simple idea: take care of your code. If you inherit bad code, clean it up. Maybe you can’t right away, but start. Put up signs that you are, so it is clear someone cares.

Then others will care to.

See Tip 1.


Tip 5: Be a Catalyst for Change

Sometimes to make change, you have to go rogue, which can be as simple as hiding your larger intentions while getting a project rolling.


Tip 6: Remember the Big Picture

The big picture is why you do the work you do. It’s easy to get caught up in the code, but if you don’t put things in context that’s when you build the wrong thing,

or you miss how things are changing around you.


Tip 7: Make Quality a Requirements Issue

Let the user decide when a piece of software is good enough – not everything needs to be gold plated.

Corollary: Ship Early, Ship Often


Tip 8: Invest Regularly in Your Knowledge Portfolio

Straight forward: Keep learning.


Tip 9: Critically Analyze What You Read and Hear

Learning doesn’t help you much if you don’t think about it.

See Tip 2.


Tip 10: It’s Both What You Say and the Way You Say It

Effective communication and persuasion take work. You’ll need to practice it just like you would practice a new coding skill.


[Author’s Note: This post edited on June 11th to improve formatting for easier reading from the original posting]

Thought Leader

Mark Mzyk May 1, 2013

The term thought leader is being thrown around a lot lately, mostly in a derisive way, since it is over used. The Wikipedia definition, copied wholesale here, is this:

Thought leader is management terminology for a person or an entity that is recognized by peers for having progressive and innovative ideas. Typically thought leaders have proven themselves in the business, academic or political sphere through successful implementation of their ideas. Thought leaders often publish articles and blog posts on trends and topics influencing an industry or directed internal to an organization. Through effective communication and clarity of purpose, they effect change and are considered exemplary leaders.

That works as a definition, but I think it misses a crucial component of a thought leader. My definition would be this:

A thought leader is someone who takes disparate ideas and expresses them as a cogent whole. This doesn’t mean they necessarily have original ideas (although they often do), just that they are good at expressing and merging ideas into something new and useful.

Another part of being a thought leader is that you have to be visible. If no one knows of your ideas, then by definition you can’t be a thought leader.

You also can’t be a thought leader by calling yourself one. It’s a term bestowed on you by others. It should never show up on a business card.

An Open Letter to Recruiters

Mark Mzyk February 26, 2013

Dear –,

I’m sure you mean well in reaching out. I’m sure you’re just trying to do your job. However, a solicitation like this isn’t going to get me to change jobs. I believe I speak for all technical workers when I say that repeated solicitations like this wear on us. It’s not that you’ve hit me up multiple times, but you’re just the latest. If there is a week that I don’t get at least three to five recruiters asking me about a position I start to wonder if something tragic befell the industry.

I may have even spoken to you at some point. I’ve tried to be nice to recruiters, so occasionally I’ve spoken with them on the phone. I know you’re human and don’t deserve to be treated badly. However, at this point I don’t even bother answering my phone, because I know that if I don’t recognize the number, odds are it is a recruiter. The recruiter will then leave a voicemail and email me. I will delete the voicemail. If I answer the email it is just to decline it. I’ve yet to see a job from a recruiter that I would care to take.

Perhaps I would actually like some of these jobs. The only ones that even pique my interest at all, which isn’t saying much, are from company recruiters where the company is known and I have some idea what project I might be getting into. In emails that I get from recruiters where the company isn’t named, the descriptions are always so bland as to be meaningless. A programming language might be mentioned, but I have no clue what would actually be expected from me in that job. Part of this is because I have no clue who the company is. I realize recruiters don’t want to name companies because then the job candidate could just go directly to the company. If you’re so afraid the candidate is going to bypass you that you can’t name the company, what kind of value do you think you’re adding to the process?

I’ve also frequently seen the tactic of recruiters claiming they want to get to know me so they can better help me, even if they don’t have a job now. This is a hollow promise. What this means is that a few words get entered into a database about me and then I occasionally get job offers for health startups or devops positions or something else just because I mentioned those words. There isn’t any really knowledge transferred because neither side really cares about the transaction.

I’m purposefully very open on the internet. I’m on Twitter. I have a blog. My email address is easy to find. Perhaps it’s because of this that I get a lot of recruiters emailing me. It also means that it’s easy to find information on me. All of my public information is linked. You can find out a wealth of information about me. This should make it easy to tailor information to me when you send me job descriptions. You just sent me one that asks for 7+ years experience. My public resume shows I’ve been doing professional development for 6. That doesn’t mean I might not be a good fit for this job, but you should probably acknowledge that I’m lacking in this requirement and then explain to me why you think that doesn’t matter in this case. That would show that you took some initiative and that perhaps you have my interests and the company’s at heart. Instead it appears you just slapped my name into a form letter and called it a day.

Recruiters can do better. You might not hit up as many people in a day, but I believe you will place more people if you personalize your approach. I know you want to catch people when they are thinking about changing jobs but before they do. It’s hard to know when this is. It’s hard to follow a thousand pepople and develop meaningful relationships that will pay off over time. I don’t think what I’m asking you to do will be easy. But then, taking the action that leads to success never is.

So no, I’m not interested in this position. I’m happy in my current one and it would take an extraordinary job offer for me to change my mind. If you’re going to get that type of offer in front of me and get me to pay attention to it, you’re going to need to try a lot harder.