Dapeng Li

Hungry, foolish and passionate – yet another software developer.

Archive for the ‘Book Notes’ tag

My favorite quotes from the book “The Clean Coder”

leave a comment

Recently I read a book named The Clean Coder by Robert C. Martin (aka Uncle Bob). I have learned a lot from his previous books like Agile PPP and Clean Code, this one is no exception. If you would like to be a professional software developer, please read this book.

Below are my favorite quotes from every chapter in the book.

1. Professionalism

Professional is all about taking responsibility.

The fact that bugs will certainly occur in your code does not mean you aren’t responsible for them. The fact that the task to write perfect software is virtually impossible does not mean you aren’t responsible for the imperfection.

2. Saying No

Don’t you have to do what your manager says? No, your manager is counting on you to defend your objectives as aggressively as he defends his. That’s how the two of you are going to get the best possible outcome.

3. Saying Yes

The secret ingredient to recognizing real commitment is to look for sentences sound like this: I will…by… (example: I will finish this by Tuesday.)

4. Coding

The training of less experienced programmers is the responsibility of those who have more experience. Training courses don’t cut it. Books don’t cut it. Nothing can bring a young software developer to high performance quicker than his own drive, and effective mentoring by his seniors.

5. Test Driven Development

The tests you write after the fact are defense. The tests you write first are offense.

6. Practicing

Professional programmers practice on their own time… employers of programmers don’t have to pay you for your practice time.

7. Acceptance Testing

Unit tests and acceptance tests are documents first, and tests second… The fact that they automatically verify the design, structure, and behavior that they specify is wildly useful, but the specification is their true purpose.

8. Testing Strategies

To make good on the goal that “QA should find nothing,” development teams need to work hand in hand with QA to create a hierarchy of unit, component, integration, system, and exploratory tests.

9. Time Management

Remaining in a meeting that has become a waste of time for you, and to which you can no longer significantly contribute, is unprofessional.

10. Estimation

An estimate is not a number. An estimate is a distribution.

11. Pressure

When the going gets tough, trust your disciplines. The reason you have disciplines is to give you guidance through times of high pressure.

12. Collaboration

Perhaps we didn’t get into programming to work with people. Tough luck for us. Programming is all about working with people.

13. Teams and Projects

Professional development organizations allocate projects to existing gelled teams, they don’t form teams around projects.

14. Mentoring, Apprenticeship, and Craftsmanship

School can teach the theory of computer programming. But school does not, and cannot teach the discipline, practice, and skill of being a craftsman. Those things are acquired through years of personal tutelage and mentoring.

Written by Dapeng

April 16th, 2013 at 9:49 pm

Posted in Programming

Tagged with ,

I want to get “high” every day – reading “The Passionate Programmer”

4 comments

In May 2010, I attended a Microsoft Web Camp event at Beijing, that two-day event was hosted by Scott Hanselman and James Senior.

I had a lot of fun, I got “high” even if I just slept for a couple of hours, it was by far the two happiest days of my life as a programmer. I think it mainly because I really enjoyed learning and working with two great programmers/teachers, and I finished a challenging (but achievable) task in less than 24 hours. When I left the camp, I felt down. No surprise – I want to had that feeling every day, I want to get “high” every day.

Then I found the book The Passionate Programmer by Chad Fowler. This book enlightened me with some eye-opening suggestions on a programmer’s career, after reading just a few chapters I know why I was so happy in the Web Camp, and what I should do if I want to get “high” again.

This is not an exhaustive summary of the ideas in the book, they’re spread in 53 mini-chapters. Below are some of them that particularly resonate with me. (I grouped them, but most of the contents are taken directly from the book.)

Be Great

It’s about being awesome. It’s about winning. You don’t win a race by trying not to lose. And you don’t win at life by trying not to suck.

From chapter #6 – Don’t Listen to Your Parents

Fear-driven advice is geared toward not losing. Thinking about not losing is not the way to win! Winners take risks.

I saw new domains, I worked on harder problems, and I was rewarded more heavily than ever before. It was scary at times, but when I decided to be less fear-driven and conservative in my career choice, the shape and tone of my career — my life — changed for the better.

Be the Worst

From chapter #4 – Be the Worst

Always be the worst guy in every band you’re in. Because people can significantly improve or regress in skill, purely based on who they are performing with. And, prolonged experience with a group can have a lasting impact on one’s ability to perform.

From chapter #13 – Find a Mentor

A role model sets the standard for what “good” means. Without a role model, there’s no incentive to get better.

A mentor can also give structure to your learning process.

A mentor also serves as a trusted party who can observe and judge your decisions and your progress.

Be a Generalist

From chapter #7 – Be a Generalist

It’s not about where you sit on the perceived value chain of project work (where the architect holds the highest spot of royalty). It’s about how generally useful you make yourself.

Longevity is going to require that you are platform neutral in the workplace. We all have our preferences, but you’re going to have to leave your ideals at home. Master one, and get good at the other. Your skills should transcend technology platform. It’s just a tool.

From chapter #9 – Don’t Put All of Your Eggs in Someone Else’s Basket

When the author asked one of his employees, “What do you want to do with your career? What do you want to be?” He was terribly disappointed by his answer: “I want to be a J2EE architect”.

“Why not a Microsoft Word designer or a RealPlayer installer?”, the author asked.

The problem is: This guy wanted to build his career around a specific technology created by a specific company of which he was not an employee. Why would you want to trust a technology company with your career? We fool ourselves into thinking market leader is the same thing as standard.

Take the advice of being a generalist and platform neutral, what you should be able to say is “Let the vendors come and go — I know how to design a system!”

From chapter #45 – You’ve Already Lost Your Job

The one certain thing is that everything is changing. Don’t try to settle into the identity of a programmer. Or a designer. Or a tester.

From chapter #12 – Learn How Businesses Really Work

We worked for a business, and our job was to contribute to either making or saving money for that business. Yet we didn’t understand the basics of how the business came to profitability. Worse, we didn’t think it was our job to know.

However, how were we supposed to creatively help the business be profitable if we didn’t even understand how the business worked?

Be a Practicer

From chapter #15 – Practice, Practice, Practice

Our industry (programming) tends to practice on the job.

Musicians (the author used to be a professional saxophonist) are paid to perform in public — not to practice. They let the ugliness happen behind closed doors — not when they’re actually working.

From chapter #16 – The Way That You Do It

Ultimately, if you can’t do the process, you can’t do the product. It’s much easier to find someone who can make software work than it is to find someone who can make the making of software work.

Be where You Are At

From chapter #23 – Be Where You’re At

Be ambitious, but don’t write it on your sleeve. If you do, then you’re just a mediocre performer with a bad attitude. So what if you have high potential! Right now, you are not showing it.

Be where you are at, do good work in your job. If you’re not satisfied with it, don’t be whiny, do it or leave it.

I felt very lucky attending the Web Camp, and then reading this book; “being the worst” and “finding a mentor” in the camp made me a believer of these two powerful advices. That experience and this book made me looking at what I’m doing from a new perspective.

Although I don’t know for sure what the next big event in my career will be, what I do know is I have a direction, and a principle – be great and get high, every day.

Written by Dapeng

November 5th, 2011 at 8:30 pm

Posted in Programming

Tagged with