# Are You a Coder or a Developer?

Source: https://www.yegor256.com/2018/01/23/sociotech-skills.html

Software development and coding are two different things. Usually,
the former includes the latter, but not always. Coding produces
lines of code, while software development creates products. Unfortunately,
the majority of programmers joining [Zerocracy](https://www.zerocracy.com)
now are [coders]({% pst 2014/oct/2014-10-26-hacker-vs-programmer-mentality %}).
Even though they claim to be developers, in reality they are lacking the very
important [sociotechnical](https://en.wikipedia.org/wiki/Sociotechnical_system)
skills that differentiate product creators from lines-of-code writers.


{% jb_picture_body %}

Let me show you the symptoms first.

Let's call him Mario. He is a very skilled
Java developer, as his [resume]({% pst 2016/mar/2016-03-08-pimp-up-your-resume %})
says. He's been in the industry for ten years or so,
done a few enterprise projects; he seems to be very seasoned. We give him
access to the project and assign a few GitHub tickets.

{% quote Dude, I love you like a brother, but I don't have time to answer your questions %}

In a few hours I get a Facebook message a page long. It says that
he is very glad to be on the project, but [doesn't understand]({% pst 2015/feb/2015-02-16-it-is-not-a-school %})
a thing yet
and needs help. Here is a list of questions he prepared and he's ready for
a phone call to get them answered.

I reply: "Dude, I love you like a brother, but I don't have time to answer
your questions. Not because I'm lazy or don't appreciate your work... Actually,
yes, exactly because of that. I am lazy and don't want to answer any questions over Messenger.
My answers will be totally wasted, if you, for example, quit the project
tomorrow. Or if someone else joins us in a week and has
exactly the same set of questions. Do I have to explain all over again? I'm too
~~old~~ lazy for that."

He most probably thinks that I'm an [arrogant prick](/testimonials.html), but what can he do? He
reads [my article]({% pst 2014/oct/2014-10-07-stop-chatting-start-coding %})
on this very subject and says "OK, I got it."

In half an hour Mario submits a ticket to another (!) repository. The title
is "The problem" and the description says "Help me understand the project."

What do I do, as an architect of the project? I close the ticket with a quick
message: "Please, make your tickets more specific." My response is just one
step away from "Get lost," but what else can I say? Mario doesn't know
[how to use]({% pst 2014/nov/2014-11-24-principles-of-bug-tracking %})
the ticketing system. He's most probably been working all his life
in a [cozy office]({% pst 2015/oct/2015-10-06-how-to-be-good-office-slave %}),
where everybody around was his friend. Not even using
chat, just asking questions across the table. I'm asking him to
do something he has never done before. Of course, he doesn't know how.
He feels ashamed, I suspect.

{% quote The bottom line is that Mario is not a software developer, he's a coder %}

What happens next? He comes right back at me in Messenger, with the same
set of questions. Actually, his reaction will depend on his personality.
It may either be anger, confusion, or
[something else]({% pst 2018/jan/2018-01-09-micro-budgeting %}). But the bottom line
is that Mario is not a software developer, he's a coder.
He doesn't understand the dynamics of a modern software project, he doesn't
know how to use its
[communication]({% pst 2016/aug/2016-08-23-communication-maturity %})
instruments, and he has no sociotechnical skills:

  * Searching for, and finding, information
  * Submitting questions, collecting answers
  * Adding knowledge to the repository
  * Submitting code changes
  * Arguing in writing, reviewing changes
  * Closing tickets and preventing them from closing
  * Maintaining discipline in repositories

The same happens to almost everybody who joins us, unfortunately.

A modern software project is much more a social activity than code writing.
Knowing how to interact with the team and deal with information
is much more important than knowing how to use design patterns. The only
way to learn these skills is _practice_. I've [said it](https://www.facebook.com/yegor256/videos/10214943124281537/)
[many times](https://www.youtube.com/watch?v=GS45LzE3LPQ),
let me repeat it again: If you are not an
[open source]({% pst 2015/dec/2015-12-22-why-dont-you-contribute-to-open-source %})
and Stack Overflow
[activist]({% pst 2014/oct/2014-10-29-how-much-do-you-cost %}), you most
likely won't have these skills.

<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">A fellow programmer asks you to explain how the class, which you created some time ago, works. What do you do? <a href="https://twitter.com/hashtag/sociotech?src=hash&amp;ref_src=twsrc%5Etfw">#sociotech</a></p>--- Yegor Bugayenko (@yegor256) <a href="https://twitter.com/yegor256/status/985439928430538752?ref_src=twsrc%5Etfw">April 15, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
