前天和大学的室友碰了一面,交流了很多东西。因为一起在深圳打拼,很多时候,两个人就一起交谈,谈谈最近的生活情况和工作感悟。下面总结一下我俩交流的信息。
最开始的两三年,是学习的黄金时间
程序员刚踏入工作,是自己成长最快的时候,是自己最能够学东西的时候。因为那个时候,对技术有着痴迷和热爱。我们都认为前面一两年,学的东西特别多。那个时候什么都不会,每天被逼着去学习以前大学没有学过的东西,经常加班加点的做事学习。
也是有一股冲劲,希望通过自己的努力收获更多,从现在的结果来说,彼此进步都很大,现在想来也觉得很幸运。如果当初得过且过的过了一两年,那么现在的结果可能就不太一样。
虽然程序员是一个持续性学习的职业,但是真正打基础的,却是最初的两三年的时间。之后,自己某方面的精力是跟不上了的。比如要处理更多个人或者家庭相关的事情,更多非技术上的事情。
不是所有的人都能够持续性的学习,过了一段时间,学习变得异常困难。如果刚开始不将基础打好,后面再像学,就很难了。
我们看过四五年的程序员,如果一直都是得过且过的,当一天和尚撞一天钟,混过了四五年时间,虽然经历的项目很多,但是真正体现技术的东西就很少。而且基础尤其的差,很多规范不参考,很多显而易见的错误不知道。
不能因为程序员是一个相对工资高一点的职业,就能够喜悦,和从事其他职业一样,积累工作年限就可以了。互联网公司竞争非常激烈,更新换代尤其迅速,跟上不节奏,掉队了,那就对不起,可能真的很难在搭上这趟车了。
最初的两三年是很关键的,有学习的热情,有拼劲,有还没有被社会污染的心境。必须得利用好这两三年的光阴。
遇到一个不错的师傅很难得,他能带给你很多东西,但是这样的机会很难得
刚开始入门,可能都会有一个师傅,带带自己。而能够遇到一个技术大牛,并且愿意帮助自己的,那真的是非常幸运。我和我朋友就是幸运的人,在刚入门的时候就都碰都一个不错的师傅。
我们进步的这么快,有一部分的原因要归功于这个师傅。在师傅的指导下完成工作,对我们的严格要求,提出改正意见,指导一些工作上的方向。也是他让自己能够在程序员这条道路上走的更远。
我和朋友都感叹,如果不是因为遇到师傅,或许在接下来一段时间里面,自己对于现有的职业,就会产生怀疑,怀疑自己是否真正适合做程序员。
遇到这种贵人,很难得。
一切需要自己观察,去学习,去总结
很多事情都需要自己去观察,去总结,别人不可能一直帮助自己。如果还是习惯性的认为,依靠别人解决问题,习惯性的被灌输,那么自己就永远的都学不会该技能。
大部分的东西都得靠自己,有什么问题,都必须得自己去找解决的方法。但刚开始,自己肯定是什么都不知道的。那么就需要去观察别人是如何做到的,别人是如何找到解决的方法的,然后总结,形成自己的东西。
有一定工作经验的人,他们总会有一些技能能够快速解决问题。比如他们搜索问题时,去哪个网站上找解决方法。他们解决问题的流程是什么,从查看日志开始,然后百度搜素,最后跟踪代码。
一种无形的技能,是别人习以为常的东西,但是对于不会的人来说,就是自己需要学习的技能。
细心观察,努力的执行。除了观察总结外,还需要最后的执行。别人是改掉自己以前的错误的习惯,才能形成现在的习以为常。习惯了一种模式,要更换这种模式,就异常困难。毕竟仅仅知道了好办法,如果不最后执行,也是枉然。
别人的帮助不是天经地义,需要感恩
别人的帮助不是天经地义的事情,需要懂得感恩。
不能因为他是我领导,就有义务帮助自己。不帮人是本分,帮助你是情分。谁的时间都宝贵。
不是经常能够看到,别人帮助了自己,但是认为这是应该做的。这是你的义务。因为帮助了我就让你道德高尚。
在这个社会上,没有人的帮助是义务的,别人也可以选择不帮助。帮助你是想结识一段善缘。
除了语言上的感恩外,有时候需要体现在实际行动中,偶尔请别人吃顿饭,或者是带点小礼物。有这份心意在。别人也会感受的到。
转变思维
经过两三年之后,可能遇到一个瓶颈,可能成长变慢了,这个时候需要转变思维方式,学习写代码的技巧或大牛的思维方式。
我和朋友都觉得最近学习的速度下降了,学习的时间也变少了。并且感觉到了一个瓶颈期,就是初级的知识都了解了,但是更深入的知识却太难学习,导致我们认为自己学习速度变慢,遇到瓶颈了。
但我们都认为,以前的学习方式要转换一下,因为我们现在都认为,除了技术,还需要是经验的积累,而这种积累会随着工作的年限正常而不断增多,并且会成为之后的价值。
-
多用工具简化自己的工作,代码的测试以前都是编写代码测试,是否可以用上已经有的工具去测试,节省自己的时间。
-
学习写代码的技巧,多用业内总结的技巧优化自己的代码,如设计模式。有一个简单的例子,状态的变化,一般情况下设计出多个常量值,然后根据不同的值进行演变,但是如果利用二进制的方式,仅用一个字段来标识,对这个字段做与或非操作,就能知道状态的演进过程。
定义四种字段 00001 : 初始化 00010 : 支付中 00100 : 支付超时 01000 : 支付失败 10000 : 支付完成 00001 | 00010 == 完成初始化并且在支付中, 这种状态方式来表示流程
在比如有特别多的if esle操作,每次操作都选择一个值或状态,特别多的if else 看起来特别的槽糕,如果将其设计成数据,并保存到数据库中,一条sql语句就能够完成,很轻松的完成任务。
-
大牛的思维方式考虑的东西更全面,比如在涉及到并发的情况下,该操作是否存在安全问题。比如在代码是否存在更合适的写法,而不是存在大量的重复代码,是否可以用上设计模式,让代码更清晰,同时然后续的编写工作减少工作量和难度。
在程序员这条道路上还有很多东西要做,还有很多东西要学,既然选择了,那么就风雨兼程。