This is a mobile version, full one is here.
23 January 2018
Are You a Coder or a Developer?
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 now are coders. Even though they claim to be developers, in reality they are lacking the very important sociotechnical skills that differentiate product creators from lines-of-code writers.
Let me show you the symptoms first.
Let's call him Mario. He is a very skilled Java developer, as his 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.
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 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, but what can he do? He reads my article 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 the ticketing system. He's most probably been working all his life in a cozy office, 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.
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. 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 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 many times, let me repeat it again: If you are not an open source and StackOverflow activist, you most likely won't have these skills.
A fellow programmer asks you to explain how the class, which you created some time ago, works. What do you do? #sociotech— Yegor Bugayenko (@yegor256) April 15, 2018