程序员蓦然回首——记2013年的那些小事
又到总结一年成果的时候了,在这过去的了365天的时间里我经历的不少也不多,踏入社会的第三个年头先是经历失业,然后边学习新技能边找工作,最后回到老地方继续code 4 myself。一切像兜了个圈,回到水平的原点,但高度已经不同了。
我喜欢用爬楼梯来形容人生,有的人很幸运可以坐上观光电梯,只要轻轻地按下按钮即可轻松地站在高处看风景;有的人运气不错遇到一条笔直的楼梯,虽然没有电梯那么舒服快捷,但可以看到终点,只要使劲向上爬就可以了;有的人悲催一些,就只有一把破烂的扶梯,自己搭自己爬,爬到哪搭到哪。但我觉得大部分的都是在爬旋转楼梯,也许我们走了很久很久后发现自己居然回到了原点,然后毅然决然地去找另一个条楼梯,希望能一路平坦,但下个也许还是旋转楼梯,于是我们迷失了、失望了。其实虽然我们一直在转圈圈,但回到下一个原点的时候我们所在的高度已经不同了,也许你的楼梯半径小爬的周期短,也许我的楼梯半径大爬得慢,但只要努力爬一定能看到不同高度的风景,更何况前期用心地积累能改善你的楼梯特质呢,也许后来它就成为观光电梯了。好吧,我的大条道理就说到这吧,下面真的要总结一下了。
失业
年初,跳槽频繁的我居然失业了,虽然没有太多的经济压力,只要省点熬几个月还是可以的,但这让我开始思考如何在佛山生活下来。首先佛山软件公司太少了而且规模相对较小、待遇偏低,勉强养家还可以,想靠自己给首付?等下辈子摇号吧。然后是软件公司少直接降低对软件方面的人才需求竞争,可以预见未来2到3年内软件工程师待遇不会提升多少,虽然某公司工程师缺口颇大但待遇问题无法找到人才,这就是一个恶性循环。我想应该要有第三只手的介入,从政策从基础设施持续有效地入手才能改变现状了,之前听说顺德建设数据中心的事,起初还挺期待的,现在似乎是雷声有点大了。于是我决定尝试学点新东西——学习SAP,在这里我要衷心感谢我的大学同窗A鹏同学,那半个月的时间里每天晚上为我解答ABAP的问题,虽然现在已经完全不碰它了,也忘记具体的操作了。(在此祝愿A鹏新的一年找份好工作,找个靓媳妇吧!)在学SAP的过程中我也投过N份简历,有软件开发的、有ERP系统管理员的,就是没有SAP的,因为佛山就只有一家某摩托车公司招ABAP,其他都是SAP业务方向的内部资深顾问。于是这让我再思考SAP是否是正确的方向呢,后来决定还是先找份软件开发相关的工作养家糊口,再考虑学习SAP的事吧。
找工作
在各大人才网站投了N份简历,全部石沉大海,那个时候我心碎了,因为我从来没想过我的简历有这么不吸引人,连笔试的机会都没有,后来证明我的简历还好,只是未到企业招人的季节而已。于是我就先后去了联通、国信、毕马威等公司应聘。
联通:国企啊,稳定啊,福利待遇好啊,这些是我去笔试前对联通的憧憬,好吧这确实只是憧憬而已。到达联通佛山分公司时第一感觉,前台MM挺漂亮的哦,还清一色用某苹果手机,果然是联通的。然后让我大开眼界的他们的内部员工都是西装革履的,连开发人员都是这样。下面说说笔试,联通的笔试是我做过最实际的和写最多字的,没有所谓的语言基础、算法设计等,直接给用户故事让你写代码(注意是笔+白纸写代码)。其中一道题我印象特别深,那就是设计并开发现场抽奖的应用,刚好之前帮移动团拜开发了一个相同的应用,于是挥笔如流,但它其中一个需求让我停下来了,那就是当应用突然因停电等原因导致异常退出时,如何保证应用重启后自动恢复到之前的状态。这是在移动团拜抽奖应用中有粗略设计但没有认真测试的一块,那刻我开始回想之前的设计是否合理是否能万无一失,也反思自己设计得如此大意。
两个多小时的笔试过后,考官稍稍看完答卷后就进入技术面试阶段,面试我的是技术部的三位大佬,他们不聊技术,聊了一下我的职业生涯计划。其实我对聊职业生涯计划很反感,因为我的眼光最多只看未来3年,职业生涯不是计划出来的是做出来的,用2到3年的时间把现在的工作做极致,后面的自然水到渠成,职业生涯也就这样一步一步搭出来了,所以需要的不是职业生涯计划,而是职业生涯起点。(纯个人观点,不喜勿喷)然后技术面试过了,然后安排了HR面试,最后是老总面试。因为对联通的企业文化有保留,所以电话确认HR面试时我直接决绝了。不过这次联通之行也让我明白到个人能力中技术是一部分,个人的综合修养是一部分。
国信:它的技术部主管和HR是唯一一个看过我技术博客的面试官,然后笔试就直接pass了,那时我真的有种受宠若惊的感觉,然后经过大半个小时的面试闲聊后我确信这已是囊中物。国企啊、稳定啊、福利待遇好啊,国信全中了,但最后我宛然谢绝了,因为那时我看不到他们对技术、对产品的激情,这不是我想要的。(现在后悔了,呵呵)
毕马威:全球四大会计事务所,可谓高大上。笔试在广州天河城,第一次去这么华丽的办公楼,站在四十多层看天河区噶感觉果然不同。毕马威的笔试题是我遇过最离奇的,全是逻辑思维题,直到交卷那刻我也不知道它想考我什么。后来因为它招聘周期太长,预约面试时我已经上班了。对于它我只能说待遇确实十分吸引人,加上是欧州外企,管理和制度方面你懂的。
其他公司:有电话面试就拒绝我的,也有笔试面试后拒绝我的,也有自己觉得不合适婉然决绝掉的。经验是应聘是一个双向选择的过程,谁都不求谁,只要坚持和真实地展现企业需要的实力,你的需求还是可以基本满足的。应聘的过程也是一种验证自己是否与外界脱节的过程,可以提醒自己还不够好。
回到原点
回到原来的地方有种物是人非的感觉,不过生活就是这样,有些事不是你不希望就不会发生的。回到原来的地方心态有些变化,像老乔说的那样“听从自己内心的呼唤”——为自己而工作,而不仅仅为那点生活费奔波。我希望拥有这样的一份工作,it’s sexy。能为每天的工作内容而兴奋,每晚都如此地期待明天的工作。而现在的工作还未到sexy的程度。但我开始明白如何让它sexy的方法了,提高自己对工作的要求和对产品质量的追求,走出舒适区才有可能sexy起来。 失去与遗憾 有时会讨厌长大,因为时间会夺走身边好重要好重要的人,也许珍惜眼前人是我现在唯一能做的,而对亲人的思念永远不会停息的。
阅读
今年读书太少了(虽然一直都很少),就看了《Extjs first look》、《coffee script深入浅出》、《nodejs深入浅出》、《别告诉我你懂PPT》、《.NET网络核心编程》,其余都是在网上看技术文章、FQA等碎片化知识,和技术教育视频。在看这些信息时真心发现英语水平有待提高,文章还好,一旦遇到视屏无字幕我就悲催了。说起英语,年初尝试翻译《Extjs first look》这本书,得到了大伙的认可十分开心,而最后一章的翻译已经拖了一年了,有朋友问啥时候出,我想说暂时都出不来了,因为最后一章是将MVC的,而我现在对Extjs的MVC框架无论是使用的熟练度还是理解都不深,翻译出来的质量不是我想要的,所以先搁置一下,若对此有深入体会的咱们多交流吧!
身边的她
她当然是指我身边那位美丽啦、善良啦、可爱啦,最重要是我离不开的妻子啦,和她在一起是一件非常愉悦的事情,可以无拘无束、完完整整地做自己,也能无后顾之忧地向前迈步、不断尝试成为一个更好的自己,我想这就是我这么喜欢和她在一起的原因吧。也许也只有她能接受、理解一个整天对了代码和技术的我,老婆来年我们会过得更好的!
来年的期许
首先希望大家都身体健康,身体是本钱,好身体后面才有戏。然后是工作顺利、生意兴隆,过得开心。
PS:技术篇
也许下面大家会看到好多以lpp开头的库命名,那是我调皮、刁蛮而又可爱、贴心的女儿的名字缩写,我希望我的工作就像我的女儿一样让我如此的自豪。
1. lppExt
lppExt是在Extjs4.1框架上进行二次组件开发的,目的是加速业务系统80%的功能的开发进度。根据经验大部分业务系统有80%的功能是相似的,只有20%是逻辑各异的核心业务处理模块,而Extjs仅提供粒度较小的组件,且开发难度大,所以希望组装出粒度更粗的组件,简化编码过程。终极目标是ctrl+c then ctrl+v, is over.
经过一个多月噶努力终于完成了lppExt.0.3.0,并且应用到佛山六中网站后台和移动的IT知识库第一版的管理后台中,整体效果尚算可以,但内部代码过于臃肿难以维护,后来同一位专注于extjs控件开发师弟交流,终于发现问题的根源,没有充分理解extjs的架构,没有从内部出发,仅仅在原有的组件上加一层封装,代码不臃肿才怪呢。可惜后来IT知识库工作被移交到另一家公司负责,并且又有新任务要处理,lppExt就停留在臃肿的0.3.0版本了。
2. lpp.LessSQL
看名字就知道该框架与数据交互层有关的,没错它就是一个非常轻量级的ORM框架,提倡的是“少写SQL活得更快乐”,鼓励在设计实体模型时就确定将对数据表的操作,因为不合理的表设计会在该方式下显露无疑,从而优化表设计和降低项目后期维护的难度。现在lpp.LessSQL支持对MSSQL和SQLite的数据表操作,支持SQL语句缓存。经过2次版本修改后提炼出内核模块,使得追加Mysql等数据库的支持变得相当容易。后来应用到移动发布更新管理平台上,确实大大减少SQL的数量,但也发现很多功能需要修改和添加,性能还有待提高。
3. lpp.Monster
最近一直在开发lpp.monster,它是移动硬件生命周期管理系统的信息图形化前端模块,现在处于第一版。用到了很多好玩的框架和技术,代码版本管理上用了Git,私有代码托管用了腾讯微云,模块依赖关系管理和模块加载器使用seajs,合并、混淆、发布当然用spm了,模板引擎使用handlebars,DOM操作库必须是jQuery的,文本编辑器用了vim。感觉开始有点工程化了,相对以前的手工作坊式开发,感觉更实在了。在开发该版本时,因找不合适的URL Routing库所以自行写了个lpp.Router解决,现在仍有性能上的问题,代码质量还有待提高,但基本能解决现在的需求。
在使用handelbars时让我感触挺大的,因为之前在选择模板引擎时一度觉得handlebars无法满足我的需求,在经过一轮模板引擎的筛选后依然找不到理想的引擎后,我决定自己写一个命名为lpp.19的模板引擎,并应用在lpp.monster的0.1.0版本中。但随着需求的增加,lpp.19的功能和效果已经与当初的设想相距太大了,于是重新考虑handlebars,这时发现原来它恰恰是我想要的,而它无法处理嵌套函数的用法对我启示是最大的。首先,模板引擎使用嵌套函数是愚蠢的,从性能上javascript是低效的,模板引擎就更低效了,杜绝模板中的嵌套函数是提高应用性能的基本手段;然后,嵌套函数在模板中显示十分丑陋、臃肿并且大大提高调试的难度。但最大的启示是下面两个:1.框架或库好不好用,要看3点,一框架本身的设计,二其周边如文档、社区的建设,三使用者的水平和要用它解决怎样的问题。每个框架或库都是设计来为特定的问题域提供解决方案,一个框架解决所有问题是不可能的,所以选框架时要确定自己面对怎样的问题,然后充分理解框架的功能和性能后选择部分或全部来使用,最后就是我喜欢的研究方式From the top,2 the deep,从底层理解框架;2.框架和库是不同的理念,库是提供基础功能,简化开发过程,至于如何使用全靠使用者自行决定了。而框架是面对特定问题域提出解决方案,重点在于约束和规范化,遵循少即是多的原则,如handlebars若支持嵌套函数,那么当初我一定会下嵌套函数这个坑。
4. 发布更新管理平台
这是我第一个c/s模式的winform程序,最原始的需求是规范化应用系统的更新、发布流程,后来还追加了服务器信息收集、系统密码修改等需求,使得当初设想的单一功能性软变更为平台性软件(可惜现在一直没时间开发这些功能)。说起c/s模式当然少不了网络通信,这里选用的是remoting作为基础设施,一个10年前的技术,够古老了吧。为啥不用socket或wcf呢?为什么用winformn而不用asp.net或wpf呢?这又涉及到技术选择的问题了,其实选择怎样的技术栈大概受这几方面的影响:1.需求,因为该软件涉及大文件传输、服务器信息采集等的问题,采用b/s模式会受中央web服务器的限制,性能和功能实践上都大打折扣;2.生成环境,据我了解wcf占资源较多,而这软件要尽量少占资源;3.团队的技术水平,因为我之前对remoting有一定的了解,加上remoting相对socket和wcf来说使用成本和学习成本较低;4.项目周期,只有时间充足上述的学习成本,使用成本全不是问题,可是时间本身就是问题。
这个项目让我真实地感觉到架构设计,其实之前手上就本关于架构设计和设计模式的书,但我并没有兴趣学习,因为觉得自己这点工作积累还未到做架构设计的份上,还是安心做个纯码农吧。但这项目教会我有机会就要学,用心的学,以后准有一个时间点能用上。
5. 六中门户网站
关于网站的情况就不多说了,不过它真真切切地提醒了我一件事,离开.net你还能开发吗?我们不能忽视xp的存在,不能忽视你的生产环境也许是低性能的,而.net framework对操作系统的粘合度太大了,而且web容器的选择太少(也许是我知道的太少了),学习.net之外一门比较轻盈的web应用解决方案,我想是有必要的。
这里我想延伸到java和.net之争,上招聘网站搜一下,java工程师的待遇普遍比.net工程师高,看一下国外大牛子在选择解决方案时的建议,“不清楚想要怎样的解决方案,那就用.net吧”,大家可以发现.net工程师一般都被人鄙视,这都怪微软将.net做得太好了,提供一套完备的解决方案,使得大伙想都不用想,只要跟着走直接堆代码就可以了,那也是别人误会.net工程师没有技术含量,只会拖控件的原因了。其实你以为java工程师不想拖控件吗,只是没有这么简单的控制可以拖而已啦。当然因为微软把.net的技术栈做全了,一般开发人员就懒得考虑技术选取、架构设计等问题,也懒得理解底层原理和尝试设计自己的框架,甚至连一些基础的知识都忽视了,如仅用文本编辑器如何写C#并运行起来。而java不同,天生开源,开源意味着使用的过程中需要不断地作出选择和适当的裁剪。微软对终端用户来说是美好的,但对于技术人员来说是无益的,因为它使得开发人员容易忽视底层。当然这一切还是要看人本身,像java也有固定的ssh解决方案,假如不切入内部去学习其实跟无思考地用.net的技术栈工作无太大差别。如老赵、OSGi.Net项目团队等大牛们那样深入语言、框架底层,并设计和完成自己的框架梦,那是我向往的。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5483.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
