
Love thy coworker; thy work, not necessarily - luu
http://yosefk.com/blog/love-thy-coworker-thy-work-not-necessarily.html
======
devishard
This comment from "Jack" says it all:

> Well, you can also be motivated by doing a good job regardless of what that
> actually entails. For example, I'm a very good programmer. Programming has
> become boring because there is no challenge anymore. But I do enjoy
> producing very high quality output and being better than almost everybody
> else. So I don't care what I program or who uses it but I want it to be the
> best possible engineering solution.

No, you're not a good programmer because there's no challenge any more. You're
a _bad_ programmer because you've lost sight of the context of your work. If
you're bored, it's because you're solving easy problems which have already
been solved, probably for some turd-polishing startup that calls putting a Web
2.0 interface on top of a rewritten old solution "disruption". Someone will
pay you because the ad business can sell any crap, but you're not producing
value; you're just producing stuff that can be sold.

If you were really "better than almost everybody else" you'd be hired to work
on hard problems that even someone _actually_ better than almost everybody
else would find challenging. There is no shortage of difficult problems that
people need solved. And incidentally, real ability gives you options to choose
what problems you want to solve, so you can pick a problem you can find at
least a little passion about.

Sure, you can treat your startup as a country club where the members are more
important than what you're actually doing; that's a lifestyle some people
enjoy. But let's not entertain the delusion of grandeur where that makes you a
good programmer: that just makes you a member of a country club.

~~~
dkopi
> If you were really "better than almost everybody else" you'd be hired to
> work on hard problems that even someone actually better than almost
> everybody else would find challenging.

That's assuming a lot. It's assuming that great programmers also make great
career decisions. It's assuming that well funded companies or startups
necessarily have the most difficult tech problems. It's assuming that the
people who hired you to do really tough problems don't also have a huge list
of "mundane" problems to solve as well.

I've had some really interesting problems and challenges to solve during my
career. But every role also has a lot of boilerplate. I've found that what has
really made me valuable isn't just my ability to solve the challenging
problems, but also being able to see a project from conception to completion,
even when you have to do the tedious and uninteresting tasks.

~~~
devishard
If there are a bunch of mundane tasks, the responsible thing to do is to
delegate those tasks to a junior developer:

1\. I'm happy because I don't have to do mundane tasks.

2\. The junior developer is happy because those tasks aren't mundane for them.

3\. Management is happy because the junior developer gets paid half as much as
I do.

~~~
nocarrier
I disagree with this approach.

My policy as a tech lead (and then manager) was to spread the mundane tasks
across the team equally. This let everyone experience the pain points and
usually led to faster elimination of technical debt, since the senior
developers would see patterns in the pain and find ways to address it. (Junior
engineers often don't have the experience to recognize bad patterns or bad
smells and would happily plow through a bunch of mundane tasks that could be
done better with a higher level solution.)

It helped that we had a Tech Debt Week every 8-10 weeks where we took a week
to fix problematic code and harden our deployment and automation processes. It
was hugely popular with the engineers, we gave out trophies for the best fixes
based on team vote.

The "share the love, share the hate" approach also meant that new junior
developers were given challenging tasks as soon as they joined the team (and
were paired with a senior developer for support). If they excelled, we gave
them even harder things to work on. If they struggled, we found easier
projects for them to work on and coached them through it so they didn't feel
bad about their struggle--we always said it was better to try challenging
problems and fail than attempt something safe and easy. Either way, we started
new team members with the hard stuff instead of ramping them up slowly on the
easy stuff.

The same policy applied to interns. They got challenging and impactful
projects, no busy work or work the team didn't want to do. This meant we had a
huge return rate on our interns and most of them joined our team when they
came to work full-time.

------
dunkelheit
> What makes you do the bits of work that are neither fun nor strictly
> necessary to get paid is that other people need it done, and you don't want
> to fail them.

I have a bad habit of classifying coworkers into "tidy" and "sloppy" ones.
Tidy people for example take time to arrange code neatly, they care about
coding styles and other things that are strictly unnecessary (sometimes to the
extent bordering on OCD). Sloppy people are result-oriented: if it works, it
is done.

The majority of coworkers that I can depend on are tidy people - in addition
to caring about code formatting they are also more likely to go through all
corner cases to ensure that the program actually works. But do they do it
because they don't want me to suffer or because they want the job done neatly?
Or because they don't want others to think of them as sloppy? I dunno. I guess
it is a little bit of everything.

~~~
Retric
There are issues on both sides of that divide. I can't stand the tidy
programmers who try and clean up ugly code that handles lot's of real world
edge cases they don't understand.

Sometimes you can find loops in the source code repository where multiple
people make the same kinds of changes to the same function before reverting
back to the original state when some bug shows up again even when there is a
comment about that edge case. It's one of the few times I feel leaving
commented out code is reasonable, no don't do this it's not going to work.

The real world is messy, at some point you have to represent that twisty logic
or it's not going to work.

~~~
superuser2
If removing edge case handling doesn't make some tests fail, then poor test
coverage is the root problem. Refactoring a code base without tests is always
touching the third rail, neat or tidy, no?

~~~
Retric
You say that as if people don't remove tests while 'refactoring'. Better
coverage = people ignore tests as they always fail. Worse coverage and they
ignore tests because the tests must be outdated.

------
epalmer
Interesting article. I fall on the love work side. It is always nice to see
situations from multiple frames of reference however.

I left banking compliance almost 10 years ago to get back to web development
and development management at a university and never looked back. I took a
gigantic pay cut and left some serious grants money on the table. My health
improved. My happiness improved and my now grown kids say I stopped being a
grumpy dad. I've been able to be part of my family's life in seriously fun and
meaningful ways.

At the bank I ran projects as the lead systems analyst and sometimes business
analyst to bring some situations into compliance as viewed by bank examiners.
I won corporate awards, had bank examiners exclaiming surprise at how fast and
well the projects met or exceeded expectations.

But after killing a project across 7 business units for 3 to 6 months and
working 70 to 80 hr weeks my boss would say thanks that was really great. Now
here is another crazy can't really get this done but we need it done project.

So now writing backend code and running 140+ subdomains for a small
university, I work most weeks 45 hours, love my team and the extended scrum
team and only despise maybe 5% of my work such as performance management.

I'm nearing retirement (in 5 years) and am so happy I made this final career
move. Oh I should mention, I am pretty good now at boxing my opinions and
emotions about the stupid things that go on at a University. I see a lot of
dysfunction at the cabinet level and think we are lucky that students don't
get inculcated by these idiot savants.

~~~
_yosefk
You actually sound like you fall on both sides similarly to the way I (TFA's
author) do, seeing that you did high-paid less lovable work and then more
lovable work for less pay. (At the moment I program 3 days a week and during
the other days I animate without any plans to get paid for it.)

My point was mostly that one could be equally valuable (or, conversely,
pernicious) at both types of jobs having either sort of motivation.

~~~
epalmer
Working for the bank at times was very fun. I love problem solving and getting
work done across large and small teams. But in the end my passion waned and it
became a well paid job that was a burden. Thanks for the thought provoking
post.

------
granshaw
Interesting article, and a lot of it really rings true to me, though
personally I experience this through a different slant.

I've been working remotely for this company for a while now, and compared to
my previous job (which was on-site) the culture, management, practices,
codebase, and attitudes are just far superior and healthier. Really in almost
every way it's an objectively better workplace.

Yet, because it's so much more difficult to form meaningful friendships with
remotes (you don't get to go out to lunch and chat about non-work stuff,
there's no chance to hang out in non-work settings like after-work bars etc)
many times I wish for my former job back just because my colleagues were my
friends, there was an element of "brotherhood", and that just makes a huge
difference. As humans I think our biological needs for belonging and kinship
far outweigh our desire for craftsmanship and work. It also helps having
interesting personalities as your colleagues.

Also, I get annoyed at companies and and interview processes which give a lot
of weight to those who seem "extra passionate" about their craft and go to
tech meetups, read lots of tech books, etc. I suppose it's something that's
easy to screen for and gives a "feel good/look good" factor for the hirers,
but it completely eschews the idea that one's desire to work might not be for
the passion of the work itself; not to mention it often doesn't turn out to be
that accurate of a filter when it comes to actually working on production apps
in a business setting.

~~~
_yosefk
I met a guy I studied with recently, he found my blog and invited me to dine
together. It turns out he managed a team of remote workers, and he ranted how
those office buildings where you catch infectious diseases are a thing of the
past (he also freaked out when I sneezed.) However he also wanted to meet
various people from our joint past, like he just met me, which was kinda weird
given that we were never best buds or anything, and I think this ought to have
to do with a shortage of time spent in office buildings where you catch
infectious diseases.

Personally... I'm not smug about this at all, I'm the opposite of smug;
because the stuff I'm doing in my spare time of which I now have more does not
involve such an office building and I really wonder whether a void will form
there.

------
Broken_Hippo
I become irritated being told how I'm supposed to feel about a job. The
reality is that a good number of people don't have opportunities to do
something they truly like doing. Most folks would do something completely
different - or at least work on different projects or give the bits they don't
like to someone else - if they could just simply do what they love. I highly
doubt anyone would clean toilets or wash dishes.

But some folks don't mind doing that sort of thing so long as they bring in
income, preferably enough to live off of. And some of these folks take some
satisfaction that they have done their job well, even if they don't like the
work. And they can treat each other well.

I'm never sure why this isn't enough. So long as one doesn't hate the job and
it doesn't make life miserable, i'm not sure why it matters if someone has
"passion" or "love" for their work. I highly doubt people could tell the
difference anyway.

~~~
rogual
Because employers prefer candidates with "passion" over ones without, all else
being equal. Which makes sense, given their incentives.

So, given that reality, employees learn that demonstrating "passion" gets them
more job offers than not doing so, so they do what they can to appear
"passionate". Which also makes sense, given their incentives.

So you end up with a system that looks ridiculous, but it's just groups of
people following their respective incentives.

It's not that a sensible work ethic isn't enough, it's just that when the next
guy is promising more than "enough", you're less likely to get picked.

------
gerbilly
I totally agree that it's about love of your co-worker, not the work.

The work is inane most of the time. Is your company's code complicated and
full of weird curlicues because edge cases from poor planning and requirements
that change on the fly 'disrupted' the original design? Do you wish you could
rewrite it all?

Because of human nature, and entropy all code outside of personal pet projects
devolves into a big ball of mud.[1]

How easy is it to love your work now?

This reminds me of the novel Catch-22. For me the core message of that
book[2], was that the only solid thing to believe in was this:

You kept flying missions not because they made sense, or helped win the war,
or for the commanders, or for the love of flying, but to help your friends.
Because if you didn't fly the mission, some other poor sap would have to risk
_his_ life fly it in your place.

Now as programmers in the work world, we don't risk our _lives_[3] but it's a
similar thing. If you do a poor job on your bit some other guy is going to
have a bad day.

Want some advice from someone who's been doing this for a long time? Forget
about disrupting entire industries and about 'changing the world' just write
good code so the other guys can depend on it. This is how you change the
world, one task at a time.

[1] [http://www.laputan.org/mud/](http://www.laputan.org/mud/)

[2] War novel about enlisted men caught in a dysfunctional air-force, run by
incompetent, if not outright insane commanders who demanded more and more
dangerous missions be completed.

[3] Or do we? We risk our lives in small quanta by frittering it away on
stupid inane stressful tasks. Do you wish you could be at home in the backyard
flipping steaks on the BBQ instead of fighting that fire in production, again?
We risk parts of our lives every day this way.

~~~
humanrebar
But the military has compulsory service. You can't quit if your general is
making terrible choices.

> Because if you didn't fly the mission, some other poor sap would have to
> risk _his_ life fly it in your place.

This isn't true for development. If your coworkers are pouring into a product
with severe defects in the technology or business plan, the best thing to do
is start that conversation, not help them waste their effort.

At the end of the day, if your leaders are making bad choices, talk about it
and be ready to find a boss or organization you're excited to work for.

~~~
gerbilly
>If your coworkers are pouring into a product with severe defects in the
technology or business plan, the best thing to do is start that conversation,
not help them waste their effort.

I agree, and in that case 'the work' becomes exactly what you described. I
never intended to imply that 'the work' always consisted of programming.

Also I'd say that flaws in the business plan are more important to address
than flaws in the code. Shitty code has conquered the world many times over, I
don't know if I've ever seen an example of good code doing the same. (see
below)

>At the end of the day, if your leaders are making bad choices, talk about it
and be ready to find a boss or organization you're excited to work for.

Except they all make bad choices, compared to the ideal code we imagined our
future selves would be writing. See my comments on the big ball of mud. In the
end the centre cannot hold, mere anarchy will be loosed upon the world[1], and
all that code will devolve into a big ball of mud anyway. If the business plan
is good the CxOs and sales guys will be happy, though.

So in my opinion, it can be better to stay at a company that is good enough,
with colleagues and bosses that you know, instead of idealistically seeking
some programmer heaven that doesn't exist filled with colleagues and bosses
that you don't know.

[1]
[http://www.potw.org/archive/potw351.html](http://www.potw.org/archive/potw351.html)

------
nommm-nommm
Agreed!

Some people say they are looking for "passion" in a job candidate. I don't
want "passion," I want three things - can you do the job? Can you work well
with others? Do you have a good work ethic?

Save the passion for outside the office. Nobody asks a coal miner how
passionate she is about coal - you don't have to have passion to do a great
job.

I based this from experience. Some of the best coworkers I have are the 9-5,
just a job crew.

~~~
exodust
I suspect there's an anti-passion meme around at the moment beyond this
article? Perhaps not, but my young friend who is all over the social medias
recently talked about how the word "passion" is redundant and overused. I
agreed, and will no longer use the word on job applications. The awful truth
is probably that any passion I had is now worn down to a dull weathered
surface. Luckily I'm into weathered surfaces so it's all good.

~~~
nommm-nommm
Not that I know of. It's just tons of people who write about interviewing say
they are looking for candidates with passion. This is actually the first time
I've personally seen someone arguing against it.

I suspect passion is a proxy for youthfulness.

------
cauterized
This is so on point about one of the toxic corners of engineering culture -
the strange insistence that only those who love programming above all else in
life can be good at it.

Aside from being a great way to squeeze extra hours out of naive new grads,
it's just totally off base. As this blog post touches on, one can TAKE PRIDE
in one's work and be motivated to do a great job without having to love it.

The lady who cleans my apartment once a month does an amazing job, unlike the
5 or 6 people I tried before finding her. Is she passionate about cleaning
bathtubs? Of course not. But the difference between her and the others is that
she takes pride in doing it superlatively.

And that's how I hire engineers too. I really couldn't care less about whether
you're an [X] developer because you love the technology or because it's a
steady paycheck that feeds your kids. What I do care about is that you're
considerate towards the people around you (and that includes the people who
will come after you) and that doing a good job is important to you.

Not everyone has the opportunity to do something they're passionate about. And
if they could, we'd have a world with an enormous shortage of both programmers
and janitors. But everyone has the opportunity to CHOOSE to take pride in
doing a good job. It may not be inspiring, but -- speaking from experience --
even if you're flipping burgers you can make the job more fulfilling (or at
least less soul-killing) by caring about doing it well.

------
lucasnemeth
Interesting article.

Just a note on the biblical reference: The moral angle that thinks it is
important to love your work comes from a more protestant view of the Bible.
Martin Luther defined that wordly work is a duty that benefits the individual
and society, it is an extension of the concept of good works in catholicism.
From a protestant perspective, work ethic is very important, because the "good
works" are not only charity work, our wordly daily work is a work of mercy as
well. It must be done in benefit of society. Even though it is a more lutheran
concept, it is very influential in the states, the "self-made man" myth, the
importance of the person that goes up the social ladder on perseverance, is
very influenced by this protestant ethic. So, the view of love thy colleague,
but not your work, is more akin to a catholic thinking. Countries that have a
very strong catholic tradition such as spain or ireland, tend to have
different work ethics than germany or the netherlands.

~~~
_yosefk
I've never lived in either a Protestant or a Catholic country (I've lived in
an Orthodox country and a Jewish one), so the following guess isn't based on
much first-hand experience, but I'd guess that "love your work" in the
Protestant sense is probably closer to what I mean by my tongue-in-Bible "love
thy coworker" than to "program for free during your weekends and publish code
on github." That is, "work ethic" \- yes, but because that's the proper way to
get things in return for things in a society, not because nothing is more fun
than neural monadic closures.

------
blazespin
Got bad news for you buddy - money or Love, you can't have both.

------
peter303
Liking your work helps you through downtimes. Tech has had a long enough boom
that the newbies havent experienced an industry wide downturn. Its happen
before and could happen again.

------
draw_down
This is one of the best pieces about work I've read in a long time.

------
Jimmy
Everyone should love their work, deeply. If you don't, then you should demand
work that you do love. If it's impossible to get work that you love, then you
should change the world.

~~~
Broken_Hippo
I'm laughing. That surely sounds like inspirational stuff, but it is crap
advice. Most folks are just stuck choosing from what they can get.

Besides, it is really irritating being told how to feel. It just makes people
fake it to make their boss happy. You start hearing this sort of thing in low-
level retail jobs, where you go home and don't want to pretend happy and love
for work any longer. Very demoralizing stuff.

I'd much rather people focus on doing well in their jobs, everyone, helping
others out if they need it, and treating coworkers well. This is realistic to
most workplaces and makes even mundane work not nearly as horrible to repeat
for hours and hours and hours every week.

