返回社区

别太高效了!

在这则社区故事里,Franziska 和 Jonathan 聊了聊团队协作、企业中不同的人如何对待合作,以及如何为自己找准位置、学着成为一名程序员。

在 Youtube 上观看
时长 50分钟

Jonathan: 大家好,欢迎收听 Exercism 播客。我叫 Jonathan,很荣幸今天能担任主持。和我一起的是 Franziska,她是我们 Go 和 JavaScript 赛道的维护者之一。Franziska 能成为 Exercism 的一员,是我们的莫大荣幸,她参与其中已经有好些年了。 所以如果你在这里待过一阵子,可能就见过 Franziska。无论是在学习小组里,还是在 Go 和 JavaScript 赛道上。那么 Franziska,今天热烈欢迎你。非常感谢你来参加。我打算直接切入正题,问问你是怎么走到今天这一步的?

Franziska: 对。好,我是 Franziska。在网上我叫 June,也可以叫我 June Dev。我现在住在德国法兰克福附近,就在城市边界外的一个小郊区。我最近刚入职 Atlassian。这家公司旗下有很多让人又爱又恨的工具,比如 Trello、Jira、Confluence。 对,我在那儿做的是开发一款新工具,帮产品经理完成工作。因为 Jira 主要面向开发者,并不太适合产品经理要做的事,比如排优先级之类的。 所以我们专门为他们做一款产品。我很喜欢 Go 这门语言,真的很喜欢。我们的后端就是用 Go 写的。所以看到招聘启事时我想,嘿,他们在做这个,挺酷的。我投了简历,然后拿到了这份工作。到现在也才 30 天吧,不好说,不过确实是一段不错的经历。 小时候我一直对科技、自然科学、科幻这些东西很感兴趣,是《星际迷航》的超级粉丝,诸如此类。我发现在学校我数学和物理都学得不错。那时候很多人都在学计算机科学,他们总告诉我们别学别人都在学的东西,因为以后这类人会太多。我想,好吧,也许我不该学计算机科学,因为那样的人会太多。 总之我想,好吧,那就学点类似的。最后我去学了物理,因为我上学时很喜欢物理。计算机科学算是我的辅修。所以我上过一些课,但没有别人那么多。我发现人总会走到这样一个节点,开始想:好吧,我这一辈子要做点什么? 我怎么能靠做自己真正喜欢的事来赚钱。然后我意识到,在我学过的东西里,编程其实是我最喜欢、也最擅长的部分。我想多做这方面的事。而且它也能养活自己。 所以我想,好吧,在没有传统计算机科学学位的情况下,我怎么才能在这个领域找到工作。另一件事是,当时我不想成为一个 C 开发者、Java 开发者,那种老式的、在银行里写后端代码的人。 所以我想,好吧,我怎么才能学到现代的东西,互联网、Web 这些。我想为它做点什么。然后一个朋友告诉我,有种东西叫 Web 开发训练营,你可以去某个地方待三个月,他们会教你最新最酷的东西。 对。于是我决定要去。从那里出发,我大概能有一个更好的跳板去找工作。当时德国这边其实一个这样的都没有。 对。那边要么是上大学,一上就是好多年,对吧?要么有一些地方可以边工作边学习,但那也是很长的项目,要读好多年。至于训练营,他们只有那种创业加速器之类的东西。你会学到一点代码,但更多是管理、经济之类的内容。 那不太适合我。于是我四处找了找,发现在伦敦有一家不错的,开的正是我想学的课程。

Jonathan: 那里才是潮流所在

Franziska: 潮流就在那儿。对,没错,没错。就是那些新潮玩意儿发生的地方。对,我找到了这个训练营,老兄,我就去了。那真是一段很棒的体验。我们后端用的是 Node.js。 然后我回到法兰克福,找到了一份 Node 开发者的工作。公司挺酷,技术也很酷,我很快就上手了,很有意思。但我在团队上运气不太好,身边有不少自以为是、大男子主义的同事。 开会的时候,谁嗓门大谁就赢。那样的团队待着可不舒服。

Jonathan: 这其实是很常见的现象:人们报名学编程,结果那些看起来边缘的团队因素,往往才是意料之外的问题或挑战。所以这好像还挺普遍的。抱歉。

Franziska: 对,对,确实。一开始你总是高估技术的部分。你会想,哦,这份工作的技术正好是我想做的,那肯定没问题。但实际上,团队这一块几乎比你具体在做什么技术更重要。 对。两年后,我的一个朋友在法兰克福另一家公司当 CTO。他说我们也想改造自己的技术栈,想做一些新东西,但不想再用 Node.js,我们想用 Go。不管出于什么原因决定了,他说你可以加入我们。 但你得学 Go。当然。我说,只要你不介意我一开始花点时间学,我就愿意。我看了一下这门语言,感觉挺酷的。对,我换了公司。新地方的团队真的很棒。 在那里,就算你和 CEO 讨论,只要你的论点更好,就会被注意到,大家也会回应你。跟他们共事很舒服,大家也很有意思。我在那儿待了五年。 搭建了很多 Go 服务,也写了很多文档、概念说明,帮其他开发者上手 Go,还做了一些前端的东西,等等。对,但五年之后,人也会想找点新挑战。另外促使我找新工作的,还有疫情。 我注意到,反正我本来就在家办公,对吧?可能一周才去一次办公室。所以我想,外面有很多完全远程的工作。也许我能在更大的公司找到一份很酷的工作。 反正我都是在家办公,那也可以给更大更酷的公司干活,对吧?对,就是那时候我还在工作,然后找到了 Atlassian 这份工作。

Jonathan: 我想我的问题是,疫情是不是让你开始觉得,哦,也许不只是法兰克福和法兰克福的创业圈。因为我本来想问,法兰克福的创业圈作为一个圈子是什么样的?

Franziska: 对,先说疫情这点。疫情首先让我接受了完全远程办公这个想法。因为以前我一直习惯去办公室。我喜欢当面见人,也喜欢那样的日常节奏。但主要远程了两年之后,我意识到这也没什么问题。我能应付。我有女儿,反正总得出门。所以现在我的日常已经有足够的节奏了。 这是疫情让我看到的一件事,也让我愿意考虑去别的地方看看。至于法兰克福,这里科技和创业的事确实不少,但你也猜得到,很多都集中在银行业,有很多金融科技公司之类的。我以前也做过金融科技,但这个领域并不是我特别热衷的。 对,所以这一直有点……另外附近也没有多少 Go 开发者。对,没有什么特别的原因把我留在法兰克福,或者留在法兰克福这个圈子里。

Jonathan: 不,当然。那有没有哪些语言是法兰克福特别侧重的?比如说金融科技,支撑这些的语言大概是哪些,是不是更集中?作为一个在法兰克福的 Go 开发者,你会觉得自己有点稀有吗?还是说越来越多了?在你看来是什么样?

Franziska: 对,现在很难说是不是在变多,因为疫情的关系,线下聚会之类的活动也不多,对吧?所以现在很难判断来参加聚会的人是不是在变多。 我觉得像 Java 领域的事情要多得多,比如。对,所以有点难说具体情况到底怎样。但比如说,JavaScript 通常不太难把社区组织起来,因为大家多少都会碰到一些前端的东西,对吧?所以前端圈子的活动通常比后端多。

Jonathan: 那你当初开始写代码、去训练营的时候,应该也接触过前端吧。稍微学过一点,而现在你更偏后端。你为什么更喜欢后端而不是前端?还是这只是我的假设?

Franziska: 不,确实是这样,这是我训练营期间发现的:我更喜欢后端这块。这里有几个原因。首先,我不是那种有设计感的人。做前端的话,你通常也要自己做一些判断,比如这东西应该长什么样? 这里能怎么改?写点 CSS 之类的。对我来说,做这些判断太难了。当然在真实工作里你也会拿到设计稿。但说实话,我就是不太有这方面的眼光。 我看到那些有这种眼光、做得到的前端开发者,干起活来效率更高。所以这是我想到“这不太适合我”的一点。另一点是,现在前端这个领域真的超级复杂。 那边关于框架,常用的那些大多都很难。所以某种程度上,现在的后端还稍微简单一点。它难在不容易可视化,对吧?不像前端,你看着屏幕就能看到最终结果,就是这个样子。 但就所涉及技术的复杂度来说,我觉得现在后端反而比前端那边容易一些。所以对我来说,职业生涯某个阶段,我肯定还是想回去做前端。但我在等一个更好的框架出现。 等到现在这一团乱麻平息下来,有了更好的东西,我就会回去做前端。

Jonathan: 那我可能就等你判断那个框架什么时候出现,然后跟你一起回去。因为看看那些建立在 JavaScript 之上的框架……我还是个新手,方方面面都是。我现在正在学 Go,学得挺开心。但光是那些概念和你要建立的思维模型,就已经是一个全新的世界了。 我还想问,你最开始学编程时先学的 JavaScript,后来再学 Go,这中间你是怎么跨过去的?因为听你说起来,从 JavaScript 转到 Go 好像挺顺理成章的。但实际是什么样?你是怎么过渡的?

Franziska: 对,好问题。这里有一点很重要:JavaScript 并不是我唯一学过的语言,对吧?上大学时我没有把很多语言学得很深,但我学过 C,学过 Java,学过 C++,还学过像 Mala 这样的冷门语言。 所以对我来说,JavaScript 已经是我第五门语言了,Go 是第六门。所以对我来说,比如 Go 里那些你听说过的指针之类的概念,如果我只学过 JavaScript,那会是全新的东西,我就得去搞明白这到底是什么。 但因为有这些其他语言打底,我从 C 和 C++ 里就已经知道这些了。对,我可以靠很多大学时学过的东西,所以上手很容易。另外,Go 有帮助的一点是它是一门相当精简的语言。 它没有那么多的关键字,也没有那么多你能构建的结构。你能很快读完,我通常说,去官网做一遍官方导览,或者别的什么资源,两三周就能过完。 然后你就能有扎实的理解。而 JavaScript 的话,这不可能。光是把基础理解扎实,你就得花长得多的时间,而且后面要学的东西还多得很。对,目标语言本身也帮了很大的忙,让过渡变得容易。

Jonathan: 好。现在你在 Atlassian 工作,你刚才也提到了一点技术和产品之间的交叉。你说金融科技对你来说没什么意思,并不是特别让你兴奋。那你会不会觉得,产品这个领域,以及技术和产品之间的交界,是你真正喜欢的?或者让你总结的话,在技术领域里你具体对什么最有热情?我知道这个问题很大,但你能稍微讲讲吗?

Franziska: 对,我感兴趣的方向或主题有好几种,不只是我现在工作的地方。比如我很喜欢消费级产品里的一些东西。像 Hello Fresh 这样的公司就做了很多很酷的事。 跟技术相关的很酷的东西,或者教育领域里也有很多,比如 Exercism 等等。另一个方向是开发者工具,或者更广义的团队工具。 所以有好几个领域,而现在这个是我觉得能说得通、值得去帮人们解决的方向。说到产品管理,我可以讲个关于 Jeremy 的趣事。我上一家公司的 CEO,我告诉他这份新工作和我要做的事时,他说的和 Jeremy,也就是 Exercism 的创始人,一模一样。他对我说了完全相同的话:你是不是因为受不了我的产品管理能力才选了这份工作? 这整件事说明,产品管理以及把它做好,一直是我热衷的东西。因为问题在于,作为开发者,你也许能写出有史以来最好的代码。但如果你写的东西本身就不对,如果你造的东西就是错的,那一切都是白费,对吧? 如果你的产品经理没能找出你真正该做的东西,那你做出来的东西也许根本没人用,因为他们没有好好分析市场,也没有排好优先级,等等。我在以前的工作里经历过这些。我做过很多东西,最后都没能见天日,因为没有好的优先级流程,对吧? 所以我认为,把产品管理这个领域整体做好,也能让全世界开发者的日子好过很多,因为他们就能做对的东西,真正创造价值,而不是做出一件最终被扔进垃圾桶、或者用户根本看不到的东西。

Jonathan: 对,这真的很有意思,因为你似乎注意到的是心理层面的东西。我觉得我们常有一种思维定式:如果你擅长技术,你就躲在幕后埋头做,作为一个人你永远见不到天日,因为你在搞技术,可以说这就是那种刻板印象。但过去几年确实感觉,技术和业务之间的交叉越来越多。对我来说,我一直把敏捷当成一个概念来看。而敏捷这个概念,我觉得本质上是把一种商业思维、一种看待事情的方式强加在技术团队身上。说实话,在我心里,感觉就是这样:它有用,但我从没见过哪个敏捷环境按时结出果实,如果这话说得通的话。也许是因为我过去见到的都是管理得很糟的情况。但确实感觉交叉越来越多了,开发者开始想更多地参与业务,我觉得这非常有意思,而且其实是件好事,因为这样整体的决策会更好。

Franziska: 对,有些开发者想更多地参与,但也有人不想,可他们还是得参与。问题是,那种做法根本行不通:产品管理坐下来把一切拆好,然后隔着墙丢过来,开发者照着做,就完事了。就算在过去那是标准模式的时候,这种做法也从没真正奏效过。 现在大家是更关注这一点了,但开发者与设计者、开发者与产品经理之间有更多对话,本来就是对的。另外,当你下游还有别的角色,比如有支持团队,或者有人负责维护之类的,他们配合得越紧密、越能一起找出最好的方案,你们能一起创造的价值就越多。这一直都是对的。 比如我们现在做的这个功能,产品管理那边有很多想法,想着哪些可以放进这个新功能的第一次迭代。但他们自己判断不了:加这个东西,是多一天的工作量,还是会把整个范围炸开、多出三个月的工作? 对,他们没法判断。所以我们能为第一次迭代找到好的打包方式,唯一办法就是互相沟通,说这个加进去容易,那个加进去难,等等。然后我们一起找出合适的范围。而我在 Atlassian 这份工作的好处是,我们的产品经理也是这么想的。 他总说,范围是双向的。我有一些想法,但你也得告诉我什么最合理。然后我们一起商量出结果。我还注意到,我走招聘流程的时候,与别人、与其他团队沟通这个话题,现在非常受重视。 很多人会问,你是怎么和其他团队合作的?他们真的会通过和你聊天来判断你表达能力如何,因为你在不在乎其他团队在做什么、有没有参与其中,这非常重要。只有这样,你才能真正把你有的时间用到极致。

Jonathan: 从这个意义上说,这感觉是一种更整合的方式。这也让我想到另一点,经常……

Franziska: 哦,也许在我们继续之前,你提到了敏捷这个触发词,对吧?那我得接一下。我不知道你是不是故意要刺激我。说到敏捷,我一直觉得它最初的那些基本理念,比如人比流程更重要,那些很久以前提出来的基本原则,到现在仍然很有道理,本身没什么玄乎的。 但后来来了各种顾问,他们搞出了一大堆庞大的框架,把它们卖出去,还出现了 Scrum Master 之类的角色。而且据我的经验,就像你说的,那很多东西其实没多大用。比如产品和开发者沟通不畅,你光在上面套一堆结构,也解决不了。 所以我也不是这些标准 Scrum 实践、敏捷实践的粉丝,我还没在哪儿见过它们运作得特别好。

Jonathan: 这很有意思,因为感觉是这样:如果你在 LinkedIn 上找工作,比如产品负责人或产品经理,满眼都是 Scrum、敏捷,到处都是,你会觉得太惊人了。但有趣的是,我见过的最……怎么说呢,最有办法的开发团队用的其实是看板,没有必须在某个时间期限内产出的压力,但产出的质量很好,等于是把责任交回给个人,让他自己负责。这段经历挺有意思的,因为年轻的团队一上来就卡在“敏捷不管用”上,很受挫,最后落到看板,靠长期稳定地一点点推进,事情就成了。不过我觉得,把产品作为一门生意,和给别人做产品,也是很有意思的对比。我不知道你以前的工作是做什么的,是不是内部产品。我知道在 Atlassian,你们本质上是在做自己的产品。

Franziska: 对,我一直都是做自己的产品,从没在那种外包公司工作过。

Jonathan: 对,外包那些事简直是噩梦,因为每个人都会盯着你每一小时的开发时间之类的,然后说:我不明白,为什么这个按钮要花我 400 美元?而实际上是你想把它从这里挪到那里,这等于把整个后端重做了一遍。所以我想问你一个问题,这个问题我们在各种播客和直播里问过很多人。 就是那个“愿为之而死的小山丘”,或者你愿意用一生去捍卫的观点。在技术圈里,我们不是说这是你必须持有的观点,而更像是:有哪一个价值观或观点,对你来说绝对关键,你希望在整个技术圈都能看到?这个问题挺宽泛的,但技术领域有没有哪一件事你会非常坚决地捍卫?

Franziska: 我还以为你会说得轻松一点。我想来个轻松的、不受欢迎的观点。这样也行吗?

Jonathan: 当然,完全可以。

Franziska: 好,我没有多少特别大的“愿为之而死”的观点。有一点我挺在意:很多人建议你去优化自己的开发环境。我觉得这大多被高估了。 比如有人会告诉你,哦,你得学 Vim,这样你就再也不用碰鼠标了,多棒多棒。然后人们,尤其是刚入行的人,就信了。然后花一年时间学习各种神奇快捷键之类的。 结果呢,我说不好,他们一年可能也就省下一天的时间。那一年的痛苦根本不值。这样的事很多。有人告诉你要在 dot 文件里把终端的所有别名都配好,有人告诉你得记住所有快捷键,于是你花大量时间去学这些,最后省下的却很有限。我觉得问题在于,人们高估了工作中打字所花的时间,对吧? 就像我们之前说的,工作中有很大一部分是沟通,很大一部分其实是思考。一天里真正在打字、敲代码或敲命令的时间只有那么多。所以很多人优化的只是这一天里很小的一部分。在我看来,如果这是你的爱好,那就去做。或者如果它对你确实有价值。 如果你是 SRE,也就是网站可靠性工程师,要登服务器干活之类的,那懂 Vim 可能有意义,对吧?因为那些地方没法打开图形界面。但如果你不需要,就别操心这个。用什么顺手就用什么。 比如快捷键,我总是说,大多数图形界面都会在你点的那一项旁边显示快捷键。所以如果你一天点它五次,那也许值得记一下;要是每五分钟点一次,那就更值得记住,比如保存的快捷键就在那儿,你老是点它。但如果不是,那就安心待在图形界面里做你的事,把时间花在真正提升编程能力上。 做做练习之类的,学一门新语言,什么都行。对,这是我总想告诉新开发者的:别被那些人唬住,他们说你就得用某种老古董编辑器,还要在那上面优化效率……

Jonathan: 这挺有意思的,因为人们的热情常常会不知不觉渗进来,也可以理解。因为会想:哦,我太兴奋了,因为我把自己的生活优化了。但仔细想想,这并不总是最好的。我的学习经历大概就是这样,人们会给出太多太多的建议。你上 YouTube 搜“怎么学编程”,有人从怎么设置 GitHub 讲起,有人从怎么理解终端讲起,等等。比如要不要把代码拉到本地跑,还是用在线编辑器,诸如此类。我觉得你刚才那条建议真的很好:保持简单就好。 那如果你要把更多时间花在思考上,你是怎么想清楚问题的?在工作里遇到一个情况,或者一般来说,你一天是怎么安排的?会专门留出时间吗?你的流程是怎样的?

Franziska: 我习惯先做的一件事,就是在真正需要解决之前,提前一点把问题拿到手,然后放在脑子里搁一周左右。洗澡的时候想一点,睡前想一点,在脑子里反复转一转。通常这样能帮我找到一些切入点。 然后从这里出发,尤其是工作上的事,我通常会开始把一些点写下来,因为写下来绝对能帮我理清思路,找出那些我还得去问产品经理的地方,比如我不知道客户到底需要什么。我会写下我已经知道的东西,以及怎么解决。我还会写一张通常是挺大的待解问题表,有的是给团队里别人的,有的是给我自己的,都是要弄清楚的事。 这样真的能帮我把事情理清楚。然后从那种特别高层的概念,试着把它拆成更具体的编程任务。API 长什么样?我需要存哪些数据?然后从用户故事到数据、再从数据回到用户故事,中间要经过哪些逻辑。 这要看情况。有时候在前面思考的过程中,我就已经找到很多需要解决的问题;但有时候一开始写代码,又会发现之前没预料到的新问题,那就得退回去重新想一遍,再回到代码上。这种情况也会有。 但一般来说,我的做法是先尽量把事情想一遍,提前解决一些问题,这对我帮助很大。然后要么代码写起来很顺,要么我又发现更多问题退回去,那也没关系。

Jonathan: 好,这很酷。这在我看来常常是这样:我总觉得,如果你是全职程序员,你就整天坐在电脑前,从早到晚一点点敲。但我现在意识到,能把问题想透是一种能力,我觉得这也正是 Exercism 想强调的:把问题想清楚,确保你掌握了全部背景,然后写代码这一步,其实只是把这个过程实现出来的表达。Jeremy 大概也会这么说。我想他会先把很多事想透,然后写的代码相当短。

Franziska: 对。还有一个常见的建议:先在注释里把你想让这段代码做的事写出来。好,我先做这个,然后得到那个结果,然后再做那个,接着再把对应部分的代码填进去。这样也非常有帮助。

Jonathan: 挺有意思的,因为你说的方法我肯定要试试,我意识到了这一点。当你必须编程时,尤其是学 Go 之类的。我试着做的一个练习是:从键盘读入一个输入,存起来,然后返回类似“你已经猜了多少次”这样的东西。但把这个问题拆成真正细小的任务,这整个过程我以前很不熟悉。所以学着一步一步地思考这类问题,真的很有意思。总之,这几个小技巧很棒,我一定会用上。

Franziska: 这也是很多人在 Exercism 上会提到的事。很多人在理解语言和语法上其实没那么吃力,但到了“我到底该怎么解决这个比较笼统的问题”这一步,就卡住了。我们也试着在这方面提供一些文档,比如告诉大家这里有很好的资源,可以学着像程序员那样思考等等。不过这方面我们也许还能做得更好。

Jonathan: 不,确实是这样。这也让我想到一个有意思的问题,我也问过几个人,每次和别人聊起来都觉得很有趣,就是“编程是什么时候突然开窍的”这个概念。我不知道你有没有过那种感觉。你学了一堆概念和理论,翻了教科书,然后某天早上醒来,突然觉得,哦,通了。我学东西常常是这种体验。你是什么时候有这种感觉的?还是根本没有,只是慢慢就懂了?那是什么样的?

Franziska: 哦对,我想过这个问题,我觉得确实有一个开窍的时刻。不过我先讲一个没开窍的事,可以吗?我十几岁的时候,有一台那种玩具笔记本,上面有一些游戏,还有一个可以用 Basic 编程的功能。 我祖父过来,他当年就是从这些打孔卡开始编程的。他一直很喜欢技术,他说,哦,你能在这儿编程,真酷。他想让我看看编程是件很酷的事。然后他像所有人一样开始,敲了 print,屏幕上吐出 Hello World,我心想,我也会打 Hello World 啊,你这是在干嘛? 然后他说,不,它会照你说的去做,如此这般。接着他敲了 1 加 2 之类的东西,屏幕上冒出 3。我说,我的计算器也能干这个。你到底想给我看什么?我没搞懂。 后来我在学校上过一门类似计算机科学的课,用的是 Turbo Pascal,它有个插件之类的,可以出现一只小乌龟,在屏幕上画画。他们给了我们一些很酷的练习:输入某种公式,它就能画出非常精巧复杂、像叶子一样的分形。而这一切,只是靠输入一个小公式,告诉这只乌龟该画什么。 对我来说,那就是开窍的那一刻,因为我意识到,给出这种超级简单的指令,就能创造出我自己永远做不出来的复杂东西。我可画不出那么多叶子,对吧?所以对我来说,就是那一刻。哦对,它能做到我做不到的事。但之前祖父给我的那些解释、他在这台机器上给我演示的东西,都没用。 但看到这种图形化的东西,看到只需要那么少的指令就能让电脑做出这么复杂的事,那才是我开窍的地方。

Jonathan: 好,这很酷,因为我前几天对“方法”就有这种感觉。我当时想,方法到底是个什么鬼?就是没转过弯来。我学化学也是同样的情况。我学了两年,然后一夜之间,元素周期表就完全说得通了。那时我大概 16 岁。我记得当时想,天哪,这简直是最简单的东西,我居然两年都没搞明白。然后考试就变得很轻松,因为我觉得所有答案都在元素周期表里,你只要做点小运算……一切在我脑子里都对齐了。 和别人聊起这个开窍时刻也很有意思。Rebecca,你可能认识,来自 Exercism 的 unison 赛道。我问过她,因为她大学读的是英国文学。我问她,你是怎么从英国文学转到编程的?你脑子里用的是什么方法去理解这个转变的?她说,她把自己写的程序想象成一个故事、一段叙事,有一个主角,函数就是里面的角色之类的。我说,哇,这太有意思了,我从来没想到过还能这么理解。真的……

Franziska: 对。但这又呼应了我们说的注释,对吧?就是在代码之前先写的那部分。就是先讲故事,然后再为它写出代码。

Jonathan: 你提到这个真的很棒,因为意识到“其实我是在注释里写故事”,这个我肯定会用上的。

Franziska: 这个主题还有一点:有人做过研究,看什么样的人擅长编程之类的事,结果发现其实语言能力,比如你掌握的词汇量等等,在当中起着很大的作用。 比如,命名一直被说是编程里的难事。如果你擅长找到合适的词来描述你处理的东西,你的代码就会好很多。所以这其实不只是数学和分析能力的问题,很大程度上也和语言表达能力有关,这一点你可能一开始想不到。

Jonathan: 不,说到底,这大概就是语言吧,我觉得这个想法挺有意思。你本来就是德国人,德语算是你的母语。那你现在在 Atlassian 开发是用英语吗?以前也是用英语吗?因为……我可能会说,很不幸,一切都是英语。你的英语说得很好,但你是在学校学的英语吗?那编程呢,一开始都是德语的吗?你那段经历里这些东西是怎么学的?

Franziska: 对,大多情况下,我很幸运,大部分编程的东西都是英语的,注释也都是英语的。那些英语不总是很好,但还行。对我来说,学英语这件事,我在学校时英语一直不好。但上大学时我很幸运,去英国交换了一年。那才真的是泡在语言里。之后我的英语就好了很多。 那之后就很轻松了,但在那之前真的很差。对,那一年真正地把语言学起来,也帮了我后来能和不是德国来的同事沟通。而且……这绝对是个因素。 如果你的母语不是英语,那你就更难为东西争取到合适的名字,对吧?就是命名这件事。你写的每一行代码都在做这件事,对吧?你总是在把某个东西赋给另一个东西,你得尽量把那个东西命名好,代码才清楚。

Jonathan: 嗯,对非英语母语者来说,这在我看来可不容易。我觉得这一点以后也会开始变化。前几天我看到一篇文章说,印度是目前世界上增长最快的科技地区。至于英语,他们会继续用英语,还是用当地的语言,我知道印度有很多种语言。想想这些还挺有意思的。 我们快聊到一个小时了。我真的很享受。Franziska,我还有一个问题。这次轮到你来给建议了。给 Exercism 社区。你会给出哪一个建议?可以是想尝尝的食物,或者去散散步,什么都行,只要是你想推荐给社区的。这周你想给 Exercism 社区什么建议?

Franziska: 对,我要回到刚才那个不受欢迎观点里谈到的效率话题。我的建议是,休息一下,把一直想看的 Netflix 剧一次看个够,或者随便干点别的。通常大家都一门心思地想让一整天都很有产出。这对你的大脑并不好。 优化到那种程度对你的大脑没好处。大脑要在工作中表现好、要有创造力,就需要休息,因为大脑正是在那些休息时间里处理事情的。对,就坐在沙发上,随便看点节目什么的,这就很好。让大脑有点时间在后台自己运转,是件好事。 我觉得休息、抽出时间放空,这些都被低估了。这就是我的建议:休息、放松的时候,别觉得内疚。

Jonathan: 好,我很喜欢这个。那么各位,你们听到这段的时候,这就是 Franziska 这周的建议。Franziska,非常感谢你抽出时间,感谢你为 Exercism 付出的一切,感谢你的思考和与社区的互动。我知道你在 Exercism 上投入了大量精力,帮助它改进、成长,我们真的很感激。所以我想说声谢谢,也谢谢你今天早上抽出时间。今天还是法定假日,你本可以出去庆祝或者做点好玩的事,却把时间给了我们,非常感激。这段是我停了录音之后还留在通话里说的,但我就是想好好谢谢你,祝你今天剩下的时间过得愉快。好。

Franziska: 谢谢你邀请我。

来自我们社区的更多故事

倾听、学习,并从我们的社区成员那里获得启发。