My View of Coding

作者:IPCreator

Skill is acquired through correct and repetitive practice, and practice makes perfect.

阅读整合–>
代码片段–>
实践项目–>
博客总结–>

  1. 不放过任何一个err,每成功解决一个error就意味着自己的经验库又append一个案例;
  2. 理不顺想不通的时候,成长的时刻到了,坚持、坚持再坚持,成就感与困难度成正比;
  3. 官网+stackflow+github+google还解决不了的时候,暂时放一放,持续关注思考,直至惊喜发生;
  4. 换位常识思考,如果你是设计者,你会怎么设计,为什么这样设计?
  5. 尽量不要复制粘贴,要逐字阅读,逐个输入,对开发而言,thinking与coding相辅相成,缺一不可;
  6. 知其然还要知其所以然,不要浮于表面,浅尝则止,运行/部署成功不等于你掌握了每个环节的原理;
  7. 慢工出细活,慢就是快,防火胜于救火,先打好基础(概念、框架、原理等),高手都重视内功;
  8. 专而精,精而深,通过一个突破口(语言、框架、平台),抓住本质量(通俗易懂,能重建和迁移),再融会贯通,一通百通;
  9. coding只是解决问题的一种方式,不要重复发明轮子,要open和share,不要敝扫自珍,因为每个人都能掌握相应的技能,只是时间早晚而已;
  10. 创新整合也是一种行之有效的商业途径,不要为了技术而技术,为了创新而创新,商业思维很重要;
  11. 从战略上来说,我们大部分都只是用别人开发出来的工具(类似于厨具)开发产品(类似于菜品)而已;
  12. 阅读代码(类似于品尝他人菜品)、模仿创新(借鉴改造)、原创分享(晋级高级厨师);
  13. 道理都懂,为什么难以坚持?没有尝到甜头或者没有吃到苦头,又或者只是懒惰;
  14. 35岁以后能否再编程?取决于:以前的编程模式是否健康可持续?是否为自己实现创新产品和服务(而不只是为了挣钱);
  15. 程序员人生的梦想和快乐简单易实现,成为其中一员才能真正感同身受…
  16. 有劲、有趣和有用,正常可持续,Kick-off & Keep-going

Dreams cann’t measured by S/A/B/C/D degree、money and position.
Great mind thinks alike.
RTFC Read the fucking code.
RTFM Read the fucking manual.
STFW Search the fucking Web.
Read the article word by word.
Code can talk, let the code talk.
A good name tells the truth.
Keep code simple and reusable.
Keep hungry, Keep foolish.
Keep healthy and sustainable.
Less is more, slow is quick.
Don’t Reinvent the Wheel.
Use is the best way of learning English , so is programming.
Master the essence of things, including languages (English/C/C++/JAVA/PYTHON/JS…),
platforms(Arena/Android/Tensor…),tools(gcc/make/gradle/git…),etc
We make good habits first, then habits make us.
Success is a habit, so is happiness.

Hello World Program in Java

1
2
3
4
5
6
7
class HelloWorld
{
public static void main(String args[])
{
System.out.println(“Hello World”);
}
}

Hello World Program in C

1
2
3
4
5
6
#include<stdio.h>
main()
{
printf(“Hello World”);
}

Hello World Program in C++

1
2
3
4
5
6
#include <iostream>
int main()
{
std::cout << “Hello, world”;
}

Hello World Program in Javascript

1
2
3
4
5
6
7
<script>
window.onload = function()
{
document.getElementById(‘result’).innerHTML = “Hello World”;
}
</script>
<div id=”result></div>

Hello World Program in HTML
<p>Hello World</p>

Hello World Program in Python
print “Hello World

Hello World Program in Perl
print “Hello World

Hello World Program in Ruby
puts “Hello World

Source: http://blog.learntoprogram.tv/hello-world-eight-languages/

太用力的人跑不远

写在前面

有阶段的自己,会用蛮力去学习一些东西,就是这东西不管是否适合目前自己的知识体系, 觉得学了之后会更牛逼就去学,但是这样的东西往往学了记不住。 学习的过程越用力反而显得越吃力, 太吃力的事情,自然就无法有恒心, 这就是很多人会觉得自己做事总是无法持之以恒的原因。

努力不应该是某种需要被时常觉知的东西,意志力是短期内会用完的精神能量。
真正坚持到最后的人靠的不是激情,而是恰到好处的喜欢和投入。

太用力的人更容易产生期望落差,更不愿接受自己找错了方向的事实——没有什么比这样的“失落”更能让人心寒的了,太用力的人大多都因心累而倒在了半途中。

精神上的用力并不会让你跑得更快,但是精神上的疲惫却可以让你停下。

人越用力,就会越想要得到及时的良好刺激。越用力的人对于正刺激的需求就越高,越不能忍受暂时的负反馈。遗憾的是,人生常常是没有下文的考卷,这种刺激来得太慢、太不稳定。

真正的坚持归于平静,靠的是温和的发力,而不是时时刻刻的刺激。

太用力的人增加了执行的功耗。纠结,是太用力的一种表现,造成内部的运转处于空转的状态——意识与行动的主观脱节;从心所欲,就是把运转效率最大化后的结果——所想即所为。执行阶段最大的敌人,是纠结,是埋怨,是内心的冲突——太用力,就是心理额外动作太多。想好之后就只管去做。

我一直告诫自己不要用力过猛,以保持自己对困难的顿感和不顺的接受程度。
短期的过度用力极容易造成身体和心理上的挫伤。哪怕你在做的事情非常重要,也要保证基本的休息和放松。

不论是以后的工作还是将来的创业,都要保持一颗平常心。你需要更多的“寸劲”而不是“用力感”。在找到受力点“all in”之前,一切都要顺势而行,自然随和。

人在学习的过程会经历一系列的过程,先是笨拙期,再是熟练期——这两个过程他虽然能运用出技能,但是头脑中仍然能感受到使用时的提取感。这两个阶段都需要用力,但是用力的程度却大幅度减小。

技能掌握的最后阶段是运用自如期,就是张三丰把太极拳的形态全部都忘了的阶段。这个时候头脑中已经能下意识地去进行活动,达到了能耗最低的理想阶段。

从用力感,到毫无感觉,是一种技能掌握上的纯熟。年轻的时候太认真是件好事,或许只有用力过了,才能体会从心所欲、顺其自然的难得。

IT人员怎么用力

总有在校的学生问我现在 X,Y,Z… 技术很火热,应该学哪个? 我看他列出的那些准备学习的选项中,其实前景和热门程度都差不多。 这让他陷入了选择焦虑症,不管做什么决定都怕「一失足成千古恨」。

对技术发展趋势关心是好事,就像之前那篇「不要总是选择困难模式」里面说的那样。 但是其实在「不要总是选择困难模式」里面忽略了很重要的一点,就是你个人的兴趣。 比如有的人对苹果的东西有天生的热爱,所以选择「iOS开发」对他来说就更容易做好。 尽可能选择会让自己 Enjoy 的技术方向,路还很长,不享受过程的话容易半途而废。

太用力的人跑不远

记得之前本科的时候喜欢和舍友一起打Dota,打Dota开局之前一般要等人齐, 等人的这段时间我有时候会切出来写写代码,叫舍友开局了告诉我一声。 然后别人看到我在打Dota间隙都在写代码,就觉得我有多努力多努力,给人了一种非常「刻苦」的印象。 以至于上次和一个本科同学吃饭他还说起这个事情,觉得我能做到这样非常「牛逼」。

但是其实这样的事情,如果对于真的对写代码有经历过热爱的人,是不会觉得有多么刻苦的事情。 这是自然而然的事情,甚至其实有些代码,那种满足好奇心的快感,是比打游戏有意思的多, 是件很Enjoy的事情,而不是所谓的「刻苦」。

就像跑步,「太用力的人跑不远」。

不要用蛮力去学编程

记得当年初学 C++ 的同学,听别人说 C++ 很基础也很重要的一个知识点就是STL, 然后听说要学好 STL 就应该去看看侯捷的「STL源码剖析」。 然后就买了书硬啃,然后没啃几天就放弃了,觉得太讳莫如深了没法理解。

但是如果换个学习的方式, 先假设现在没有STL这个标准库, 让你用已有的C++语法知识去自己写一个仿造STL标准库的功能, 哪怕是最最简单的 vector 。 你在编写的时候就会自然而然得体会到内存动态扩展的一些缺点和潜在的坑。 会知道为什么适当使用 reserve 和 swap 能非常明显的提高性能。

然后在自己思考的过程中会提出很多相关的疑惑, 带着疑惑再去翻看「STL源码剖析」, 就会让你对一个个数据结构恍然大悟知根知底。 自然而然你的看书体验会非常的 Enjoy, 而不是觉得苦涩难咽。

编程和求知本身是一件愉悦身心的事情, 如果只是为了高薪,而用蛮力去写代码,只会让自己疲惫不堪。

最后

希望对在学习编程的路上很挣扎的朋友有所帮助。 毕竟工作是生活的很大一部分, 如果工作不开心,生活怎么办。

不是人人都懂的学习要点

学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。

一.学习也是一种能力

看到这个标题,有人会说:“学习,谁不会?”的确,学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生的时候,什么也不知道,是一张真正的白纸,我们靠学习的本能,学会了走路、说话、穿衣服…后来,我们上学了,老师把书本上的知识一点一点灌输到我们的脑子里,我们掌握的知识越来越多,与此同时,我们学习能力却好像越来越差了,习惯了被别人喂饱,似乎忘记了怎么来喂自己了。

学习本来只是一种本能,算不上什么能力,然而,经过二十多年的不断学习,学习反而成为了一种真正的能力,因为我们慢慢失去了它,它就更显得珍贵。

在学校里我们基本上被动式学习,然而走出了象牙塔之后,不会再有人对你负责,不会有人主动教你,我们需要主动的学习。所谓的学习能力,其实就是自主学习的能力。

几年前,曾有一本风靡管理界的书,叫《第五项修炼》,这本书倡导建立学习型组织,因为从长远来看,一个组织唯一可持续的竞争优秀,就是比竞争对手更快更好的学习能力。

一个公司如此,一个人又何尝不是如此?众所周知现在是一个知识爆炸的时候代,知识更新非常快。据说,一个大学毕业生所学习到的知识,在毕业之后的2年内,有效的不过剩下5%,更何况我们的学校与社会需要严重脱轨。我们赖以立足的,不在于我们现在掌握了多少知识,而是我们有多强的学习能力!

学习不但是一种能力,而且是一种至关重要的能力,而这种能力的核心,就是学习的方法和心态。

二.买书是最划算的投资

古人云:“书中自有黄金屋,书中自有颜如玉。”这说明先贤们早就认识到,买书是最划算的投资了。

当我刚出道的时候,拿着非常微薄的工资,有一次我向主管抱怨道:“现在的书真贵啊,这点工资连饭都吃不起,更别说买书了!”主管对我说:“不要吝惜买书的钱,宁可忍着不吃饭,也不要忍着不买书,因为买书是回报率的最高的投资了。”

主管的话让我非常震动。后来,我看到喜欢的书时,再有没有手软过。我不断的学习,开发能力也不断的提高,工资水平也获得了大幅度的提高。一年后,我一个月工资的涨幅,就足够买两年的书了。你说,还有比这更划算的投资吗?

一本书,哪怕只有一页纸是有用的,它将所产生的潜在价值,也会远远超过书本身的价格。当然,书不在多,能踏踏实实消化掉一本好书,可能比泛泛而读10本普通书,要更有价值得多。

三.多读经典书

十年前,我刚进入IT行业的时候,真是求知渴,每星期都要往购书中心跑,可惜的是,那时给程序员看的书不像现在这么多,高质量的书就更少了。当时我印象中比较经典的书籍就是《Windows程序设计》、《COM本质论》、《Java编程思想》,还有就是谭浩强的《C语言程序设计》。其它充斥书架的,就是类似于《21天精通XXX》、《XXX从入门到精通》、《XX宝典》这样的书籍。

回首往昔,令我比较郁闷的一件事就是在我最有学习动力的时候,看的高质量的书籍太少,就好像是在长身体的时候,天天吃的是没营养的泡面。当然,这跟没有人指导也有很大的关系,独自一个人学习,让我走了很多的弯路。

软件开发方面的书籍,我大致将其分为三类:

(1)浅显的入门类书籍。

这类书的标题往往是《XX天精通XXX》、《XXX从入门到精通》、《XX开发实战》等,这类书往往从软件的安装讲起,喜欢翻译帮助文件。有人批评这类书为烂书、毫无价值,这并不公平。至少我本人,也曾从这些书中学到一些东西。即使是21天系列书,也有适合看的人群,只不过,它一般也就只能看21天而已,过后就可以扔到垃圾堆。这类书只适于还没有入门的初学者,从中学到一些入门的招式。这种书在刚起步的时候一般买上一本就可以了。如果你善于使用搜索引擎,这一本书也可以省了。

(2)国内外高手写的实战类书籍。

这类书实战性很强,把技术及原理讲得很透彻。比如《windows环境下32位汇编语言程序设计》、《深入解析MFC》、《Delphi深度探索》、《深入浅出WPF》、《深入剖析Asp.NET组件设计》等。以前这类书都是从国外翻译或从台湾引进,现在国内高手越来越多,出自国内作者的也越来越多。这类书如果在你学习的每个方向看个两三本,并且通过实践消化掉,那么毫无疑问,你会成为一个优秀的程序员。

(3)国外大牛写的、揭露本质、有丰富思想的书。

这类书就是所谓的经典书了,例如《代码大全》、《编程珠玑》、《设计模式》、《重构》、《代码整洁之道》等。经典书就像一个有深度、有思想的朋友,他会给你启发、每次阅读都会有新的收获,这类书具有真正的收藏价值。看经典书永远是正确的选择,它绝不会浪费你的时间,因为经典书是无数人沙里淘金、帮你挑选过的结果。

然而,阅读这类书并不是一件容易的事情,读者需要有丰富的开发经验,才能与作者产生共鸣。真正能消化经典书的人其实不多,这就好像饮酒,一个新手无论如何也品不出葡萄美酒的醇香。在酒桌上,人人都把杯中酒一饮而尽,当有人点评“这个酒不错”的时候,我只能无奈的苦笑一番,真的是甘苦自知。

如果一本经典书你看得很辛苦,很有可能就是因为你功力未够,这种情况下不要着急,慢点来,不妨先将其先束之高阁,多看看第二类实战型书籍,过一段时间再回头来看,也许你会有新的惊喜。

四.不要在上班时间看书

一个善于学习的人,首先要善于利用一切时间来学习。不知是伟大的雷锋叔叔还是鲁迅爷爷曾经说过:“时间就像海绵里的水,只要愿挤,总还是有的。”然而,当我们从上班时间中挤时间学习时,就千万要注意了,不要在上班时间看书!

上班时间看书不但是一件很敏感的事情,而且非常吸引眼球,很快就会引起周遭的不爽。首先老板心里不爽,他想:“我给你钱是让你来工作的,不是来学习的!”;其次同事们也不爽:“我们工作都做不完,瞧,这小子真闲哪!”用不了多久,你就会成为被众人排斥的异类。

当然,你可能会说,“我工作已经做完了,经理没有安排,当然可以学习了”,其实不然。你完成了一件事情,不等于所有的事情都完成了。一个优秀的员工,应该是主动要工作,而不是被动的等工作。工作完成以后,你至少还可以:

(1)主动汇报给你的经理,请他来检查你的成果,并安排新的任务;
(2)如果公司这一段时间确实比较闲,没有什么具体的任务,可以进行代码重构、优化;
(3)你还可以主动请缨,承担额外的工作或更艰巨的任务。
(4)如果一定要学习,也只能对着电脑屏幕来学习,纸质书最多只能拿来翻阅一下,而不能一直捧着,以免影响到其他人的情绪。

五、只学习与工作相关的东西

我曾发现不少程序员在学习方面找不到方向,一会学学C#,一会学学Java,看了最新的编程语言排行榜,又觉得该学C++。这样左抓抓,右挠挠,只会让你觉得更痒。

学习最忌三心二意。俗话说:“伤其十指不如断其一指”,每门都学一点,还不如专心学好一个方向。这个道理谁都懂,可是又该学哪个方向呢?难道只能跟着感觉走吗?

不!最实际的方向,应该跟着工作走,工作需要什么,我们就学什么,把工作需要的技能熟练掌握。我们为什么要学习和工作弱相关的东西呢?是为了转行或跳槽吗?可是,如果我们连现在本职工作都不能做好,又怎么能保证到新的岗位、用新学的技能就可以做得更好呢?

学习与工作需要的的东西,有很多好处:

首先,可以集中精力,在某一方面钻研得更加深入。所谓“百招会不如一招绝”,有了绝招,你还怕不能在“武林”立足吗?《天龙八部》中的慕容复武功博学无比,最后还不是被只会一招六脉神剑的段誉打得落花流水?

其次,可以学得更快、更深入,因为学习更具有针对性,而且可以立即在工作中运用,可以马上检验出学习的效果,对存在的问题可以进行深入的研究,因此掌握的知识也会更加的牢固。

第三,学习与工作结合在一起,工作时间也就成了学习时间,这样突破了三个8小时的限制。有人说,我们每天所有拥有的时间可以分为三个8小时,工作8小时,睡觉8小时,另外还有8小时自己可以自由支配的时间。工作和睡觉的两个8小时大家都一样,决定人生高度的是另外这个8小时。当我们把学习的焦点放到与工作相关的知识上时,工作时间中的很大一部分,同时也就成了宝贵的学习时间,这真是一举两得的美事啊。

六.织网式的学习

知识的广度和深度都很重要。作为一个程序员,深入把握技术细节,是写出优质代码的保证。但对于一个项目经理而言,知识的广度更显重要。项目中碰到的问题往往是综合性的,只有具有广博的知识,才能快速的对问题进行分析和定位。在程序员通往项目经理的道路上,我们必须有意识的扩大自己的知识面,形成更完善的知识体系。

每个人的知识体系就好比是一张网,我们学习其实就是要织这样一张网。 我曾看过渔网的编织过程,渔网虽大,也是一个结点起步,一个点一个点的编出来的,编织的过程中,始终只有一根主线。

学习又何尝不是这样,知识体系的大网也是由许多小的结点组成,要结这样一张网,只能由一个点起步。牵住一条主线,织出一个个的点,由点带出面,最后才能形成这张大网。

我曾经编写过一个网络信息采集软件,这个软件可以从具有列表页网站中按字段设置采集信息,支持自定义字段、页面多级关联、下载附件、支持多种数据库、可视化定义等特性。刚开始时,觉得这个软件也是一个比较大的功能点而已,后来发现这个不起眼的功能关联着大量的知识点,在开发过程中, 我顺藤摸瓜,各个击破,对很多知识点进行了细致的学习研究,软件开发完成后,个人的知识体系网也进一步得到了补充和完善。


图1 由知识点形成知识网

七.问题是最好的学习机会

日本经营之神松下幸之助曾经说过:“工作就是不断发现问题、分析问题、最终解决问题的一个过程,晋升之门将永远为那些随时解决问题的人敞开着。”可见,工作过程中有问题是正常,没有问题那才是真正的问题。在发生问题能时,能勇于面对问题、解决问题的人,才是公司真正的核心骨干。

现实中,很多人总是千方百计回避问题,当上司安排一项艰巨的任务时,也是想尽办法推托。殊不知,对于个人而言,其实问题是最好的学习机会。往往那些愿意接受困难工作的人,能力会变得越来越强,那就是因为他们在克服困难的过程中取得了巨大的进步。

有一次,一位项目经理对我说:“有一个问题,客户有一台HP服务器要装磁盘阵列,没人会做,怎么办啊?”

“可以学啊,没有人愿意去吗?”

“我都问了,没人想去。”

“哦,正好明天我有时间,我也没装过磁盘阵列,那我明天去学着弄一下。”我说的是真心话。

第二天早上,当我准备出发时,项目经理告诉我不用我去了,因为项目组好几个同事都想去“学着弄一下”。

结果服务器很快就装好了,远远没有之前大家想像的那么困难嘛。更重要的是,在解决这个问题的过程中,大家都学会了怎么装磁盘阵列。

碰到困难时,迎难而上吧,千万不要拒绝这个最好的学习机会!

八.经常思考总结

子曰:“学而不思则罔”。只学习不思考,就会迷惑,难以把握事情的本质。这就好比一个学武之人,只习得其形,而未得其神,难以成为真正的高手。

一个程序员从入门,到成为高手的过程中,往往要经过几次顿悟。顿悟会让你跳出知识的丛林,一切豁然开朗,仿佛打通了全身的奇经八脉一般奇妙。记得我有一次,顿悟到了一个很简单的结论:“原来高级编程语言中的类库是封装了Windows API来实现的。”后来碰到一些自带类库无法实现的功能时,我就会想到,其实可以通过调用Windows API来实现。利用这个思路,我解决了一些看起来很难的问题,得到老板的赏识,从而很快获得提升。

顿悟非常可贵,然而它不是随便发生的,而是经过一次次苦苦思索之后、灵光闪现的结果。思考的过程,其实就是将外在的知识内化为自己的知识的过程,而顿悟,则是批量的实现这种内化,将无数个知识点连接在一起,达到融会贯通的境界。

九、克服“高原现象”

爱学习的人都会有这样的经历,学习持续了一段时间之后,往往会有一个瓶颈期,长时间似乎很久没有什么进步,于是内心非常着急。

这种情况实际上这是由人的学习规律决定的一种“高原现象”。据研究,学习者在刚开始进步快,随后有一个明显的或长或短的进步停顿期,后期进步慢,中间的停顿期叫高原期。


图2 技能学习练习曲线

在我看来,高原期实质是一个消化期,由于前期的学习积累了太多的知识点,这些知识点在大脑中乱作一团,还没有形成一个知识体系。这时需要一定的时间来消化它,将它融会贯通,经常思考总结可以快速帮你跨过高原期。

在处于高原期的时候,还可以换一个相关的方向来学习,例如编程语言学不下去了,你可以学习一下设计模式,设计模式也学不下去了,再换成数据库。通过学习这些相关的知识,不但补齐了知识体系中的短板,而且各个知识点之间可以互相启发,帮助你实现顿悟,跨过高原期。

十、学习要有好心态

(1)学习要静心

急于求成是学习过程中普遍存在的一种心态。这可以理解,毕竟作为一个程序员,要学的东西实在太多了,而社会又是那样的浮躁,让人觉得一切都是那样的不安全、不确定,似乎只有学得快一点,才能跟上社会的脚步。

可是“欲速则不达”,想快快的学,往往会形成东一榔头、西一棒槌的学习方式,每一个点都没有吃透。心沉不下去,知识也会沉不下去。要想成为真正的高手,只能静下心来,一步一个脚印的攀登。

(2)学习是一个持续一生的过程

人生的过程,就是一个自我完善过程。

孔子曾经说:“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。”可见孔子也不是天生的圣人,也在不停的学习、进步,从“志于学”到最后“从心所欲,不逾矩”,孔子一共花了55年的时间。

作为一个程序员,更是需要不断更新自己的知识。我们所知道的东西,就像一个白色的圆圈,圈外则是黑暗的未知的世界。当圆圈越大,所接触到的黑暗部分就越多。我们只有不停的学习,打破更多的黑暗,找到更多光明。

(3)保持饥饿,保持愚蠢

看了《乔布斯传》之后,我最喜欢的一句话是“求知若饥,虚心若愚”(Stay Hungry,Stay Foolish),其实我更喜欢它更原生态的翻译“保持饥饿,保持愚蠢”。我们只有认识到自己还很饥饿和愚蠢,才会像没吃饱一样,由衷的需要学习、爱上学习。

当然,知易行难,知行合一才是学习的最高境界。我也始终是一个学习者,一直在路上。

关于App程序员泡沫

前言

做开发快七年了,对于程序员,外行人总有着数不完的讽刺和误解,但是我都懒得去解释,代码搬运工人也好,民工也罢,随他们去说吧。但是网上最近流传的程序员泡沫,尤其是APP程序员泡沫的文章导致很多我们的年轻的同行产生了疑惑,所以我这个隐藏了很久的能言善辩的老程序员出山来聊一聊这个APP程序员泡沫的话题。
笔者是2010年从事安卓开发,此前做J2ee,对于安卓我有很深的感情,此前也是有意学了iOS,但是还是决定在安卓这条路上一直走到黑,在2010年一个好的安卓开发苗子工资可以过万,工作经验也就1年那样子,基本上你会点安卓都可以接近1W。想想最近某些文章中提到现在安卓开发新手动不动就要过万的工资相比,我觉得现在的新手做法并不为过:第一,以现在的北京物价房价对比2010年来说,开发的工资其实并没有涨反倒是跌了。第二,现在的开发比2010年的新手安卓开发要厉害一些,那个时候网上资料很少,书也很少,大多数安卓开发自学起来很痛苦。现在网上资料多,也有很多高水品的技术书,也有很完善的培训机制。
当然现在很多APP开发存在漫天要价的现象,但是作为企业的HR,技术经理甚至老板你可以选择不要他啊。这篇文章只讨论一般的APP开发,脑残的APP开发不在此文范畴。

1.大环境

首先我们说说大环境,现在是互联网时代,你别跟我说什么资本寒冬,在2008年经济危机时,也没见哪个程序员饿死了。资本寒冬只是暂时的,从2010年到现在死的互联网公司多了去了,又会有无数的互联网公司站起来。人们已经离不开互联网和手机了,做为必需品你觉得会破灭吗?就如同北上广的房子一样,08年说泡沫,现在这么多年过去了,谁还会相信这是泡沫呢?

2.App开发

接下来我们说一说安卓开发和iOS开发,windowsphone我们暂且不谈,这家伙10年就说要干掉安卓,也就过过嘴瘾。
我现在引用一篇文章的看法:”泡沫,毕竟是泡沫,终有爆破的那一天。这个时间不会很长,3到5年。随着新技术慢慢变旧(当Android和iOS变成和C语言一样老),随着大批量的人才涌入和一些公司退出(十万开发者面对一千岗位),随着很多老板慢慢发现原理和真相(APP真的只是个终端)。” 一看就外行人写的,还说当Android和iOS变成和C语言一样老,现在写C,C++赚的不比App少,Java老不老呢?2010年做Javaweb的优秀开发月薪2W+,再说Android和iOS不是语言不能和C语言比较,我牙都笑掉了。在此我们只能看到这是外行人眼红App开发工资比他高,他又转不了开发罢了,和windowsphone一样也就过过嘴瘾。

3.安卓和ios灭亡

有不少眼红的人希望Android和iOS灭亡,就像塞班一样,看Android和iOS灭亡了你们怎么办?笔者的同学以前做塞班的,塞班灭亡了他转做iOS,现在一样很牛逼,因为人家C++强,转iOS有优势。同样如果安卓灭亡了,安卓开发可以转Java,iOS。其实年轻的App开发不用担心这些,当你的技术达到一定层次,语言已经不是阻碍我们的脚步了,笔者1周就学会obj-c,写iOS代码了。同时也给年轻的App开发建议就是要注重基础,安卓和iOS只是武学招式,真正使他们发挥威力是你的内功,也就是你的基础。

4.互联网职位稀缺性

一个优秀的程序员是十分难求,他不是去熬年头就能得到的,他需要付出很多,阅读很多书籍,看过很多技术文章,敲过很多高质量的代码,无数个Bug折磨过的,一步步才培养起来的,反观其他的互联网职业我就不便多说什么了,优秀的是有,但更多的是熬年头拼学历,他们所付出的努力远远没有优秀程序员付出的多,他们所创造的价值也未必有他们想象的大。现在有产品思维能言善辩的App开发越来越多,他们可以去抢产品经理的饭碗,但产品经理很难抢程序员的饭碗,这也说明了优秀App程序员的稀缺性。现在我在招聘网上找一个3年以上经验的安卓开发都很难,就算找到了也很容易被别的公司抢走。现在市场上最多的是1到2年的App开发,还有一些从别的行业转过来的App开发,靠谱的很少。

5.提升自己让别人去喷吧

我们中国人的一大劣根性就是见不得人好,这是正常现象,那么怎么提高自己使得自己更强,让别人更眼红呢?

看清自己并尽早规划职业生涯

早看清自己的人早确定方向,看到自己的优点避开缺点,如果你热爱开发你就继续干开发成为App架构师。如果你能言善辩,组织能力强又敲的一手好代码,那就去做技术经理。如果你只是为了钱而不喜欢代码,那你得想办法尽快脱离这个行业。
如果闷头去敲代码这显然是大部分程序员都能做到的,但是你有没有想过程序员这个职业可以做一辈子嘛,早做打算并且要对自己的职业生涯负责,找到自己的本性和擅长并发掘自己的潜力,从而决定自己是做个技术经理、架构师还是个什么其他相关的职业,工作多年如果还是和刚入行的干一样的活这显然不会提升自身的价值也迟早会被这个行当所淘汰。

做有产品思维的程序员

平常多看看其他的App是怎样的,和自己的对比下,每做一个需求要考虑它是否是必须的,能为用户带来什么,而不是产品经理让做什么就做什么想都不想。

业余多看书,多写代码,写技术博客,找到适合自己的学习方法

想要脱颖而出你不付出努力又怎么能行,平常可以写一些自己想写的代码,把他写到博客上或者建立自己的代码库,写博客可以提高自己的写作能力同时也检验你的技术的掌握程度,你会发现你为了写一篇技术文章会查很多资料看很多书,遇到很多的坑,这是你去看别人的技术文章所得不到的。技术首先要做到先精,再做到广,什么叫做精,至少我现在的也不敢说精通Android,不会的实在是太多了。而我现在看到的就是很多开发什么都想搞,结果什么都搞不明白,今天学了Android,明天看看iOS,后天H5和RN火了又都去学,结果什么都不专什么都不精,知道慕容复嘛,会的再多也打不过专精一门武学的乔峰吧。只有你先精一门的前提下再去深入的研究其他的技术这才是对的。不要跟我说什么全栈工程师才是未来的大势所趋,才是王道,跟我说这个首先要明确什么是全栈工程师?全栈工程师至少要精通一门,会一堆技术结果全是半吊子也好意思说自己是全栈?作为Android开发多看看底层的源码,Java的基础,设计模式和算法以及iOS的基本知识。更重要的是在学习的过程中找到适合自己的学习方法,比如我就是多看书,然后敲一敲自己喜欢的代码,写博客总结归纳。关于书,我建议大家还是多多宜善,不仅仅限于专业的。古时文人为了一本书可以受饿攒钱去买,但现在的大多数人,在吃穿玩上花了很多的钱,唯独在书上却斤斤计较,希望大家都能养成爱读书、读好书的好习惯。

提高自身形象,培养软实力

App程序员同时也需要跟别人打交道,至少要穿的得体干净,别自己舒服却让别人不舒服。多培养自己沟通的能力,多想想其他人是怎么想的,培养自己的同理心,管理好自己的情绪,学会什么时候该发火,什么时候该淡然一笑,学会对着那些令人无比生厌的小人报以自然的微笑。网上讨论什么牛逼的人应该脾气好,但我不这么认为,该霸气时就应该霸气。如果我们程序员能言善辩,精通业务,人际关系好,人脉广,并且还能敲的一手好代码,这绝对非常恐怖。

保持良好的技术敏锐度和前瞻性

作为一个开发,技术的敏锐度和前瞻性是极其重要的。做技术难免会遇到技术的更新和新技术的出现,如何去选择变得极为重要,因为人的精力有限,这一点选择远远要比努力重要。首先要选择自己擅长的那门技术相关的新技术来进行学习,接下来再考虑其他的新技术。说到其他”新”技术,不得不提到H5和RN,作为一个移动开发者和一个手机用户,并不看好这两门”新”技术。从用户的角度来看,我们更追求高品质和最好的体验,显然H5和RN都无法达到这一点,另外想想PC端也出现了很多web应用,但至今都不温不火的,因为体验太屎了,我宁可下个客户端也不会在web应用上做操作。总结一句,就是H5难成大器。作为一个开发者,H5只适合一些商城或者广告类的界面,它只是一种解决方案,想要拿它做App那太扯了。有人在2011年就说H5是趋势是潮流,过了5年还在说,是不是等我退休了你们还在说H8是趋势呢。至于RN,可能未来会有一些进展,国人太喜欢炒作也太浮躁,Android和iOS都有自己的成熟的开发框架,非要在此之上罩上一层去写js,感觉就像是不脱裤子拉屎一样(我实在找不到很好的形容)。用你们的脑子想想,未来人们追求的是什么,是极致和高品质,为了所谓的商业模式来应付用户群体必定走不远,当然想捞一票就跑的可以忽略极致和高品质这个问题,用户不会关心你用了什么技术,他们只关心好不好用。不好用的直接扔垃圾箱里,好用的就算时常让他们下载新版本也会有人用。总结一句,RN可能就是一个搅屎棍,它的出现可能会让很多人趟浑水并且浪费很多时间。对于RN现在我也是持观望态度,因为我发现真正重要,能让我走的更远的是基础和深度,而不是这些前途不明的潮流框架。总之,对于新技术要有自己的判断,不要听风就是雨。

选择好平台,不要计较一时得失

在好的平台才能得到最大的利益,才会发挥自己最大的能力,相反在差的平台以及不适合自己的岗位上就算再努力也白费,除了你手里那点钱什么都得不到,还会赔上最有价值的青春。有时要学会放弃,面对不好的平台、不适合自己的岗位当断则断,计较一时的金钱得失可能会葬送自己整个人生。就好比金子扔进茅坑它永远不会发光,一个铝片放在舞台上却能够闪光,不管我们是金子还是铝片一定要区分茅坑和舞台。既要活在当下同时眼光也要放远。

去做去行动

大道理很多人都懂,为何脱颖而出的就那么几个人,因为他们不只懂而且也去做了