作者 | keypressingmonkey

译者 | 孙薇,责编 | 夕颜

出品 | CSDN(ID:CSDNnews)

1. 非天才生存指南

承认这一点很难,我的正式简历上也不会有:我是一名普通的程序员。我了解(大多)代码,但.Net核心并非我的梦想。因为Ruby代码写得不够,无论Ruby、Gem还是宝石都和我无缘。我还没能建立自己的框架,在编程语言中切换时,我只找成本最低的。

这不意味着我不喜欢代码。事实上,我非常热爱它,要不了几分钟我就想换工作。我情绪激昂地痛恨敏捷方法论,因为总有人觉得这是什么全新的概念,需要我们额外再针对训练。对于技术世界里我这个小角落出的错,我能抱怨好几个小时——更别说整个世界了。

但是,晚上上床的时候,我很高兴有这样一份热爱的工作,能让我保持足够理智却又疯狂地度过整天时间,而不用非得把热蜡滴在手上才能感觉到什么。这是相对美好的生活,本文我想给大家展示一下我是如何以及为什么学会享受它,并上手自己的工作的。

2. 从不讨厌你的工作开始

想要喜欢甚至爱上你的工作,可不是一转念的事情,但不讨厌它还是可以做到的。我进入编程行业纯属偶然——我很擅长计算机,因此,尽管对于编程知之甚少,我还是发了些应用,然后不知怎么的就获得了学徒身份。跟我一起当学徒的还有许多人,他们是自己选择这份工作并努力修炼技能以期吸引雇主的。单编程来说,他们的技巧就远胜于我,且以后还将领先我数光年。

程序员的生活还有其他方面。之后我们会讨论到,不过现在我要总结一下工作中那些可爱、古怪和有趣的小细节。

即便在我的学徒生涯期间,我对数据库的访问权限也相当奢华。而且,由于经常独自探索,我开始研究统计数据。我们的客户里,有多少拥有这个、那个或者还是这个?大众客户会写多少封邮件?通常联系我们的原因是什么?

最后,我有点像数据库侦探了,可以随时在有人需要数据时快速进行研究,或者执行批量更新以节省客服支持人员大量的时间。这从来都不属于我的正式工作职责,但当你利用闲余时间帮助他人时,没人会抱怨。

与我平常的工作不同,我不讨厌这些事情。事实上,这些事很有趣,有时我还能在桌上发现表达谢意的巧克力棒。同时这也会让其他码农喜欢你——即便我不喜欢巧克力,只会把巧克力送给有需要的同事。

3. 在你的工作上“更进一步”

我一直遵循的普适规则就是,在某个领域成为专家,还不如在多个方面下功夫——编程方面更是如此。

想要做好工作,方法很多,或通过努力工作,或只是凭借经验,比别人更快地修复bug。假如你设法坚持一会儿,就会看到看到地平线上的光,并开始理解系统运作的方式,从而发现那些让别人满头大汗,感觉要出错的问题,在你这里能找到小小的变通区域。

我的部分工作还包括诸如“生产数据库测试”的粗暴行径,关于这项工作,我针对实时数据库进行了一系列操作,包括绕过、欺骗、反转和编辑,以修复那些我无法测试出的严重错误,因为数据库每周只复制一次,还永远碰不上需要的时候。“祈祷并承诺”,我喜欢这么说。可能发生的最坏情况是什么?

这可能会使工作中的纯粹主义者陷入小型身份危机,特别是考虑到没有办法对此进行单元测试,而且,毕竟我是唯一在系统里操作的人,没有人来批准我的pull请求,因此我会直接进入管理员分支。绕过这些愚蠢的规则花了我好些时间,才被允许登入管理员分支,我为此骄傲。绝望的时候需要绝望的措施。

上面这些意味着在编程世界中,关于“好”有许多方面。即便那仅仅意味着在事情突然以惊人的方式出现时你在那里,成为那种愿意承担自己错误并处理后续的人。

我深陷于“混乱善良”的角落,但正如我找到自己的利基缝隙一样,在你的整个系统有序的情况下,任务都该死地井井有条,甚至连毫无编程技巧的人都能在需要时取代你的工作,所有工作都分配了合适的故事点,你可以反向思考,寻找你的利基缝隙。设计专业的用户故事(user story),在没有法则的世界中对法则进行优雅的展示——所有这些都会让你的领导在梦中看到你的面孔。

4. 用你的技能做些有趣的事(并学习新技能)

编程是一项工作,在提出挑战的同时也会赋予你能量。如今,我们几乎可以用开源工具和语言来构建一切,教程涵盖了几乎所有你可能的爱好范畴。

因此,使用你的技巧并开始吧,构建一些类似随机报价生成器之类的傻玩意儿,或者类似网站这样为大家解决问题的实用方案(还能让你从订阅费用中获取收益),或者任何只是些看似有趣的项目。我曾经花费了大量时间用PHP构建了一个性爱故事生成器,因为我喜欢自虐,在极其讨厌PHP为时很久之后,我想要了解它。现在回想一下,这个项目可能还得就其自身写篇辩白,可真是太诡异了。

这里的要点在于:大多情况下,你只需要花费时间,而不必花费金钱,并且有很多教程可以帮助你成长。

5. 意识到编程不仅是写代码

我花了一阵子才意识到,同时人们也花了些时间才相信——我是有责任感的,但一点点地,我将整个工作变成了与最初完全不同的内容。如今我写代码的时候相对较少,事实上我写的那点东西也只够让自己记得我是个程序员。

相反,最终我成为了公司里一个相当复杂而重要系统的唯一维护者。我组织自己的工作,与团队和普通同事沟通,参与会议并提供专业知识和意见,并尽我所能来解决问题。

尽管压力很大,但我非常喜欢这种工作方式。没有一天是相同的,而且,由于我处在所有烦人事务的接收端——从小bug引发的大问题,到各种会议,我都不想错过——我总是很高兴待在办公室里让自己保持忙碌。

我还喜欢和其他工作狂一起在办公室里熬到深夜,那些令人放松却又专注的奇妙时刻,各个部门的人聚在一个房间里,肩并肩地工作着,因为就要到deadline了。我喜欢参与这样的并肩合作——被接纳,受到欢迎。花费两个小时在一个连续SQL query中寻找一个丢失的空格很糟,但如果你旁边的人也必须对抗自己的噩梦,这件事倒也没那么难以忍受了。

6. 理解你公司的架构和生态系统

前几周,我们遇到了严重的系统宕机——不是我维护的系统,但原本的维护者和他的临时接替者,还有另一个可能了解情况的人要么生病,要么出国。

我对这个程序的工作原理有个大致了解,于是由我介入,再加上两个跟我一样几乎一无所知的人。但最终,我们设法将错误缩小到单个服务器故障,并与出售给我们系统的第三方公司协作,最终在周六清晨让一切恢复正常了。

当然,对于公司一半的人来说,那天是浪费了。但原本是要浪费的是两到三天。这很容易带来涨薪,因为为了查明错误,我们对于系统的协作运行机制有了大体概念,并深入浏览了日志文件。

老实说,这是最近记忆中最为疯狂的时刻之一,同时也是最有趣的之一。我甚至还收到了部门领导的邮件,写着“干得好”,而他也在偶遇时短暂认识了我。幸运的是,不会一直如此,之后我还可以回归无名氏的角色,谢天谢地!

7. 沟通

在公司的有段时间里,我离被炒仅有几步之遥,读到这里的你很容易理解原因——同样,也是因为我最近受到表扬的那些工作。说来话长,我总结一下,就是沟通使得我的工作被大家知晓,从而产生的区别。

处理所有无用的琐事,比如在别人发现错误并通知你时写感谢信,在bug修复时回应,而且无论别人是否在乎,都要写个简短的一分钟说明,第一时间解释错误发生的原因以及修复的方式。当我这样做的时候,我不仅发现大家(人数令人惊讶)喜欢我这样做,还发现这个循环运行起来,最终结果又反馈到了我身上。应答、回应、预期、准备,每天花一个小时单纯跟人们聊天。

在这件事的过程中,我拾起了如今的座右铭:向傻瓜解释一切,看着他们成为人类。

8. 结论

希望你们喜欢这篇文章,甚至会觉得有用。它确实保住了我的职位,还让我能在树林里买了间小屋,远离技术的喧嚣。感谢阅读!

原文链接:

https://medium.com/better-programming/how-to-thrive-as-an-average-programmer-1dd202540ac

Java工程师成神之路系列文章

在 GitHub 更新中,欢迎关注,欢迎star。

直面Java第313期:运行时常量池在JDK各个版本中的实现?

深入并发第013期:拓展synchronized——锁优化

- MORE | 更多精彩文章 -

  • 搞到一个IDEA插件,H哥30秒生成一个Spring Cloud Alibaba工程

  • 程序员造轮子的正确姿势

  • 你看,公司状告员工不加班,居然还告赢了

  • HashMap 的 7 种遍历方式与性能分析!

如果你喜欢本文,

请长按二维码,关注 Hollis.

转发至朋友圈,是对我最大的支持。

好文章,我在看❤️

编程不仅是写代码!?相关推荐

  1. 学的不是写代码,学的是编程思维!

    文章转载自STEAM创客 从哈佛大学儿童发展中心所发布的"人类大脑发展"曲线图中,我们发现,Higher Cognitive Function(更高认知能力,包括概念形成,解决问题 ...

  2. 写代码也有本手俗手之分,而我们要善于发现妙手!

    一年一度的高考结束了,准大一的学子们今天起你们不用去深究何是"本手"何是"俗手",放松起来去疯狂地玩吧! 特爱学编程的孩子们在高中三年里也根本挤不出时间学,这个 ...

  3. 清华博士接亲被要求现场写代码,网友:真是面向对象编程!

    源 / 顶级程序员 因为结婚,程序员又上热搜了 但这次不是加班维护服务器 而是程序员接亲被要求现场写代码 01 清华计算机博士 接亲被要求现场写代码 陕西西安,一位清华计算机博士接亲,被新娘要求当场写 ...

  4. 大写的服!用耳朵也能写代码?盲人程序员自学编程成为全栈工程师

    作者 | 年素清 责编 | 王晓曼 出品 | 程序人生 (ID:coder _life) 蔡勇斌幼年失明,靠着顽强的毅力和不服输的精神自学编程,成为了一名全栈工程师.作为一名盲人,为了让全中国的其他盲 ...

  5. 被劝退的学渣,逆袭成高级语言之父,改变编程方式却说“不喜欢写代码”!...

    作者 | 年素清 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) 上世纪五十年代,程序员使用的是 0/1 机器语言写代码,费时费力.如何进化到如今只需轻松高效地输入字符组成不同的编 ...

  6. qtdesigner怎么实现菜单栏跳转_人人都可写代码-Android零基础编程-app 入口菜单栏实操08...

    欢迎来到人人都可写代码,大家好,我是杨晓华,今天我们的课程内容是项目实操,以智者精选项目为例,编写一个Android app的入口关联菜单栏逻辑. 这是要实现的菜单栏组件展示效果,下面就是教大家如何制 ...

  7. python用什么软件编程1001python用什么软件编程-怎样才能写出 Pythonic 的代码 #P1001#...

    L = [ i*i fori inrange(5) ] forindex, data inenumerate(L, 1):print(index, ':', data) 去除 import 语句和列表 ...

  8. 编程笔试(解析及代码实现):求不重复数字之和​​​​​​​给定一组整型数字,里面有且仅有两个数字值出现了一次,其他的数字都出现了两次。请写出程序求出这两个只出现了一次的数字之和

    编程笔试(解析及代码实现):求不重复数字之和给定一组整型数字,里面有且仅有两个数字值出现了一次,其他的数字都出现了两次.请写出程序求出这两个只出现了一次的数字之和 目录 题目描述 代码实现 题目描述 ...

  9. Console.Write(程序猿?开发?写代码?编程?移动、网页、桌面开发?Oh,我连菜鸟都不是!);...

    You make choices and don't look back. 虽然不是学计算机出身,但我对于写代码充满了好奇,尽管这种兴趣还不像烈酒那样浓烈,也不能像打鸡血似的刺激自己每个神经元而浑身激 ...

最新文章

  1. mysql5.7忘记root密码的修改方法
  2. python自学笔记(三)python基本数据类型之列表list
  3. 在终端输入命令打开mac自带的python工具IDLE
  4. python手机版ios-iOS 项目中如何使用 Python
  5. 整型和浮点型的区别_C的基础内容:常量之数值型常量,适合新手的学习
  6. 练习C语言二级编程题的一些问题
  7. hdu5438(2015长春网络赛B题)
  8. ySQL挑战搭建一个简易的成绩管理系统的数据库
  9. testNG之组测试
  10. ResourceDictionary主题资源替换(二) :编译期间,替换主题资源
  11. iBiology |专业的生信科普网站
  12. 学习spring必须java基础知识-动态代理
  13. Tpos时间定位表达式
  14. HardSoft-Viewer SQL
  15. 想学PHP来兄弟连是正确的选择 初识兄弟连三周
  16. 手机站的拨打电话和发短信
  17. react引入本地mp4视频
  18. iVMS-4200 Mac 版监控客户端切换中文语言的方法
  19. 【EXLIBRIS】#小词旮旯# 004 Camera
  20. NODA-GA-NHS ester CAS:1407166-70-4 大环配体配合物

热门文章

  1. Ubuntu 20.10安装docker
  2. python鸭制作类代码_Python动态语言与鸭子类型详解
  3. 乌班图安装mysql 目录_Ubuntu 安装mysql 自定义数据存储目录
  4. python time timeit_python运行时间计算之timeit
  5. Ubuntu 20.04 linux系统安装docker
  6. python numpy array中维度的区别 array.shape
  7. (计算机组成原理题目题型总结)第五章:中央处理器
  8. linux socket epoll
  9. linux ethtool命令
  10. WAF自动化Fuzz工具-WAFNinja(绕WAF、绕过WAF)