14

我希望我从未学过编程

 3 years ago
source link: https://www.infoq.cn/article/YkBvwcXgyPEtwk74cPyL
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

我是一名程序员。你可能会觉得我是专业的软件工程师,但实际上,软件工程不只是一个专业,还是一种生活方式。连帽衫、乒乓球、吃不完的零食和苏打水……都是这种生活的一部分。但虽然这个职业可以给人带来那么多回报,我还是要坦白一件事:

有时我希望自己从来没有学过编程。

怪癖

自从我开始学习编程以来,就再也不能像以前那样轻松地浏览网页了。我无法再平静地接受在各种网站上遇到的各种 bug。每当有奇怪的事情发生时,我的好奇心就上了头,然后就会打开浏览器开发工具开始调试网页。

尝试提交表单时出现加密错误消息?看到这样的错误,我会深入 JavaScript 控制台,查找错误消息,深入研究源代码,并仔细观察进进出出的网络请求。页面 UI 看起来有些过时,或者页面布局很漂亮?不管怎样,我都会调整浏览器窗口大小,检查页面响应屏幕尺寸的能力。什么?你竟然选择了 Comic Sans 字体?我可能永远不会再使用你或你们公司的产品了。

BJZZrei.jpg!mobile

请不要使用 ComicSans

职业生涯

觉得我的这些浏览习惯很怪异吗?这还不算啥,我和其他软件工程师的对话会让你印象更深刻的。总体而言,工程师往往固执己见。我们的血液中流淌着迂腐的基因。你喜欢使用空格还是 tabs 缩进代码?你更喜欢 Vim 还是 Emacs?Chrome 还是 Firefox?

聪明点的人会问到,这些对话“真的重要吗?”。Bikeshedding(在琐碎细节上浪费时间)是确实存在的现象,大家都需要经常反省。

niMNVvq.jpg!mobile

xkcd——真正的程序员

随着越来越多的公司采用敏捷方法,我们还得时常考虑在 Waterfall、Scrum 或 Kanban 开发生命周期之间权衡取舍。我们所有人都喜欢鄙视 Waterfall,毕竟这是老式的低效率公司所使用的遗留品。但是 Scrum 与看板之战还在继续。

你竟然是 Scrum 的信徒?我敢打赌,你为了满足那些 time box 会仓促提交混乱的代码,才能在冲刺结束之前赶上假想的时限。

aua67jB.jpg!mobile

说到敏捷,故事的重点在哪里?时间尺度?努力?复杂性?风险?这些都有?你我可能会花费几小时时间来争论每个定义的优缺点,最后还是无法达成共识。

在某些时候,这种争论可能会演变为更多的 bikeshedding,但能够相互理解和有效沟通是至关重要的,其中就包括了对我们日常使用的术语达成共识。

前端开发带来的争论又是数不清的,其中最典型的是:“我们要到什么时候才会放弃对 Internet Explorer 的支持?”我必须在“讨厌 Internet Explorer,想要放弃它”和了解还在用它的客户需求之间找到完美的平衡点。

i6vYF3Z.jpg!mobile

持续学习

持续学习是每一位开发者必备的能力,因为技术形势日新月异。每月都有成百上千的新库和框架发布。JavaScript 倦怠不是什么幻觉,“学不动了”也不仅仅是调侃。

我得花一天的时间配置 Webpack、Rollup 和 Babel 以使用最新的 ES6+ 语法,而旁人听我这么说就像在听天书。Angular 和 AngularJS 截然不同?LitElement、Svelte 和 Stencil 似乎是很有前途的 Web 组件解决方案?Deno 可能是下一个 Node?听着都像是谜语。

当有人问我做什么工作时,我总会蹦出来一堆术语:“我通常使用前端技术,例如 HTML、CSS 和 JS。有时我必须使用 PHP 或 SQL,但我更多是 MEAN/MERN 栈开发人员。有时我使用 Heroku 之类的 PaaS 技术,还有时我会使用 AWS 或 GCP 之类的 IaaS 提供商。”

mIrYryi.jpg!mobile

个人生活

在业余时间里,我读的书干货十足,例如《干净代码》《重构》和《领域驱动设计》。我不是在看教科书,就是在阅读里面写着可疑建议的文章,或观看一些编程教程。关于编程的播客更能吸引人,这样我就能在路上听某人谈论写代码的方法,然后我又可以花一天时间谈相关话题了。

除了在线获取内容外,软件工程师还会花费大量个人时间来在网上创建内容。我个人的兴趣是构建简单的应用和游戏,其实没人看得到。这是浪费时间吗?也许是吧,但的确挺有意思的。

raq2Mze.jpg!mobile

企业 BS 生成器应用

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK