优秀的人,人人都能看到他们的光芒,走近了,才看得到,他们值得拥有光芒。每次看到这位前辈的总结都会有新的感触,说不上深有体会,却总是会有意识的提醒自己。
虽然是关于Android的开发总结,但是我觉得同样适用于从事各种编程开发工作的人,以下为这位前辈的开发总结:
最近几年的编程总结
1。 客户端的功能逻辑不难,UI 界面也不难,但写 UI 花的时间是写功能逻辑的两倍。
2。 写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该功能的运行过程写出来。
3。 要有自己的知识库,可以是一个工具类,把写过的,看过的好的代码放进去,也可以是一个笔记本软件。因为只有放在知识库里的东西,才是你最重要的财富。
4。 如果你想做自由职业者,你需要学英语,因为在国外的盈利比国内多很多。如果你想进大公司,好公司,你需要学英语。你想深入学习 android,但中文的 android 文章太少了,你查查百度,到处都是 copy 来 copy 去的 hellword,所以,你需要学英语。如果你想出国,你需要学英语。
5。 Http 协议要研究透彻。http 的信息头有什么信息,分别代表什么,信息体有什么信息,代表什么,都要搞的明明白白。scoket 也是一样。
6。 在 eclipse 里的 layout 文件都有 graphical Layout。这个好好的把 UI 调整好。
7。 Android 里的 junit 每次运行都会打包新的 apk 到设备上跑,效率非常慢。是跟 android 无关的测试,最好自己建立一个单纯的 java 项目做测试。
8。 面试的时候不要觉得自己提的薪水太高,物以稀为贵明白吗?不管你的期望薪资多少,都有可能实现,这只是时间问题。
9。 如果一家小公司通过猎头找到。不要觉得公司不行,担心会倒闭。放心吧,至少活 1 年是没问题的。
10。 不要把自己绑在 android 上,有空也研究下 IOS (最近小弟就准备研究 ios,刚买了 6 本书。)。
11。 移动互联网最少还有 10 年的快速增长。android 最少还有两年的快速增长,走 android 这条路是不会错的。
12。 有空多学点开放平台的 SDK。比如新浪微博,腾讯微博,淘宝平台,支付宝移动支付平台,快钱移动支付平台等等。这些都是不愁没市场的。
13。 即使技术再差,也要发布一个应用到 market 上去,因为这样你才了解做一个应用的逻辑。
14。 每个月拿到薪水省 500-1000 元出来。这些钱投在买学习资料,去培训班上课。在培训班,花再多的钱也是值得的。
15。 你真正的价值在项目经验和对底层的认识上,不要忽略基础知识。
16。 如果有空把 Android 的源代码看一下。底层的东西很枯燥,但这些很值得学。
17。 程序员其实是艺术家。代码重构和设计模式,是非常非常重要的东西,必须要学。
18。 不要去维护一个项目,要去做一个项目。
19。 一开始不要轻易去大公司,虽然大公司是可以让你呆一辈子的。但你的起点低,以后成就也低。
20。 每天早上提前 20 分钟上班,5 分钟把今天的工作计划写好,15 分钟用来看各大 IT 论坛的新闻。
21。 如果以前没做过 java,那就把 SSH 看下,自己搭建一个小服务器。这是为了接私活用。
22。 PS 一定要学,接私活用。
23。 多下载市面上好的应用,每天都用,只有这样你才能了解市场。现在所有的APK都可以反编译,看源代码麻烦,但看 layout 和图片很容易,所以。你懂的。
24。 要有羞耻心。
25。 老板仅仅要求你把东西做完,需求完成。但你必须对自己要更严格一点。写一段代码,从网上复制一份代码,并不是可以用就行了,你还必须明白他的原理,为什么这样就可以?这才是对你最有用的地方,这也是你今后薪资增长的保证。
26。 要懂得舍得。移动领域发展太快,必要时必须要用钱换时间,不然你会远远落后别人(我之前花了 4000 大洋去培训班学 IOS 三天)。
27。 要明白自己想要什么,什么才能最大性价比提高你的能力。对我来说,能让我提高最大的,就是 Android 和 IOS 同时会,并且自己可以做架构设计。
28。 看 android 技术书籍最快的学习方法,先通读一次。然后把书本上的 demo 一个一个写出来。不要觉得太容易不去写。很多东西都是这样,看起来简单,但做起来难。最后再对照自己写出来的程序代码去理解书本的意思。
29。 应用和游戏是 2 个方向,没有一个公司会同时做游戏又做应用,即使是外包公司,大多也只做一块。专精一个就可以了。
30。 每次做完一个项目,要强迫自己做总结,通过这个项目,我学到了什么新技术?犯了哪些 SB 错误?
31。 去中小公司面试的时候,要问两个问题,第一有没有财务部,如果有正式财务部,那肯定是正规的,不要担心欠薪问题。如果没有,就说不准了。第二,有没有测试人员,如果没有说明不规范。对项目来说,测试人员是非常重要的,是项目质量的保证。
32。 大家拿到 offer 后都希望能看看是否还有更好的机会,这没错,但是要注意 offer 的有效期。一般中小公司的耐心只有一周。
33。 自学的效率总是低于做项目的学习效率。这是因为没有驱动,所以如果工作很闲,那自己就去接私活,或者自己做一个应用发布出去。利益的驱动会让你进步更快。
34。 Android 的 api 涉及到很多方面。很多知识只要不用,不复习就会慢慢消失。所以每隔一段时间的总结和复习是非常必要的,建议每个月必须进行一次不短与 1 小时的复习。
35。 如果 2-3 年以后你还是一线程序员,那对你来说最重要的不是技术的提高,而是身体健康的提高。建议工作 2 年后,有点余钱要投到健身上。
36。 人的关注力总是会起伏不定。一个项目,或者一个学习目标,在坚持一段时间以后总是会松懈,偷懒。避免这种情况的最好的办法,就是隔一段时间内做总结。比如三天,或一周。
37。 有 1 年以上的工作经验,大家都可以成为架构师。即使是小型的移动 app,如果事先写好简单的架构设计,会让你轻松很多。这种效率等同于我之前所说的”写代码前思考过程很重要”。
38。 要养成正规的编码习惯,如果公司没有编码规范,那最好写一个自己用的 Android 编码规范。
39。 代码复用和重构是非常必要的习惯。但这只是针对非业务逻辑,如果是业务逻辑,那就尽量少复用。
40。 周末没事就去参加一些免费的沙龙,讲座,一来拓展下知识面,二来认识更多的人,程序员每天一直呆在公司,仅仅透过网络你无法深刻感触外在世界的变化。顺便说一下,貌似很多老板都是在这里找到优秀员工的。你所要付出的仅仅是路费。
41。 每两个月啃掉一本书并不是很难的事情。
42。 如果工作很轻松很闲,那你要加紧把握现在这个机会,每天给你钱让自己去学习的机会很少很少。
43。 如果把程序员比做工地建筑工人,技术领头人比作包工头,架构师比作建筑师。那么当你写代码前不做任何思考的时候,那你就是建筑工人。当你有意识的把代码规范,设计模式这些东西运用到项目中,并严格遵守游戏规则,那你就是包工头。当你开始制定游戏规则,开始考虑到产品使用者,产品生产者等各种涉众的利益的时候,那你就是建筑师。
44。 人的信心是非常强大的力量。自不量力的人比量力而行的人成就更高。
45。 代码是否优美,是否整洁是难定义的。我的一个简单的量化标准是,一个类代码在 600 行以下就可以了。
46。 你要有这样的觉悟,项目出了任何问题,都是你的责任!没判断null?那是你的错。切错了?那是你的错。产品上线不了?那是你的问题。产品销售不给力?那是你的问题。你必须学会要用一种积极向上的思维方式来看待这个世界。任何问题,都是你的错。
47。 很多人都说程序员聪明,其实我们自己知道,我们只是单线程生物,我们习惯把复杂的事情拆分成许许多多零碎简单的任务,然后再一个一个处理。
48。 多个项目同时进行的时候,你必须要有一套自己的时间管理(可以写在本子上,写在日记里),同时最重要的就是控制好你的情绪,只有这样,你才能在你预期时间内完成任务。
49。 尽可能的早起,让你有一段不受打扰的珍贵时间。
50。 你可以抱怨工作中用的技术太杂太陈旧,但不能消极对待。在任何项目中你都可以学到东西,就看你是否主动。
51。 不管你今后的方向是技术还是产品,工作中你都要站在客户的角度上编写代码。你刚掌握或了解到的新技术,并不是马上用到工作中。
52。 任何你花费 3 天还是没有头绪的问题,你都要放弃目前的思路。
53。 掌握更多的语言是非常非常好的想法。每种编程语言都有自己的独特之处(除了语法,更多体现在设计模式上),只要你掌握了你就可以运用在任何地方。
54。 本人一开始是做 J2ee 的,然后转 android,接着又学了 ios,再然后又开始学了 PHP。我觉得技术上分两种:1 种专精一门,然后多看看别的语言,取其精华,丰富自己。第 2 种多攻多种语言,通过不同语言的领悟让自己能在每个领域里逐步提高。这两种路应该都是没有错的。
55。 第一种以后可以在大公司里获得非常不错的职位和薪水,随着工作时间的增加,待遇上也会有很大的提升,以后可以成为该领域的权威人物。第二种可以在小公司里或创业公司里成为技术 Leader,也有可能在大公司里负责一个技术部门(可能性非常小)。我不知道有多少人在这个问题上迷茫过,但我确实是迷茫了很久。我现在的结论里,要不精到底,要不杂到底。只要坚持下来,不要经常变来变去,总是会得到自己想要的的。
56。 我发现很多入门级的 Android 程序员或 IOS 程序员,因为现在移动开发的火热,薪资上比其他领域的程序员高很多,但事实上技术上却贫乏很多,这是目前的一个怪圈。因为之前没做过其他开发,或刚毕业就开始做移动开发了,非常缺少架构,代码规范等方面的知识。我建议 Android 的程序员可以多看看 J2ee 方面的知识,特别是 SSH 框架,会给你在思路上带来非常大的提升。
57。 学习最快的方法就是读文档,读官方代码,读别人的项目。有人可能问我手头上没有什么项目源代码怎办?答案是淘宝,在淘宝上你可以花几块钱或几十块钱就可以买到大量的代码,这是目前我认为性价比最高的学习方法。
58。 如果有空可以参与到一些开源项目的研发中。如何参与可以百度下。不要以为开源项目很难,大部分跟我们的区别只是代码非常规范而已。
59。 做开发最有意思的就是每天都可以学到新东西,保持学习的状态会让你每天都很亢奋。培养自己不断学习的习惯。
60。 多培养自己业余兴趣,比如下棋,听歌,旅游等等,通过这些会让你平时工作和学习更有效率。
61。 不要羡慕别人的技术或能力,这世界没有谁比谁更聪明,只有谁比谁更有效率的努力而已。以绝大数人的努力程度之低,根本谈不上拼天赋。
62。 如何衡量一个程序员的技术水平?如果把程序员当成某个游戏里的角色。你的级别代表着你真正的技术水平。你每次的学习和工作相当于你在打怪做任务获取经验值。有些人群刷比自己高 2,3 级的怪,有些人单挑比自己高 2-3 级的怪,有些人刷比自己低 5 级的灰色怪。也许大家花的时间都差不多,但最后级别是不一样。所以不要以为工作经验高的人技术肯定比自己强,还有效率问题。反过来说,如果你现在打怪效率不高,是否应该思考换个方式刷经验?(有兴趣的同学可以看看《一万小时天才理论》)
63。 强迫自己总结经验并写下来。每次写总结就相当于重新复习一次,并且也做一个存档,方便日后回顾。千万不要相信大脑随着时间变得模糊的记忆,只有写下来的东西,才是唯一答案。
64。 定一个高不可攀的目标会让你进步更快。比如研究 android 源代码,研究 linux 源代码,把公司里某个大神的代码全部吃透等等。也许目标并不能完成,但比没有目标好。有个故事是这样的:A 同学和 B 同学考试都得了 50 分。A 下定决心下个月考 100 分,B 只希望考到 60 分就足够了。最后 A 考了 90 分,B 考 58 分。
65。 不要总把时间不够挂在嘴上。达芬奇除了是画家,他还是雕刻家、建筑师、音乐家、数学家、工程师、发明家、解剖学家、地质学家、制图师,植物学家和作家。而他只活了 68 岁。
66。 只专精一种语言的人在未来肯定会成为多余的人。在时间管理里有句话叫:“离开舒适区”。只有离开了舒适区你才会因对环境的不适应而强迫自己更专心学习。
67。 迫使自己不停的获得社会的认可。我从开始转行做程序员到现在,所经历过的目标有:1)写出 hello world。2)加入一家公司,成为一名 Java 程序员。3)成为一名合格的 Android 程序员 4)薪资加倍 5)成为项目技术领头人 6)薪资加倍。下一个计划:准备出书。
68。 有人说 30 岁以后不能做程序员。我不太同意这个观点。30岁以后确实不能做一名纯粹的一线程序员,因为你有家庭负担,对一个公司来说你的性价比比不上其他年轻的一线程序员。但 30 岁以后你可以作为技术领头人或架构师或项目主管存在。还有很多职业都需要很大比重技术的人才。所以不要担心。
希望,每个人都能找到自己努力的目标、方向,有一个美好的未来。以匠心,致初心。以上,共勉。