本文转载自公众号“读芯术”(ID:AI_Discovery)。
真正的软件工程不仅仅是一门技术,更是一种生活方式。我靠写代码谋生,连帽衫、乒乓球、随处可见的零食和饮料,这就是我的真实生活。尽管从事这一领域会有回报,但我必须承认:有时真希望自己从没学过编码。
怪癖
自从我开始学习编写代码以来,浏览网页就变得不一样了。我再也不能忍受我在使用其他网站时遇到的错误。每当有什么奇怪的事情发生时,好奇心就占了上风,这时我必须打开浏览器的开发工具,开始调试。
试图提交表单时出现神秘的错误消息?这时我会深入研究JavaScript控制台、查找错误消息、挖掘源代码,并通过网络请求观察它们。
用户界面看起来有点过时,或者页面布局非常华丽?不管怎样,我都会调整浏览器窗口的大小,看看它处理屏幕大小的响应能力如何。你选择的字体是Comic Sans吗?我可能再也不会相信你和你的公司了。
请停止使用ComicSans字体
职业生涯
总的来说,工程师们相当固执己见,学究气已深入骨髓。是否使用空格或制表符缩进代码?更喜欢用Vim还是Emacs?Chrome还是Firefox?这些对话最终会导致有人问“这真的重要吗?”,现实生活中经常会有人浪费时间和精力讨论这种意义不大的问题。
xkcd——《真正的程序员》
随着越来越多的公司采用敏捷项目管理方法,有时不得不在使用Waterfall、Scrum、或者Kanban的开发周期之间进行比较取舍。我们都喜欢抨击Waterfall,认为它是过时的、效率低下的公司所使用的老古董。然而,Scrum与Kanban的战争仍在继续。
“你说你是Scrum的忠实粉丝?我敢打赌,你一定喜欢人工时间框,它能轻松发送匆忙的代码,以便在sprint结束之前完成想象中的最后期限。”
Dilbert - Scott Adams
说到敏捷法,具体指哪方面?时间尺度?努力?复杂性?风险?或者所有这些?可能会花上几个小时讨论每一个定义的优点,但最终无法达成共识。在某种程度上,这可能会演变成一场无意义的讨论,但能够相互理解和有效沟通是至关重要的,这包括对我们一天中使用的术语有一个共同的理解。
前端开发打开了另一个话题世界,最引人注目的是:“什么时候才能最终放弃对InternetExplorer的支持?”我必须得拿捏好分寸,一边对它深恶痛绝,时刻都想放弃它,同时也明白,对于那些已正在使用,深受其害的客户来说,需要支持它。
Internet Explorer网络热图
持续学习
随着技术环境的不断变化,持续学习是软件工程的重要组成部分。每个月都有数百个新的库和框架发布,JavaScript枯竭是真实存在的。当我告诉别人我花了一天时间配置Webpack、Rollup和Babel以使用最新的ES6+语法时,他们可能认为我是在胡编乱造。
Angular和Angular是两个完全不同的东西;LitElement、Svelte和Stencil似乎是有前途的web组件解决方案;Deno可能是新的Node。
当有人问我工作时所使用的工具时,我只能直截了当地说:“我通常使用前端技术,像HTML、CSS和JS。有时我不得不使用PHP或SQL,但我更像是一个MEAN/MERN堆栈开发人员。有时使用Heroku之类的PaaS技术,但有时使用的是像AWS或GCP这样的IaaS提供商。”
有关“开发者”热图 | 图源:漫画《Poorly Drawn Lines》
业余生活
闲暇时,我会读一些枯燥乏味的书,比如“干净的代码”、“重构”和“领域驱动设计”。除了教科书,我还会在网上读一些文章,这些文章里时常会有一些建设性的建议,或者看看别人的编码教程。
我更喜欢听关于编程的播客,在上班的路上,没什么比听别人谈论代码更好的事情了。因为到达上班地点,我也要整天讨论代码了。
除了通过网络获取资源外,软件工程师还将他们个人生活的大部分时间用于在线创建内容。我的个人爱好是开发一些没人见过的简单应用程序和游戏,比如 Crossy Block,它是 Flappy Bird knock-off的仿制品,还有corporate BSgenerator。这是在浪费时间吗?也许吧。但是,当人们看到这些应用程序时,是否也能让他们在两分钟内感到快乐呢?当然是。
Corporate BSGenerator app
编码给了我一个机会,让我可以去创造一些东西,并赋予了我创造力。它让我对生活有了新的看法,甚至可以说是重塑了我的生活。软件工程使我能够解决困难但有趣的挑战,并希望能够用自己微不足道的力量使人们的生活过得更轻松。软件工程有助于我的职业发展,使人有机会不断学习,并从中受益匪浅!
好吧,我不得不承认,我热爱编码。