0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一名IT工程师的成长回忆

工程师人生 来源:网络整理 作者:工程师吴畏 2018-07-16 16:35 次阅读

在我小的时候,家长经常对胖孩子打趣说:哟,身体长得挺快,可惜就是横向发展了。看来在很多人的潜意识里,纵向发展是向上的,值得夸奖,横向发展则不是那么光彩的事情。但是我的工作经历和思考,却让我对“横向发展”有了新的认识。

程序员的发展,长期以来都是大家关心的问题。通常程序员的发展有两大方向,深度和广度。深度发展,就是精深自己的本事,研习新潮尖端的技术乃至学会“屠龙之术”,以绝招打遍天下;广度发展,就是拓宽自己的技能种类,比如学会更多的语言,以完成更多种类的任务。除去这两大方向,其它能选的发展方向似乎就只有“改行”了。

今天我要说的当然不是改行,而是除去深度发展、广度发展之外的第三维度,因为似乎一直也没有正式的命名,所以我干脆借用“横向发展”的说法好了。

什么是横向发展呢?举例子来说,我们写个程序,深度发展关注的是让它速度更快、资源消耗更少,广度发展关注的是让它更合适与其它模块交互,甚至用更合适的语言编写这个程序。横向发展,则是让这个程序成为真正能用的程序,而不是实验室里的玩具。换句话说,“横向发展”是让程序更加“工业化”而不是“技术化”的发展。

我刚开始工作的时候,有一天提前完成了任务,喜滋滋地去向项目经理汇报。不料他看了代码之后,却把我劈头盖脸说了一顿:你以为你还是学生呢,给老师写个程序算出正确结果就完?你看你处理网络连接的部分,对服务器返回的异常信息,包括网络传输的各种意外都没有处理,谁向你保证服务器总是返回正确信息的?谁告诉你网络传输不会意外的?万一网络断了,你的程序就一直死循环吗?……

我必须承认他说的有道理,但也一时无可奈何。虽然在学校的时候写过不少程序,但老师都只看大致结构和结果,从没有问过“网络断线了怎么办”,也没有哪本教材专门讲过这方面的知识,所以自己一直也没想过。但是没想过归没想过,项目经理说的毕竟有道理,确实只有学生才会写出在理想环境下运行的程序。于是我开始有意识地学习和思考各种异常情况的处理,觉得讲究挺多,思路也因此拓宽了不少。不久,还因为这方面的工作得到了项目经理的表扬,也深刻感觉到“横向发展”确实解放了自己。

后来换了份工作,我本来以为自己之前的经验可以被人赏识,却发现自己完全想错了。新工作对程序的要求更高、应用场景更严苛,只思考在程序内部怎么处理异常是不够的,还需要确保程序的持续运行,其运行状态持续可以记录、监控、分析,出现问题必须能在第一时间判断症结(而不是启动IDE去debug)……为了做到这一切,既需要专门开发程序去监控自己的程序,又需要让原有程序能够被方便的监控,还不能泄露不必要的信息,所以在设计时又有更高的要求——当然,这些知识仍然是书上没有的。我写到最后才发现,虽然核心的功能并没有变复杂,但为了保证核心功能的稳定运行,程序本身的复杂度却上升了很多。这种要求,颇有几分类似小朋友的“横向发展”——但是小胖墩的重心终归要稳一些嘛,所以我把对程序员的这种要求称为“程序员的横向发展”。

或许是从工作开始就有机会重视“横向发展”的缘故,所以我长期以来并不认为这是严重的问题。后来的见识却刷新了我的认识:曾经有朋友告诉我,国内互联网行业某新兴领域排名三甲的公司,竟然连自己的服务器上跑的哪个版本的程序都不知道,开始我还当是笑话,后来才知道事实当真如此。小朋友的“横向发展”不讨人喜欢,许多程序员也忽视甚至讨厌“横向发展”,觉得这是在给自己找麻烦,他们认为,把核心功能写完,代码提交,往服务器上一扔,自己的工作到此为止了。至于其它方面,那就是系统管理员要处理的了。

如果你认真回忆,一定见过许多这样的程序:完全不处理意外情况,各种异常一股脑交给操作系统去处理,我甚至见过默不作声把所有异常都吃掉,假装没事继续运行的系统。也见过很多这样的程序:自动发送邮件的程序,不知道自己每天发了多少封邮件,消耗了多少流量,等到用户收不到邮件才知道出了问题;备份数据库的程序,不会记录每次备份的开始时间、结束时间、备份文件大小,直到硬盘满了才发现已经很久不能正常备份了;抓取数据的程序,不知道抓取的成功率、速度、消耗的流量,非要业务部门说数据很久没更新了才知道抓取失效了…… 其实这些功能通常都不复杂,但完成它们的程序,不管什么平台,什么语言,就是做不到稳定。每次出了问题都不能预先知道,又因为没有详细的记录,又要消耗无数的人力物力去解决。在一些稍微复杂的系统里,不少程序员每天的工作内容就是这样的重复劳动,随之而来的是无休无止的抱怨,说工作毫无意义,没有机会学新东西…… 更糟糕的是,不少这样的程序员业余时间还在积极学习,希望在把语言工具掌握得更熟练,学会更多的语言和工具,却不知道问题的症结在于自己缺乏“横向发展”的意识。

我仔细回忆自己小时候,家长和老师会在一种情况下提倡“横向发展”,那就是要求身板像“豆芽菜”一样的同学多锻炼,成长结实一点。同样的道理,如果程序员觉得自己写出的程序像“豆芽菜”一样没有底气、不能放心,与其继续钻研新语言、新技术,倒不如抽出精力去“横向发展”一把。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 工程师
    +关注

    关注

    59

    文章

    1566

    浏览量

    68437
收藏 人收藏

    评论

    相关推荐

    正是拼的年纪|65岁电子工程师上班VLOG #65岁退休 #电子工程师 #搞笑 #上班vlog

    电子工程师
    安泰小课堂
    发布于 :2024年07月25日 11:31:02

    嵌入式软件工程师如何提升自己?

    相关的实验室项目或参加开源项目以积累宝贵的项目经验。 4.不断学习与成长 嵌入式软件领域的技术更新速度非常快,因此,作为一名嵌入式软件工程师,需要不断学习与成长,保持对新技术的敏感性和
    发表于 06-12 11:20

    索尼诚邀软件工程师参与PS免费手游平台设计

    据悉,近日,澳大利亚知名媒体TweakTown发现,索尼互动娱乐正在为其旗下的PlayStation Studios Mobile招募一名资深的软件工程师,负责设计PlayStation的免费手机游戏平台。
    的头像 发表于 05-23 17:08 693次阅读

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试题

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    个电源工程师成长路径

    即将走马上任电源工程师这个岗位,请问各位大佬,这个岗位的职业路径般是怎样的?
    发表于 04-08 14:19

    单片机如何通过代码控制硬件:一名工程师的分享

    今天跟大家聊聊单片机是怎样通过代码来操控硬件的。作为一名单片机工程师,我们平时的工作就像是给单片机编写“指令集”,让它按照我们的意图去驱动各种硬件设备。
    的头像 发表于 03-06 14:46 1384次阅读
    单片机如何通过代码控制硬件:<b class='flag-5'>一名</b><b class='flag-5'>工程师</b>的分享

    如何搞崩个硬件工程师心态?试试对ta说这几句

    硬件工程师
    扬兴科技
    发布于 :2024年02月20日 18:05:49

    优秀电源工程师需要哪些必备技能?

    随着电源市场的不断扩张,开关电源行业飞速发展,企业对电源工程师的需求日益增加,对电源工程师的技能要求也日渐提高,相信没有位电源工程师会错过让自己变得更优秀的机会。作为
    发表于 01-29 11:29

    优秀电源工程师的必备技能大揭秘!

    随着电源市场的不断扩张,开关电源行业飞速发展,企业对电源工程师的需求日益增加,对电源工程师的技能要求也日渐提高,相信没有位电源工程师会错过让自己变得更优秀的机会。作为
    的头像 发表于 12-19 08:23 1683次阅读
    优秀电源<b class='flag-5'>工程师</b>的必备技能大揭秘!

    #人工智能 #FPGA 怎么成为个合格的FPGA工程师

    fpga工程师
    明德扬助教小易老师
    发布于 :2023年12月18日 21:19:01