作者 | keypressingmonkey
译者 | 孙薇,责编 | 夕颜
出品 | CSDN(ID:CSDNnews)
非天才生存指南
承认这一点很难,我的正式简历上也不会有:我是一名普通的程序员。我了解(大多)代码,但.Net核心并非我的梦想。因为Ruby代码写得不够,无论Ruby、Gem还是宝石都和我无缘。我还没能建立自己的框架,在编程语言中切换时,我只找成本最低的。
这不意味着我不喜欢代码。事实上,我非常热爱它,要不了几分钟我就想换工作。我情绪激昂地痛恨敏捷方法论,因为总有人觉得这是什么全新的概念,需要我们额外再针对训练。对于技术世界里我这个小角落出的错,我能抱怨好几个小时——更别说整个世界了。
但是,晚上上床的时候,我很高兴有这样一份热爱的工作,能让我保持足够理智却又疯狂地度过整天时间,而不用非得把热蜡滴在手上才能感觉到什么。这是相对美好的生活,本文我想给大家展示一下我是如何以及为什么学会享受它,并上手自己的工作的。
从不讨厌你的工作开始
想要喜欢甚至爱上你的工作,可不是一转念的事情,但不讨厌它还是可以做到的。我进入编程行业纯属偶然——我很擅长计算机,因此,尽管对于编程知之甚少,我还是发了些应用,然后不知怎么的就获得了学徒身份。跟我一起当学徒的还有许多人,他们是自己选择这份工作并努力修炼技能以期吸引雇主的。单编程来说,他们的技巧就远胜于我,且以后还将领先我数光年。
程序员的生活还有其他方面。之后我们会讨论到,不过现在我要总结一下工作中那些可爱、古怪和有趣的小细节。
即便在我的学徒生涯期间,我对数据库的访问权限也相当奢华。而且,由于经常独自探索,我开始研究统计数据。我们的客户里,有多少拥有这个、那个或者还是这个?大众客户会写多少封邮件?通常联系我们的原因是什么?
最后,我有点像数据库侦探了,可以随时在有人需要数据时快速进行研究,或者执行批量更新以节省客服支持人员大量的时间。这从来都不属于我的正式工作职责,但当你利用闲余时间帮助他人时,没人会抱怨。
与我平常的工作不同,我不讨厌这些事情。事实上,这些事很有趣,有时我还能在桌上发现表达谢意的巧克力棒。同时这也会让其他码农喜欢你——即便我不喜欢巧克力,只会把巧克力送给有需要的同事。
在你的工作上“更进一步”
我一直遵循的普适规则就是,在某个领域成为专家,还不如在多个方面下功夫——编程方面更是如此。
想要做好工作,方法很多,或通过努力工作,或只是凭借经验,比别人更快地修复bug。假如你设法坚持一会儿,就会看到看到地平线上的光,并开始理解系统运作的方式,从而发现那些让别人满头大汗,感觉要出错的问题,在你这里能找到小小的变通区域。
我的部分工作还包括诸如“生产数据库测试”的粗暴行径,关于这项工作,我针对实时数据库进行了一系列操作,包括绕过、欺骗、反转和编辑,以修复那些我无法测试出的严重错误,因为数据库每周只复制一次,还永远碰不上需要的时候。“祈祷并承诺”,我喜欢这么说。可能发生的最坏情况是什么?
这可能会使工作中的纯粹主义者陷入小型身份危机,特别是考虑到没有办法对此进行单元测试,而且,毕竟我是唯一在系统里操作的人,没有人来批准我的pull请求,因此我会直接进入管理员分支。绕过这些愚蠢的规则花了我好些时间,才被允许登入管理员分支,我为此骄傲。绝望的时候需要绝望的措施。
上面这些意味着在编程世界中,关于“好”有许多方面。即便那仅仅意味着在事情突然以惊人的方式出现时你在那里,成为那种愿意承担自己错误并处理后续的人。
我深陷于“混乱善良”的角落,但正如我找到自己的利基缝隙一样,在你的整个系统有序的情况下,任务都该死地井井有条,甚至连毫无编程技巧的人都能在需要时取代你的工作,所有工作都分配了合适的故事点,你可以反向思考,寻找你的利基缝隙。设计专业的用户故事(user story),在没有法则的世界中对法则进行优雅的展示——所有这些都会让你的领导在梦中看到你的面孔。
用你的技能做些有趣的事(并学习新技能)
编程是一项工作,在提出挑战的同时也会赋予你能量。如今,我们几乎可以用开源工具和语言来构建一切,教程涵盖了几乎所有你可能的爱好范畴。
因此,使用你的技巧并开始吧,构建一些类似随机报价生成器之类的傻玩意儿,或者类似网站这样为大家解决问题的实用方案(还能让你从订阅费用中获取收益),或者任何只是些看似有趣的项目。我曾经花费了大量时间用PHP构建了一个性爱故事生成器,因为我喜欢自虐,在极其讨厌PHP为时很久之后,我想要了解它。现在回想一下,这个项目可能还得就其自身写篇辩白,可真是太诡异了。
这里的要点在于:大多情况下,你只需要花费时间,而不必花费金钱,并且有很多教程可以帮助你成长。
意识到编程不仅是写代码
我花了一阵子才意识到,同时人们也花了些时间才相信——我是有责任感的,但一点点地,我将整个工作变成了与最初完全不同的内容。如今我写代码的时候相对较少,事实上我写的那点东西也只够让自己记得我是个程序员。
相反,最终我成为了公司里一个相当复杂而重要系统的唯一维护者。我组织自己的工作,与团队和普通同事沟通,参与会议并提供专业知识和意见,并尽我所能来解决问题。
尽管压力很大,但我非常喜欢这种工作方式。没有一天是相同的,而且,由于我处在所有烦人事务的接收端——从小bug引发的大问题,到各种会议,我都不想错过——我总是很高兴待在办公室里让自己保持忙碌。
我还喜欢和其他工作狂一起在办公室里熬到深夜,那些令人放松却又专注的奇妙时刻,各个部门的人聚在一个房间里,肩并肩地工作着,因为就要到deadline了。我喜欢参与这样的并肩合作——被接纳,受到欢迎。花费两个小时在一个连续SQL query中寻找一个丢失的空格很糟,但如果你旁边的人也必须对抗自己的噩梦,这件事倒也没那么难以忍受了。
理解你公司的架构和生态系统
前几周,我们遇到了严重的系统宕机——不是我维护的系统,但原本的维护者和他的临时接替者,还有另一个可能了解情况的人要么生病,要么出国。
我对这个程序的工作原理有个大致了解,于是由我介入,再加上两个跟我一样几乎一无所知的人。但最终,我们设法将错误缩小到单个服务器故障,并与出售给我们系统的第三方公司协作,最终在周六清晨让一切恢复正常了。
当然,对于公司一半的人来说,那天是浪费了。但原本是要浪费的是两到三天。这很容易带来涨薪,因为为了查明错误,我们对于系统的协作运行机制有了大体概念,并深入浏览了日志文件。
老实说,这是最近记忆中最为疯狂的时刻之一,同时也是最有趣的之一。我甚至还收到了部门领导的邮件,写着“干得好”,而他也在偶遇时短暂认识了我。幸运的是,不会一直如此,之后我还可以回归无名氏的角色,谢天谢地!
沟通
在公司的有段时间里,我离被炒仅有几步之遥,读到这里的你很容易理解原因——同样,也是因为我最近受到表扬的那些工作。说来话长,我总结一下,就是沟通使得我的工作被大家知晓,从而产生的区别。
处理所有无用的琐事,比如在别人发现错误并通知你时写感谢信,在bug修复时回应,而且无论别人是否在乎,都要写个简短的一分钟说明,第一时间解释错误发生的原因以及修复的方式。当我这样做的时候,我不仅发现大家(人数令人惊讶)喜欢我这样做,还发现这个循环运行起来,最终结果又反馈到了我身上。应答、回应、预期、准备,每天花一个小时单纯跟人们聊天。
在这件事的过程中,我拾起了如今的座右铭:向傻瓜解释一切,看着他们成为人类。
结论
希望你们喜欢这篇文章,甚至会觉得有用。它确实保住了我的职位,还让我能在树林里买了间小屋,远离技术的喧嚣。感谢阅读!
原文链接:
https://medium.com/better-programming/how-to-thrive-as-an-average-programmer-1dd202540ac
本文为CSDN翻译文章,转载请注明出处。
【END】
更多精彩推荐
☞同期两篇Nature:运行温度高于1K的量子计算平台问世!
GitHub 标星 10,000+,Apache 顶级项目 ShardingSphere 的开源之路
你点的每个“在看”,我都认真当成了喜欢
转载:https://blog.csdn.net/csdnnews/article/details/105672145