DEV Community

Excerpts from ‘The Clean Coder'

Yos Riady on February 17, 2018

Find more interesting articles at yos.io What does it mean to be a true software craftsman? Here are my highlights from The Clean Coder, a ...
Collapse
 
martinhaeusler profile image
Martin Häusler

All three of "Uncle Bob" Martin's books (Code, Coder & Architecture) are absolute must reads. Some of his talks you can find on YouTube are pretty good as well. I consider him to be among the best software engineers on this planet. Aside from his strange fetish for test-driven development (I personally strongly disagree with the "test first" principle), he is very pragmatic in his decisions.

However, as with all advice which is as general as the content of Martin's books and talks, do take it with a grain of salt, in particular when it comes to details. Perspectives, situations and people differ. His general overarching message that we should all try to become better engineers through discipline, expanding knowledge and asserting quality is the best advice I can imagine.

Collapse
 
timmybird profile image
Bartek Svaberg

Sorry but no, very much no! When I'm not at work it is my responsibility to take care of my marriage,my wife, my children, my home and my life in order to be able to come to work well rested and able to focus on work. I simply don't have time for a half time extra job if I want to be good at doing the important things in life. Quality is everything, quantity is useless if quality is lacking.

Luckily my employer and my boss are on the same page as me. That's why I am not keen on looking for a new job and that's also why me or my family never object when my employer needs a little extra from me on the odd occasion. Swings and roundabouts.

Collapse
 
nickpolyder profile image
Nick Polyderopoulos

Hello,

Personally i think that the 20 hours a week are manageable.
I do an one hour research before and after work.
3 - 5 hours the weekend.

Of course this can be altered to anyone's preference and timeline.

For me its important to do a little reading, but its not a requirement to do for 20 hours. You can adjust it to your liking.

Although i should say i like your opinion based on the time you need to spent with your family.
I would do the same if i had time to do only one thing.

Thanks for your time

Collapse
 
moopet profile image
Ben Sinclair • Edited

If it's manageable for some people, that's great. I'm extremely wary of anyone suggesting that it should be the norm, though, because:

  1. some people don't have the time
  2. some people don't have the health
  3. it fosters an environment where people will expect you to behave that way and if you don't you'll be seen as somehow lesser than your peers - regardless of how you perform in your job.

As a soundbite, expecting a 60-hour week isn't a work ethic, it's commitment creep.

Thread Thread
 
blonkm profile image
Michiel van der Blonk

Expecting a 60 hour week and paying for 40? Those 20 hours are slavery.

Collapse
 
alainvanhout profile image
Alain Van Hout

"Personally i think that the 20 hours a week are manageable"

... for you. Don't expect other people's situations to be similar to yours. And be ware of "can't you just" suggestions. They may sound helpful in your head, but they come across poorly.

Thread Thread
 
nickpolyder profile image
Nick Polyderopoulos • Edited

Hello @Alain Van Hout,
I don't know if you read my whole comment.
But i didn't say that i'm absolute with this but what works for me.

I stated that if i had to choose between family and work (and couldn't do these 2 things together) I would choose family of course.

Please don't be quick on your judgement to others.
I merely said what is on my head and on my daily routine. I don't expect anyone to follow my routine because they don't have my life.

Thanks,

Thread Thread
 
alainvanhout profile image
Alain Van Hout

That's good to hear.

I did read the rest of your comment before replying, and even then the first sentence still sounded like an absolute, in the sense that it seemed that you'd expect it to be true for most people -- i.e. barring unusual exceptions.

That's the problem with language I suppose, especially in written form: it's very easy to find different meanings in the same piece of text :).

Collapse
 
maninthebox profile image
Zarko Stankovic

This is a great suggestion! I agree that 20 extra hours per week dedicated solely to yourself can be a burden. Some other commenter already said here that he spends one hour before the work, and one hour after his work. That's 10 hours during work days. I believe that's already a great achievement. However, that might not be always possible. But that's also ok. To me, the best thing is to be consistent and try to achieve some small thing every day (for yourself, not your employer!). Of course, family and private life is extremely important and should be always more important than professional career IMHO!

Collapse
 
scott_yeatts profile image
Scott Yeatts • Edited

I want this to be constructive :D Testing your code, not making commitments you can't keep, being a boy scout in the codebase and leaving it better than you found it are ALL great and classic software engineering rules! Not expecting your employer to be interested in your professional development is not.

It leads to age discrimination (as we get older, outside responsibilities like family, homes, and financial management typically increase), and burnout.

Negative examples are asking for a github in an interview from an engineer that was coding with 3 kids a wife, 2 cars and a yard to mow before github even existed.

No github, no job.

The only way to learn framework X that the employer requires you have experience with is on your own time.

No framework, no job.

10 years of experience with technology Z but since you didn't spend your own time with Z 1.2, no job.

If I spend 2 hours every weeknight after I leave work, eat dinner, and put my son to bed, then I'm faced with the choice of quality time with my wife, coding, or cutting my sleep by 2 hours.

We as software engineers have to fight back against the 'code all day and night' mentality. It's toxic, destructive, it pushes people out of our industry, and the only benefit is to the employers that get to save money on skill development programs by convincing us that we should be doing these things on our own time.

I loved most of this excerpt! But we HAVE to stop telling engineers that they need to give up significant portions of their lives just so our employers can abuse our passion for coding. ('Not passionate enough' is another code-word they use for 'doesn't seem like they would work 20+ hours extra for 0 pay')

(Edit: Wall o'text needed some white space)

Collapse
 
imv889 profile image
Ivan

"You should plan on working 60 hours a week."

We are a sick society.

Collapse
 
dominicduffin1 profile image
Dominic Duffin

I agree with many points in this article - particularly using time wisely, asking for help when necessary and not writing code when tired at 3am.

I'm sorry, but I can't agree with encouraging people to work 60 hours a week - both because I don't believe it's good for our long-term health and wellbeing and because seeing ultra-long working hours as a mark of excellence disadvantages people who are unable to commit to such hours - maybe because of family commitments or health reasons. Such attitudes are likely to be one of the barriers to the greater diversity that the tech industry so badly needs - women, older people and disabled people are most likely to be affected. I think employers should encourage full-time employees to use a portion of their working hours for personal development - I believe this would improve inclusiveness employee morale.

Collapse
 
nilanjanb profile image
nilanjan • Edited

I would recommend some understanding of testing and 'QA' (you won't find it in Clean Coder). Testing is not only about code. This is testing: medium.com/@revelutions/how-cem-ka... . Don't listen to anyone who can't test like that.

I think it's a good idea to write good code. However, that has almost nothing to do with testing the product later. The reason you test later is the same reason you deliver code in small increments to get feedback. '.... involve me and I learn' goodreads.com/quotes/21262-tell-me... When you start using a software that you get ideas about risks.

Test first and test later are not either-or. en.wikipedia.org/wiki/False_dilemma

= #kaner #satisfice #developsense #geraldmweinberg #lets-test #cast #lessonslearned

Collapse
 
rshekhar_in profile image
Shekhar

Link not opening correctly. medium.com/@revelutions/how-cem-ka...

Collapse
 
kodikos profile image
Jodi Winters

I don't see anyone commenting on the standup meetings approach it describes. This technique of everyone talking about stuff done, doing and blockers almost always ends up being a time waster (you know, the one that blunders their way through it because they haven't been attached to their intravenous coffee drip yet, or the one who doesn't shut up trying to impress how busy they are). Worse, it promotes siloing and demotes pairing. What matters is the work - talk about the tickets/tasks on the board and how they're going to get progressed today. Talk about the important ones like blockers or expedites first, you may not even need to bother talking about the low pointers. Talk about it like a team, not a bunch of individuals justifying their jobs. Praise what you achieved in retro, instead of moaning about how you feel unfulfilled in your job!

Collapse
 
aftabksyed profile image
Aftab Syed

Great summary of the book. Appreciate your efforts on condensing it in an easy to read format.
Keep it up 👍

Collapse
 
scerruti profile image
Stephen Cerruti

Link wrong?

Collapse
 
yos profile image
Yos Riady

Fixed, thanks!

Collapse
 
scerruti profile image
Stephen Cerruti

If anyone has an extra copy of this book they'd be willing to donate, I would love to consider it for use in my class (Level 7 @ The LEAGUE of Amazing Programmers [jointheleague.org]).

Collapse
 
shiling profile image
Shi Ling

Perfect digest, I could share this with my team. Thanks!

Collapse
 
booligoosh profile image
Ethan

I think this is actually the best programming-related article that I have ever read. Thanks for posting, really good advice :D