原文链接:http://www.yegor256.com/2018/01/23/sociotech-skills.html
这是一篇国外名为 Yegor Bugayenko 近期发表的博客,虽然老生常谈了,但不管是对刚踏入社会的学生还是多年的从业工作者,都起到一个警示作用,在这个高速发展的行业里,如果你比别人慢一步,那你就步步跟不上,学习不能停止,停止就要被淘汰。
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.
软件开发和会写代码是完全不同的两件事,通常前者包含后者,但也不全是。当我们开发产品的时候会产生一行又一行的代码,但不幸的是,大部分加入 ZeroCrazy 项目的人都只是程序员。虽然是按照软件工程师的要求去做的,但事实上他们还是缺乏一些非常重要的技能和经验,这就是程序员和软件工程师之间的区别。
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.
有个叫马里奥的家伙,他的 Java 水平非常好,他的简历上说他已经是个 10 年左右的老程序员了,做过一些企业级项目,看上去非常的牛逼,我们给他安排了一个项目并分配了 Githunb 权限。
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.
几个小时候我从 Facebook 收到一条非常长的信息,说他非常高兴去做这个项目,但有些地方不太明白需要帮助,然后给我列出来一堆他准备好的问题,并且等着我的回复。
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
lazy for that."old
我回复到:“老兄,我确实把你当自己人,但我实在是没时间回答你的问题,不是因为我懒得理你或者不重视你的工作,好吧确实是因为我懒得理你。回答你的问题真的是在浪费我的时间,如果你明天辞职了,然后又来一个新人遇到同样的问题,难道我还要再回答他一遍?对不起我真的没那个精力”。
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.
我该怎么办?作为一个架构师我该怎么办?我把这个工单给关了,并且回复说:“请把你的工单描述的更详细一些”,我的回复意思其实是“滚蛋,别给这乱了”,但我还能怎么说呢?马里奥不知道怎么使用 git 的工单系统,他可能一辈子都是工作在舒适的办公室里,那种没什么压力的地方,甚至连通讯软件都不用,问问题只需要去别人的办公桌那里。我交给他的工作他从来没有完成过,当然他可能不知道该怎么做,我觉得他会觉得很羞愧。
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:
接下来他像个送信的一样站在我的后面,带着同样的问题,事实上他的反应取决于他的性格,可能是生气、迷惑或者其他什么的,但是不管怎样他始终只是一个会写代码的人,而并不是一个软件工程师。他根本不了解现在软件工程的动态,也不会用交流工具,而且一点都社会经验都没有:
- 使用搜索引擎(百度或者谷歌)
- 到社区去发问题,并且查看回复(类似 csdn)
- 把经验和知识添加到代码仓库如 git
- 提交代码时注明改变了哪些内容
- 在编写和回顾代码时,跟别人讨论
- 在代码仓库中多加练习
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.
现代软件工程越来越像社交活动而不单单是编码,学会和团队沟通和通过互联网去解决问题是比会用很多的设计模式还要重要,只有一种办法锻炼这种社交能力就是学习和练习,我说了很多次了然后我再重复一遍:如果你不是一个开源和(StackOverflow)社区拥护者,你可能永远也学不会这些。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于