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

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

3天内不再提示

一名IT工程师的成长回忆

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

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

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

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

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

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

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

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

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

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

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

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

    关注

    59

    文章

    1553

    浏览量

    67481
收藏 人收藏

    评论

    相关推荐

    个电源工程师成长路径

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

    企业老工程师和高校老师有啥区别

    电子工程师硬件
    电子发烧友网官方
    发布于 :2024年02月28日 17:50:00

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

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

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

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

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

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

    电子工程师天上班就暴揍师傅。。。#科普 #示波器 #电子工程师 #打工日记

    电子工程师示波器
    安泰小课堂
    发布于 :2023年12月18日 17:36:12

    FPGA工程师需要具备哪些技能?

    ,需要具备系列的技能,才能胜任日益复杂的设计工作。因此,本文将从设计思路、硬件语言、EDA工具、数字信号处理、通信协议、测试验证等多个方面,探讨FPGA工程师需要具备哪些技能。
    发表于 11-09 11:03

    如何成为一名优秀的嵌入式工程师

    如何成为一名优秀的嵌入式工程师?嵌入式学习的第步,首先是C语言。 1.理解内存管理:C语言不同于高级语言,它不会自动管理内存。因此,你需要理解并掌握如何使用malloc()、free()等函数
    发表于 11-07 15:36

    电源工程师常用的几个典型电路分享

    具有电源知识水平的工程师来完成设计和开发。作为一名合格的电源工程师平时工作经验的积累很重要,但同时也应该提高理论水平,通过积累几个常用的电源电路,说不定下次就能用上,还是学习吧!
    发表于 09-20 07:59

    一名硬件工程师都具备哪些技能?

    芯片嵌入式物联网STM32
    学习电子知识
    发布于 :2023年08月02日 12:54:00

    热门推荐:硬件工程师必备工具

    硬件开发的工作流程般可分为:原理图设计、PCB Layout设计、采购电子BOM、PCB板生产、PCBA组装、功能调试及测试、小批量试产、大批量生产正式投放市场等步骤。 作为一名优秀的硬件工程师
    发表于 06-21 10:15

    招labview工程师 (广州)

    招labview工程师1-2,工作地点:广州天河 负责仪器设备系统软件开发工作; 协助公司已有产品软件的维护及改进; 协助模块功能调试及系统搭建; 熟悉工业常用接口RS232、USB、GPIB、TCP/IP等 薪资情况,待遇可谈。QQ:3549663089有意者请联系本
    发表于 06-08 18:48

    礼赞五一 | 平凡的岗位,不平凡的坚守!致敬每个努力奋斗的电子工程师!

    获奖名单如下:电子工程师高赞礼品第一名:陈旭新第二:郭海聪 第三:陈运华 劳动节盖楼奖郭海聪 郭祥峰
    发表于 04-28 10:08