最近工作比较忙,平时回家也比较晚,今天是加班的好日子。写中秋值班的监控预警,无聊。突然,收到一张截图。朋友在北京做产品经理,在微信朋友圈发了一条状态,对我一直负责的一个系统表示认可,让我很感动。
一般来说,公开表达对他人工作成果的认可,往往只是职场上的一种交际辞令,但这位朋友已经很久没有和我们的工作有交集了。更确切的说,他根本没有加我微信好友,所以当我收到这样的截图时,真的让我深受感动。

同时也让我思考一个问题——作为一个程序员,我的代码是写给谁看的?
代码为谁而写虽然正式参加工作不到十年,但因为机缘巧合,很早就开始显露“码农”的本质。我所在的高中有计算机课程的课程表,我们学校也没有把这门课分流到其他专业课,所以很幸运,我在高一学习的时候接触到了VB。
VB是一门非常灵活的语言,对初学者没有很高的学习门槛。无论是IF-ELSE判断还是WHILE循环,都能让一个学习者从零开始掌握“控制”计算机的能力。虽然在课程中老师没有直接教我们太复杂的技巧,但我还是带着自己的好奇和热爱,尝试着自己完成了理解数独的工具和一个粗略的几何计算器。
当年我写代码尝试做一些引起同学注意的小玩意。作为一个不会打篮球的男生,学习成绩一般,长相一般,那时候我可能也想凭借这点小本事“弯道超车”。可惜这个技能除了在接下来的几年里帮同学修电脑,并没有给我带来任何想要的东西:)
高考成绩很一般,没有让我成功,但幸运的是,我如愿以偿的开始了“计算机科学与技术”的本科生涯。在中国,C语言之父不是丹尼斯·里奇,而是谭浩强。开玩笑的。和所有同学一样,我们以蓝屏开始了我的Turbo C专业课生涯。因为有一定的VB编程经验,所以在学习指针之前并没有遇到太多的问题。就连当时有些同学不理解的汉诺塔问题,也因为我在高中尝试解数独时“意识到”了递归的使用而被迅速攻克。但是,掌握了一门语言的使用之后,你不可能一无所成,所以我给自己定了一个目标——用书本上没有的东西设计课程。
大学图书馆是个好地方,不花钱也能学到很多知识。大一下学期,我基本上是在图书馆里利用业余时间,用C语言编写了一个纯图形界面的时钟,用第一台陪伴了我七年后的笔记本电脑,用汇编语言编写了一个带有跨进程通信的本地版聊天软件。
那时候我一个人在学习课堂上从来没有出现过的技能,大概只是在想自己到底需要学多少才能做出可能有些用处的东西。
大二开始,我被学长“蛊惑”,开始“研究”。直到毕业前,我拿到了程序员、软件工程师、数据库系统工程师等的软考证书。然而,“嵌入式系统设计师”的痛苦仅仅一个点还是映入了我的眼帘。虽然我不知道我那些可能早就过期的证书有什么用,但那时候我似乎对软考有一种莫名的执念。感觉还算公平,我参加了网易举办的编程大赛——有道难题Top Coder编程挑战赛。通过这次大赛,我认真的发现我还是个菜鸡——因为离50强太远了,最后我只拿着一件t恤,上面写着“有道难题”几个大字。
不过从这段时间开始,我也开始做一些学校内部的制度——包括让学弟学妹们感到痛苦的指纹打卡制度。期间利用学校给的一些资源,慢慢接触外界的“真实需求”,在实战中慢慢学习SQL Server、ASP.NET、设计模式等技术。
直到大四毕业,虽然没有像现在的大学生一样具备大数据、爬虫写作这样的高端技能,但也为以后几年吃饭所需的技能打下了坚实的基础。当时为了夯实基础,拓展思路,我也是吃了不少苦,认真完成了导师教授给的任务,写了无数代码。但是后来看起来虽然代码比较幼稚,但是这些辛苦的过程是非常必要的。
大学英语四级考试一直是我的心头之痛。因为英语不好,毕业后不敢随便找工作。我在网上投了14份简历,包括我工作的第一家公司——一家外包给日本的日本公司。

这家日本公司对待新员工真的很好,除了工资低一点但是人际关系超级好,同事很热情,领导也很和蔼。在这家公司,我学到了日本公司的规范,也为我后来的工作养成了一个好习惯。
在这家公司,我认识了我的妻子——她入职时是个大三女生,留着短发。在一起工作了两年多,我们携手组成了幸福的家庭,也离开了陪伴我们事业成长的公司。在这家公司的大部分时间里,不需要认真思考代码的性质——日方总是在每一个细节上发公函。写代码是一件容易的事情,但是测试是一件恐怖的事情——你需要为代码编写大量的测试用例——每个WHERE语句的条件,每个临界值,每个小数点的最后一位——你需要为它们设计独特的变量条件。但是,也正是因为这段经历,让我在后来的工作中养成了谨慎的好习惯。
但是,这家日本公司并不只是和日本做项目。在上海出差几个月的时候,我和一个留着很有特色胡子的年轻人一起参加了一个国内的项目——为一家法律行业的公司做一个税法的文件系统。这个项目也是让我在这家公司得到很大成长的项目。这个项目后台管理系统是用SharePoint开发的,但是因为高度定制化,在这个项目中,我第一次接触到了前端的代码——原来jQuery这么好用!这段时间以来,我一直在尝试使用jQuery的各种函数,从ajax请求到DOM元素的动态渲染,来学习$。on和$.click .也是从这个时候我才发现原来写后端的人也可以轻松做前端。
其实苏州的日子挺有意思的。因为公司不能上网,为了让大家更方便的报销晚上加班的餐费,我用C#在自己的机器上开发部署了一个报销系统。因为飞鸽传书太繁琐,又没有其他本地工具,所以我用Excel和VBA写了一个基于共享文件的聊天室。在这家公司的这几年,工作之余写了很多小玩意。虽然追求一个小姑娘也不乏利己主义,但更多的是基于我自己的想法,想着解决实际问题,给更多的人。现在回想起来,也算是我自己产品思维的一个萌芽。
有离开日企换部门老板的原因,也有日企项目无法满足自己技术升级欲望而产生的焦虑。虽然离开的过程中有一些小插曲,但我还是感谢这家公司让我在苏州安家,让我认识了很多好伙伴。
工作三年,投了一份简历,得到了11次面试机会,于是有幸加入了现在的公司——苏州最大的互联网公司,也是我自愿投简历的公司。
在这里,我第一次知道如何做一个函数。可能想要这个功能的人还没想好怎么办。第一次知道不用几个月的异常测试就能把功能送上线,出错了还能回滚。第一次知道不能用存储过程写SQL我第一次知道,我们可以用beta组件,甚至alpha组件,哪怕直接没有产品源代码。第一次知道假期前要通宵做压力测试;第一次知道写bug会导致亏损的真实感受;第一次,我因为项目中的一个错误而受到惩罚...
互联网的超高速迭代让我几乎跟不上日本公司的脚步,但在领导的关怀和同事的支持下,我在这个奔跑的企业中有了自己的一席之地。从Redis到MongoDB,从HIVE到ElasticSearch,从C#到Java,从Golang到Nodejs,领导给时间用新技术变现,公司给钱参与QCon。这是我职业生涯中最快的五年。
这几年我从负责一个独立的系统到负责一个平台,从开发一个组件中间件到设计系统的集群架构。虽然和行业水平相差甚远,但我还是会对自己看得见的进步感到欣慰。
17年底,公司与北京某大型互联网公司合并,借此机会参与了多项公共业务系统的整合,部分已移交,部分已接收。结果,我们遇到了很多人。本文开头提到的朋友是北京的同事。功能相似的系统的集成并没有想象中那么容易。如何保证两个同事的体验都和原系统相似是一个巨大的挑战,更不用说数据和功能的整合了。
我负责的最重要的系统也在这次合并的范围之内。两个系统都有独特的功能。北京方面强于数据分析,苏州方面侧重于多平台支持。考虑到RD和运维团队都是苏州端负责,我们只能放弃原有的北京端系统,但这也意味着我们必须让苏州端系统完全具备北京端系统的数据分析功能。难点在于,在此之前,我们团队有两个人没有大数据分析的经验。另一个小伙子靠着惊人的毅力,在三个月内,通过与北京负责数据分析的同事不断交流学习,从零开始,在我们原有的系统中加入了一套完整的数据统计功能。并且我第一次提供了生产环境的Java支持,让集成的新系统可以创建北京端的数据,以及大量因集成而产生的调整。

整合过程并不完美,但也没什么问题。
就是从这个时候开始,写代码变得不仅仅是实现功能的目的。因为沟通不像以前那么容易了,我开始思考如何让我的用户在没有指导的情况下顺利使用。虽然是公司内网的内部平台,但是对于提升我们用户的体验也是极有价值的——如果我们能为一个用户节省10分钟,那么只有50个同事使用该系统才能节省一个人-天,更不用说沟通带来的时间成本了。于是我简化了门禁的流程,减少了系统的操作步骤,突出了重要的操作按钮,增加了邮件提醒来推进流程,接入了企业微信,接入了AB测试和效果嵌入点,为这个系统补充了最详细的操作文档...从系统操作的角度来说,基本达到了自己觉得不错的水平。幸运的是,许多同事确实认为我们确实为他们提供了便利。
有一个微信官方账号叫神秘程序员,但是程序员一点都不神秘。他们只是一个用自己的电脑解决问题的群体。我更喜欢的原因。NET转Java正是因为在。NET,我们称之为“Project[Project]”“Solution[Solution]”。-我们为什么要写代码?我们写代码是为了解决问题,我们不是写项目,单纯写代码是没有意义的。
曾经,我认为写代码需要好的技术;现在,我觉得我写代码更需要的是耐心。实现一个功能其实很简单,没有程序员实现不了的要求。但是要让用户使用起来方便,需要很多时间,包括了解甚至培养用户的使用习惯,在此基础上优化UI。UI是用户与代码交互的唯一窗口。
无论使用多少设计模式,都比用户无忧无虑的操作体验重要。写代码的目的是为用户解决问题,而不是炫耀自己的技能。写在最后:本文来源:Star空在线,已获授权转载。是我室友!人与人之间的差距就是在这一点一滴中积累起来的。然而,这可能是一种错觉。个人认为,一个人天赋的差异是导致差距的最大可变因素。比如他说的河内塔问题,一开始我觉得很痛苦,他觉得很好理解。但是,和我一样,大部分同学都觉得自己脑袋里像有根橡皮筋,让我深深体会到什么是抽筋。当初听C语言课程的时候,有四个字:云里雾里。还记得第一个让我咯噔一下的问题是我们C语言老师说的“1+1≠2”,可能是C语言的“1+1=1”。但是,我觉得未来会分为三部分。人们都说情商和智商,决定一个人的眼界和能力;我觉得以后会有“机贩子”。学会与机器交流将打开另一个维度的大门。更好的适应未来的AI世界!


