张靖笙,张靖笙讲师,张靖笙联系方式,张靖笙培训师-【讲师网】
张靖笙 2019年度中国50强讲师
数字化转型、大数据、工业4.0、人工智能、智能制造、区块链
46
鲜花排名
0
鲜花数量
扫一扫加我微信
张靖笙:我的代码心流
2021-07-13 2288

     我大学毕业后的第一份工作就是码农,从此走上挨踢(IT)的人生。

     我并非Steve Jobs,Bill Gates那种少年辈出的电脑英雄,我这个九零后出道的老码农算是非常晚成,我整个青少年时代没什么条件接触电脑,虽然也应该听说过电脑有广大的神通、大好的前途,可觉得这离自己很远,由于无知且无感,班主任推荐我填报高考志愿的时候我居然对计算机专业还有些抵触情绪,本科选的是中学时期向往的船舶工程,希望成为一名造船工程师。

最近在微信群看留校做教授工作的华工老同学转发分享的华工毕业生抖音小视频,勾起了我对华工时光的怀念,我印象最深刻是27号楼(五山校区,我们在读之年有且仅有此校区),我的计算机生涯就是从大学一年级在这里的微机房上机学Basic开始起步的。

     对于我这种非计算机专业的码生,在电脑面前对着教材里面的程序依葫芦画瓢是常用的代码学习方法,我记得我当年在华工图书馆借了一本沙老师的《BasicA高级编程》(书名可能记得不准确了),里面有画出三维几何图形的程序样例,上机的时候我看到旁边有人在玩当时很流行的阿帕奇直升机战斗游戏,在一个三维战场场景里面模拟飞行员猎杀敌方坦克,受这个启发,我在沙老师程序的基础上,加上了用键盘按钮可以调整观察三维图形的简单操作,程序跑通以后觉得很好玩,于是萌生结合本专业搞CAD(计算机辅助设计)的想法,这成为我最早的种码(Coding)体验。

     作为一种业余爱好我开始学得也不深入,而华工学子里有一种发烧友文化(当时还没有创客这种概念),我身边就有一批这样身怀各种创客技能的发烧友玩家,玩无线电的,玩功放音响的,玩羽毛球的,当然也包括类似我这样玩计算机的,年轻人聚在一起难免互相切磋炫耀,心中都向往自己的技高一筹,于是我开始啃包括汇编语言在内的技术硬骨头,为了编写更显技术功力的程序,我需要解决的卡脖子问题当然是与日俱增,不得不说计算机专业是一个非常开放和慷慨的知识体系,只要愿意啃,我们学校附近的五山科技街上总能淘到各色各样大部头的技术秘笈帮助你,于是我宿舍叠加的计算机书山也越来越高。

     可能是堆积的计算机书山过于显眼了吧,我逐渐被传说为系里的计算机高手,找我来帮忙解决各种计算机问题的人也越来越多,后来还包括我本科专业上的老师,为了不负高手之名,我又大包大揽承接了许多包括装机在内的技术义工活,当时没有经商头脑,也居然没想过以此发点小财。

      也是为了证明自己不负高手之名,从大二上学期开始,每年我都跟着计算机系的科班生去报考各等级的国家认证计算机软件专业技术资格水平考试,三年时间都是以优异的成绩一路升级考过了从初级程序员到高级程序员的水平认证,这些专业资格是与计算机系的科班生在同一起跑线的,我终于玩成了一个可以持证上岗的准专业IT人,毕业的时候得以获得某国有大行的码农接收函(那时还不兴叫offer)。

       那年正值我行把业务系统从微机迁移到IBM大型机的用人之际,太多活需要人干了。当我们打开IBM随机器提供的整整一立方米的纸质英文资料的时候,我才发现之前在大学时期碰过的计算机知识只是皮毛,当时的IBM大型机技术架构和个人电脑相比简直是云泥之别,IBM给我们提供的极其丰富的英文资料中,随便找一本只要完整翻译出来,摆在当时书店的计算机书籍里面其技术水平都是鹤立鸡群。

       延续华工发烧友习惯,看到这些东西不但没让我头皮发麻,反而有种打了鸡血的兴奋感,我的任务是搞清楚IBM的银行核心业务系统程序的改造办法,并根据本行要求在上线投产前完成从前台到后台的相关代码改造工程。

       刚开始的时候,我大学时候自学过的什么项目管理、什么软件工程等方法一概没用上,就是捋起袖子直接在系统里逆向工程追踪代码逻辑思路,这种工作方法其实是不满足软件工程要求的,不过当时也能发挥作用,因为我们的工作任务基本上也就是在人家已成熟的软件产品上做些二次开发和适应性的改动,有点类似给已经用过的建筑楼宇改改装修风格,只要不要破坏人家原来设计的逻辑结构就可以了,有文档就根据文档,没文档的时候只能靠类似摸走迷宫的方法。

      虽然IBM的技术挺牛逼的,的确让我们开了大眼界,也学到了不少东西,可是我们当时用的IBM大型机的技术体系是比较封闭的,在上面做二次开发难度蛮高,如果请外部专家过来花费都非常不菲,而我们的主机上做一些非核心代码的改动已经很费劲,根本不敢去动核心代码,IBM高大上技术很多水土不服的表现也慢慢呈现出来,很多中国特色的银行业务需求都很难满足,比如汉字的处理就很不灵活,还有凭证、单据、报表的输出格式和中国的银行业务不匹配的地方也很多,我们大量的修改工作源自于此。

       为了解决这个问题,我们逐步用前置机自主开发了不少替代性的应用程序,通过前置机接手把一些非核心功能从IBM主机剥离出来,既满足业务的需求,也大大降低了开发难度和成本,还为后一步更多的自主开发应用打下了基础。

可能领导看出我是真喜欢搞计算机的,我这个初出茅庐的非科班出身的年轻人在极短的时间内被委以重任,行里给我安排的装备环境也很优渥,当年电脑价格还不菲的年代,给我一人配备了四台不同的电脑,这种环境是很锻炼人的,也很帮助人的成长,作为一门实践性很强的专业技术,我能有条件全面接触这样比较高端的技术环境,实在是一件非常幸运的事情。

      我那时参与开发过的银行业务系统还是蛮多了,后来被调动到省行工作,省行同事说我们早就认识你了,在很多代码里面都看到你的名字标记,这的确是我的风格,我爱给代码里面自己写过或者改过的地方标上由我名字拼音首字母组成的注释标记。

      后来我离开银行进入乙方公司工作,继续参与不少软件项目的代码开发工作,到差不多三十五岁的年纪,我工作上转到了管理岗,工作要求不一样了,就不再直接从事种代码的工作了。国外好像有程序员工作到五六十岁,在中国却很罕见了,这里折射出两个问题,一个是中国数字化产业还很年轻,需要年轻的冲力、活力和体力;二是中国的数字化产业还很年轻,也还很不成熟,这主要体现在组织管理和团队的不成熟上,在一种不成熟的组织环境和团队文化下,不可避免要用年轻的冲力、活力和体力去快速完成开发任务和试错,容不下慢吞吞写代码的老程序员。

      这么多年过去了,就像我们大多数人从学校毕业后忘记了当初怎么解数学题一样,我当初写的大量代码也谈不上什么经典之作,单位上严格的保密要求也不允许自己私下留存备份,当年自己种出来的代码是什么样我今天已经记不得了,是好是坏都已经成为了感觉遥远的故事。

      现实世界中的我身上有许多不足和缺点,弱冠年轻之时我为此而自卑怯懦多年,刚参加工作在人际关系上我内心一直都有各种不自信,和人打交道常常冒出不必要的自惭形秽,这种情结也是我极不喜欢、讨厌和要逃避的,久而久之就不太热情参与各种年轻人喜欢的流行的社交活动了。

      而代码的世界让我找到了一口让自己感觉舒服自在的水井,特别是在电脑前面种码(Coding)工作到夜深人静的时候,全世界仿佛就剩下自己敲击键盘的声音,自己的思想、自己的心情都随代码敲进了自己建构的世界,屏幕的微光泛照在自己的脸庞,自己的脸庞若隐若现在屏幕上,于是忘记了自己在人世间的各种不快和不足,自己的喜怒哀乐都与外界绝缘了,像青蛙一样全身心地泡在这口井的温水里面自得其乐。我以前不懂,现在回忆起来,这种沉浸和专注的感觉就是一种心流体验。

      我的代码我已经忘记了,而年轻时候我的代码带给我的心流体验又怎么能够忘记?像一位多年不见的老朋友,见面了仍然会亲切温暖如昔。

      以此文纪念我参加工作二十六周年。

(2021年7月13日)


全部评论 (0)
热门领域讲师
互联网营销 互联网 新媒体运营 短视频 电子商务 社群营销 抖音快手 新零售 网络推广 领导力 管理技能 中高层管理 中层管理 团队建设 团队管理 高绩效团队 创新管理 沟通技巧 执行力 阿米巴 MTP 销售技巧 品牌营销 销售 大客户营销 经销商管理 销讲 门店管理 商务谈判 经济形势 宏观经济 商业模式 私董会 转型升级 股权激励 纳税筹划 非财管理 培训师培训 TTT 公众演说 招聘面试 人力资源 数据加载错误
Message:Exception of type 'System.Web.HttpUnhandledException' was thrown.
Source:System.Web
StackTrace: at System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequest(HttpContext context) at System.Web.Mvc.ViewPage.ProcessRequest(HttpContext context) at System.Web.Mvc.ViewUserControl.ViewUserControlContainerPage.ProcessRequest(HttpContext context) at System.Web.Mvc.ViewPage.RenderView(ViewContext viewContext) at System.Web.Mvc.ViewUserControl.RenderView(ViewContext viewContext) at System.Web.Mvc.WebFormView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) at System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData) at System.Web.Mvc.Html.SDRenderPartialExtensions.SDRenderPartial(HtmlHelper helper, String partialName, Object model, ViewDataDictionary viewData, Action`2 expFunc)
Message:Collection was modified; enumeration operation may not execute.
Source:mscorlib
StackTrace: at System.Collections.Generic.List`1.Enumerator.MoveNextRare() at ASP.views_space_spacerightbar_v2_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in d:\webs\subsite-pc.jiangshi.org\Views\Space\SpaceRightBar_v2.ascx:line 52 at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
讲师网重庆站 cq.jiangshi.org 由加盟商 杭州讲师云科技有限公司 独家运营
培训业务联系:小文老师 18681582316

杭州讲师网络科技有限公司 更多城市分站招商中