杂谈:关于程序员职业发展的两三事
首先一首音乐送给大家,祝大家能够突破自我。
好吧并不让插入flash ,那么直接贴网址吧
https://www.bilibili.com/video/av1286380/index_134.html
每个人都会有错误,但是要从细节中找寻自己的错误。
对于程序员来说,错误要么就是很容易就找到,要么就非常隐蔽。
首先就是发生在我自己身上的事,公司周五下午有一个职场礼仪培训,然后老师让我总结内容,我立刻尴尬,说话结巴和忘词了,当着全公司面出丑。。。。
好吧,虽然现在想起来还是很尴尬,但是作为程序员一定要学会如何总结自己的错误和他人的错误,这里我就先总结一下自己犯下了哪些错误。
- 没有认真听讲和记笔记
- 没有在人多的场合讲话的经验,说白了就是对应场景的经验太少
- 开小差,其实和第一条差不多,但是含义是不一样的
那么先是第一条,我总结了一下,老师首先说的是职场穿着,之后是如何与老板交流,欢迎客户,与客户交流,介绍领导,送走客户等等,现在我大概也就记得这些了,具体操作老实说没有经过练习或者真的记录笔记,我是绝对不可能还记得的。
那么为什么说我犯了错误呢,因为对程序员来说,除了穿西装之外的场景基本不太可能出现,甚至穿西装来说,我不觉得大部分公司会强制要求程序员穿西装,所以我对于这部分没有认真听,导致了被老师叫到之后当众出丑。
然后说为什么是犯了错误,假如老师最后没有叫我总结呢?这里有个误区就是并不是没让我总结就不会犯错,其实应该感谢这个老师让我犯下的错误暴露了出来,那就是这些套路,其实很有可能会用到的。
假如我之后创业,如果没有学会这些套路,至少会见客户的时候,就不会意识到哪些动作是犯忌,哪些动作是会让客户不舒服的。
接下来是第二条,因为没有当众讲解的经验导致忘词,或者说忘记之前的内容(虽然我也确实没认真听),这方面暴露出来的问题就是我的临场应变能力不足,做事不专心。
我做事确实很容易分心,这是事实,所以我决定找一个能磨练意志力的方法,之后分享给大家,其实我觉得我每天坚持上下班骑自行车24公里已经很磨练人了(偷笑),这个暂且不表,说一下临场应变能力,这方面的能力确实是我欠缺的,因为我学习经历来说,可以说基本不会有用到这些内容的情况,我毕竟不是正规大学毕业的,这个缺点是要认清,相应来说不会有面对比较多人的情况,我个人觉得因为我没有记笔记的原因导致我会忘词和紧张,因为我的性格就是谋定而后动,面对突发情况应变不足。
最后是第三条,第三条可以说是面对同事或者说是(职场中)我最应该关心的问题,就是自己露出了某些破绽导致同事(或者其他人)攻击而让自己出现损失的情况。
解决方案也很简单,就是绝对不要露出破绽,但是我要告诉大家一个信息,就是每个人因为成长生活经历,或多或少都会露出一些问题而自己却什么都感觉不到,反而认为很正常,那么这个时候就要正确认识出自己露出的什么破绽,否则就是很危险的事情。
比如我说个例子,财务大家都懂,如果财务贪小便宜,那么问题就大了。
这里再说一下我遇到的程序员的问题吧。
- 职业规划
- 工作态度
- 代码质量
先说这三点,以后有机会再补充吧。
职业规划问题,我可以说,我遇到过的程序员,百分之百都是完全没有职业规划这个概念,而其中百分之九十,说的是代码干不动了就去做管理。
这是非常有问题的,我就先不说管理好不好干,而是管理职位总是比程序员少的,同时每个人管理水平有好有坏,好的公司又只有那么多,作为一个程序员如何使用十几年的编程经验去和别人十几年的管理经验相比呢?
问题就处在竞争和个人水平上,如果干不过别人,继续回去做程序员吗?
这个时候就要有一个至少是存在的职业规划,我说的意思当然不是说写代码写不动了就去做管理,就算目标是管理,也要有这么一份职业规划,规划自己在什么时候学习管理知识,什么条件下转管理岗位。
当然我作为程序员才入行1年多,这里还是请大家多网上查查其他人的博客帖子,就我目前来说给不了大家太多的意见,当然也可以给大家一些小建议。
首先就是任务分解,例如目标是入职微软,那么分解目标就是先学会英语,至少要达到能够自如和外国人沟通的地步,这一步可以报班也可以花时间自学。
然后是数学,数学水平我个人觉得至少大学本科一下的,至少要能够在网络的帮助下使用。
最后是算法,微软面试的算法应该不是很难,算法导论学会后,看一下微软面试经(大概就是其他人的面试经验和面试题),虽然面试题不太可能重复,但是至少要知道大概流程,同时要确定面试流程。
还有就是我上面说的,最好找一个同样是微软或者也是相同等级的大公司人员先预演一下,我相信他们也应该乐于这样,或者说花钱让他们给自己做一些咨询服务也可以。
大概就是这样吧,核心内容就是分解大目标,规划小目标,规划到以天为目标,比如上面说的学英语,下班回来后,学10个单词,复习昨天的10个单词,算法导论看3页,复习昨天看的3页,这样积累下来,不用特别长的时间,就有显著的提升,当然得坚持。
然后是工作态度,说工作态度,就是不要以得过且过的态度对待工作,我记得郭德纲一直说,相声这一行,门槛在门里面,有的人进来了再出去舍不得,你也是艺术家,我也是艺术家,大家凑合凑合得了。
这一句同样适用于我们这一行,甚至可以说程序员的入门要求比相声低多了,相声还有卖不出票的时候,程序员只要入门了,至少不会上街要饭。
而我要说的是,如果看到门槛就躺下不动了,职业生涯很快就会遇到瓶颈,甚至有的人不理解,我给你这么多钱,你为什么要走,为什么?对我来说就是技术得不到提升,所以我走了,不是很简单的事情吗?
现在的网站开发,小公司的项目,有几百个人使用已经很不得了的事情了,几千上万已经可以融资了,在这么小的数量级下,所需要的技术并不会很高,大部分人就一辈子烂在里面了,即不提升技术,又懒得动脑子,一年的经验用了十几年,之后就转管理,有什么用?
所以我希望大家和上面的职业规划联系起来,程序员的 dry(don't repeat you self)原则,不要忘了,在有能力的情况下,寻求突破吧。
最后是代码质量。
说到代码质量,我觉得一大半是代码风格,一小半是debug 能力。
这里的第一也是唯一的原则,还是 dry 原则。
然后就是 语言的风格,我看过好多代码,如果没有能力优化自己的代码,那么就
Convert.int32(sId);
多写注释吧。
这里说一下细节,就是尽量遵守语言的风格,比如java就是小驼峰,c#虽然也是小驼峰,但是其中接口就使用了其他的风格,私有变量也是其他风格。
我看过有的人c# 风格,大写,小写,下划线风格相互使用,这种是非常讨厌了,自己看着累别人看着更累。
还有就是不要做多余的操作。
这里给大家演示一下:
int id = int.parse(Request["id"].ToString());
大意是这样,我要说的是这里ToString 是完全没有必要的,而且直接转换如果转换空引用是会抛出异常的。
建议是这样:
string sId = Request["id"];
if(sId != null &&! sId.IsEmpty()){
int id = Convert.ToInt32(sId);
//做其他的事。
}
我入门时间也不长,但是我知道一个道理,就是能使用别人的框架,就尽量使用别人的框架,为什么?
因为我不认为自己写的代码比别人的好。
至少现阶段对我来说,自己实现的代码,确实不如别人,当然照着别人的框架造轮子又是另一回事,但公司项目中,在范围内使用别人的框架,而且尽量使用最新版。
1节省时间,2减少错误。
当然还是具体事例具体分析,如果没有这样的东西,那也只能硬着头皮自己造了。
当然上面扯远了,良好的代码风格,能节省很多时间和精力,还有是测试,这里建议大家了解一下 TDD,(如果是网站开发,给每个Controller的 每个方法创建一个单元测试。)
关于网站开发的经验,大家可以看一下我的其他几篇随笔
我的工作生涯中关于项目的需求和功能分析(论坛项目)
我的工作生涯中关于项目的需求和功能分析(保洁公司项目)
我的工作生涯中关于项目的需求和功能分析(房地产项目)
总之希望大家能够从中学习到东西,如果有意见可以提出来。
结尾再推荐一首音乐,风格是迷幻电音。