一不小心工作10年了,一路从普通程序员成长为技术总监。刚毕业头2年多在一家棋牌游戏工作,用的微软的技术,主要开发语言是C#,那会还是用asp.net2.0写的网页前后端,数据库用的sql server。那会基本天天研究各种jquery插件和布局风格,喜欢扒大厂的首页,自己模拟写一遍。jquery小插件玩得很high,div+css也写得蛮6,数据库那会就是各种存储过程,sql语句写得要吐,子查询,联合查询,索引(聚集和非聚集),数据库同步(拉和推),数据库作业和缓存等。网站目录都是当时主流的三层结构,逻辑简单,更谈不上什么架构可言。在这家公司基本都是自学,我自学能力还不错,也练就了独挡技术一面的能力,后来感觉技术遇到瓶颈了,就撤了。(这里面还有个小插曲,埋个包袱)

接着就是就第二份工作,一家物联网公司,当时中科院微电子研究所投的一家公司(boss是第二代身份证的设计者,当时无锡炒各种物联网概念,拿了国家很多钱,各种物联网小公司像雨后春笋般的疯狂生长),过来呢主要是想玩玩linux,感觉win上的东西太重,开发软件一个套装就是几十个G,而且就业面太窄了。主要负责的还是web,只是用的技术是lnmp组合(linux+nginx+mysql+php),当时觉得开源界的软件就是轻,性能也不差,写起来比较爽,PHP又是解释性语言,不用像C#一样每次都要编译,比较符合我的style。我也第一次开始接触socket,学会了怎么和C++写的服务端实时通信,如何定义协议头和包等概念,也大概的了解了一个硬件产品研发流程是怎么样的,具体涉及工种:硬件工程师(设计电路),驱动工程师(编写硬件的驱动程序,要会汇编),嵌入式工程师(连接软硬件,C++必学,主要连接硬件驱动和提供上层软件使用的接口),最后就是服务端(采集硬件数据做分析和管理)。

第三份工作跳槽到了国内top1的数字营销公司(薪资对当时的我来说比较诱人),终于来到了一家500+人的公司(楼主在无锡,当时这个规模的公司特别少),在北上广深,美国西雅图都有分公司,在无锡有个研发中心。这次又用回C#,不过这次不只B/S架构,也开始玩c/s架构,主要用winform写客户端软件。涉及的技术有,数据库ETL相关,多线程技术(线程安全,互斥锁,信号量,线程等待,线程唤醒),自定义队列,通过代理IP模拟真实用户,更深入的接触了爬虫技术,基本上把Http协议里的各个参数玩了个遍,也接触了一些设计模式(单例,工厂,观察者)不得不说,公司做到这个规模还是有很多东西可以借鉴和学习的,不仅仅是技术上的,比如软件工程管理方面的(深入了解了一个完整产品的研发上线流程,大厂研发部门是如何划分的,跨地区的研发团队如何协作,软件的持续集成),业务方面更加全面的了解了互联网广告投放的流程和细节,如何用技术手段分析竞争对手和提供精准的数据给用户。在职期间,作为主力程序员参与编写的软件还获得了国际软件创新大奖。后来的后来又遇上发展瓶颈(大公司都是一个萝卜一个坑,上升很困难).当中有机会升职的,带新项目,但正逢老婆生孩子,只能放弃。慢慢的我觉得纯技术我已经干到头了,因为我觉得就算接触到新的技术,自己也有充分的信心可以在短时间内学会,但学会了又怎么样呢,为了技术而技术其实蛮没意思的,我更倾向于技术+业务+带团队的路线,通过技术手段解决实际业务问题,这样价值才能最大化。

希望自己得到突破:15年初我加入一家创业公司做教育直到现在,有点股票期权,初衷是希望通过技术输出,干点有盼头的事情,因为是无锡“土著”,也不想去北上广(要去早去了,现在觉得刚毕业就应该进bat等顶尖的公司做背书,然后再去创业公司,会减少很多机会成本)。目前公司用户规模发展的还可以,员工人数也从当初的10几号人发展到200多号人,但创业这条路走过的都知道不容易,互联网+教育竞争非常激烈,营收压力还是不小的。技术栈如下:前端jquery+vue,中间层php,后端golang/java,PC客户端技术C++C#,手机端客户端:Android是java+kotlin,iOS是object-c+swift,运维用ansible(基于python)来管理服务器,并用golang写了一套类似阿里云监控体系的c/s架构的后台程序。

流水帐到此告一段落,做了教育越发觉得教育的重要性,小到企业,大到国家,教育都是未来希望之所在。写这篇的主要目的是一方面总结一下过往职业经历,另一方面为“编程教育”做铺垫。编程教育未来肯定是一个很大的缺口(其实现在已经是了,未来人人学编程会成为趋势,一半的工作都会被AI替代)。而且我始终相信“输出是最好的输入”,希望通过自己的分享为这个行业贡献一点绵薄之力

脑袋和双脚,总要有一样在路上!!!