我的第一家公司是做电商类软件开发的,就是有一套标准的电商系统,再做一些定制开发。我当时是以java开发工程师的职位入职的,没想到一干就是三年。
还记得入职的第一个月,学习系统部署,当时问上级有没文档可以参考,答案是否定的,因为这套系统部署实在太复杂了,以至只有几个人了解完整的部署流程。
第一个困难
老板当时布置给我的第一个工作就是让系统部署自动化,做成像window软件那样,双击安装包,点击下一步,下一步,完成。当时我就觉得这任务根本就不可能完成啊,我连自己的电脑还没搭建起来,怎么自动化。
后来想起来其实也没太难,当时是用一个叫titanium的软件实现的,其实就像现在的nodejs。把apache tomcat、mysql等等打成一个包,根据可视化界面收集用户数据,例如端口号,内存之类的,通过查找文件,做相应替换就可以了。
虽然原理不是很难,但是做出来的效果还是蛮厉害的,可以把整套系统刻录到光盘里,寄给客户试用,免去了部署服务器的麻烦,要是以前,我们部署一台服务器是需要一天时间,收取2000费用的,现在钱照样收,但是安装只需要两分钟。
移动端开发
经过这个任务之后,感觉老板对我的折腾能力还是挺认可的,就又丢一些移动端开发的任务给我。
当时是用titanium mobile开发了一个商城客户端,但是在做多机型测试的时候,就惨了,各种bug就出来了,而且很多是系统底层的bug,根本没法修复,只能去官方提issus。后来由于官方维护能力不强,也没推广普及,最终项目黄掉了,titanium mobile后来也黄了。
后来尝试使用phonegap,现在叫codova,就是使用webview解析web页面,同时开放原生和web通讯协议,达到web调用原生模块的能力。
codova就简单多了,因为都是基于web开发的,web技术是比较成熟的技术了,不会出现严重bug,但是随之而来的就是体验问题,页面跳转出现白屏,当时还没有单页应用的概念,angular都还没有出现,我们使用knockout.js自行实现了一套单页方案,但是实现得还是比较蹩脚的,就是通过隐藏显示div来达到单页效果,大家都知道,如果dom元素过多,页面的渲染速度将非常耗费性能,所以后面就通过异步加载页面,再拼接到dom上。
后端开发
作为一名java开发工程师,不写后端代码还能叫java工程师吗?所以我平时除了要折腾移动端的东西意外,还是负责项目定制需求的开发,不过由于底层封护的已经比较完善,我们一般只需要在上层实现特殊业务即可。
带领团队
随着业务的增长,越来越多客户需要移动端的开发,那我的工作就慢慢偏向移动平台需求的实现了,后来就负责招聘前端开发人员,当时并没有前端开发这个职位,都是招java开发,然后培养他们往前端的方向,前端后端都要做,自己给自己封装接口。当时并不懂什么管理的概念,也只有三四个人,我负责项目任务的安排和主要模块的开发。小团队有小团队的好处,因为沟通比较容易,所以基本需求完成也比较顺利。由于经过大量需求的实现和评估,使我对需求的人日评估比较有把握,基本客户提出需求都能给出比较准确的开发时间。
一个好的想法
做了两年后,感觉公司就是不断的重复需求,特别商城那块,就算是定制需求,也只是商城首页样式的变动,当时就在想,能不能做一个编辑器,可以通过拖拽一些组件可视化布局活动页面,后来就跟老板提出了这个想法,老板就拉我一块做这个项目的开发了,当时我负责前端页面的开发,老板负责数据存储方面的架构。
后来才发现,其实京东的页面也是用类似的方法实现的,每一个组件有一个data-type,例如商品列表,就叫data-type="productList",管理员在编辑器那里鼠标点击编辑区域,就会弹出选择展示的商品,
就这样,老板收客户一个页面三个人日,我们开发基本就两个小时搞定。
嗯,果然,脑子是个好东西。
第一次加薪
作为一个私企,你不提加薪,老板是打死也不会给你加薪的,到了年底,刚好工作满一年,当时就想HR申请加薪,因为刚工作,也不知道应该开多少钱,五年前一年经验的java工程师,薪酬也就四千块吧,然后掐指一算,提出加薪一千五的想法,因为当时转正已经从四千五提到过六千了,结果当然是老板爽快的答应了,就这样拿了7500的月薪又干了一年。
离开公司
工作了三个年头,经验技术都有点积累了,但是总觉得不断的在重复,学不到新的东西,而且公司加班严重,记得外派去深圳的时候,每天都要加班到晚上九点才能回去,重点是加班这么晚不是因为忙项目,而是要做样子给别的公司看,感觉我们都很忙,当时就决定要跳槽。老板为了挽留,开出25K的薪酬,但是我觉得这样下去对自己职业发展很不好,所以毅然选择离开。
感恩
其实对于第一份工作的选择,我后来回想起来,觉得是非常正确的,因为这家公司是一家乙方公司,客户的需求非常多,这对于初期技术的成长是非常有利的。同时也感谢以前老板的培养,老板是一个不折不扣的程序员,他的技术能力我是很佩服的。但是在管理上他并不关注,导致公司没有良好运作,经常一些项目他都是要自己通宵撸代码交付给客户。