重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
30岁,是一个程序员伤不起的年龄。明年,何去何从?
创新互联建站-专业网站定制、快速模板网站建设、高性价比鞍山网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式鞍山网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖鞍山地区。费用合理售后完善,十多年实体公司更值得信赖。
一.30岁现象
在程序员的圈子里,有一个30岁现象。
30岁现象人人都明白,但要给出一个定义并不容易。列举几个表现,也许你会觉得心有戚戚焉。
面临职业瓶颈,程序写不动,上升又困难
薪水较高,加班变少,后浪追前浪,面临失业压力;生活压力剧增,不敢跳槽;
招聘程序员年龄限制在30岁以下成为行业潜规则,跳槽困难。
30岁现象,其实普遍的原因是: 价值贬值。 所谓三十而立,一旦到了30岁左右,程序员由于面临结婚生子, 一方面需要高薪抚养家庭,另一方面却无法像以前那样全身心投入到工作,性价比急剧下降; 与此同时, 大批廉价的新手涌入,他们往往还使用最新的技术,老一辈程序员只能慢慢的靠边站了。
二.不可替代性
30岁现象产生,只能程序员自身身上找原因。
当然我们也可以产业、从社会、从政府、从制度等多方面进行分析,发现不足,这些分析未必没有道理,但是肯定没有用,因为我们无法改变。所谓 “命苦不能怪政府,命背不能怪社会” ,从外部找原因,只会让我们满腹牢骚,整天觉得自己生不逢时,苦闷不堪。
从自身找原因,试着问自己几个问题: “为什么我的性价比以下降?老板为什么要请我,给我高工资呢?一个人有价值是由什么决定的呢?”
你也许可以列出很长很长的答案,但我想应该都可以浓缩为一句话: “一个的价值是由他的不可替代性决定的”。 不可替代性可以理解为, 为了替代你老板需要付出的代价。
因为你的可替代性高,所以性价比下降。反之,因为你不可替代性高,所以老板会给你开高工资。 不是这样的吗?
有一则小故事:
技师退休时告诫自己的徒弟: “少说话,多做事。”
十年后徒弟也成了技师,他找到师傅,苦着脸说:“师傅,我一直都按您的教导做,只知埋头苦干,可那些比我技术差的都升职了、加薪了,我还是拿着过去的工资。”
师傅想了想,说: “你请一次假吧。如果一盏灯一直亮着,那就没人会注意到它……”
徒弟恍然大悟,真的请了一星期假,等他回去上班时,厂长找到他说要给他加薪。原来,在他请假时,厂长发现,工厂已经离不开他了。
徒弟很高兴,以后他时不时就请几天假,每次请假后厂长都会给他加薪。一天徒弟请假后准备去上班,厂长却告诉他:“你不用来上班了。”
徒弟苦恼地去找师傅,师傅说:“那天我的话还没说完呢。 一盏灯偶尔可以熄灭一次,可如果它总是熄灭,性质就不一样了,因为没人会需要一盏时亮时熄的灯。 ”
故事中,因为徒弟的不可替代,所以厂长给他加薪;后来因为有其它的灯亮了,他被替代了,厂长不需要他了,所以被炒了鱿鱼。
所以我们归根到底还是要提高自己的不可替代性。否则,一旦老板觉得用较低的代价就可以替代你,那么你就面临可能失业的危险了。
三.出路在哪里
那程序员到了30岁, 怎样提高自己的不可替代性呢?我们打算做一辈子程序员吗?敢问路在何方?
作为一个过来人、一个资深程序员,我觉得有几个方向可以选择:
(1)成为技术大牛
其实, 做一辈子程序员并没有什么问题,重要的是,你必须成为一个不可替代的程序员 ,也就是说,你要成为技术大牛,能够解决普通程序员所不能解决的问题。技术大牛有两个版本:
一 是程序员加强版。 你仍然是一个程序员,但你是一个很牛的程序员,凭借多年的积累,你在知识广度和深度方面均已不是等闲之辈。从汇编到安防,你样样精通。你在意数据结构和算法,对系统的优化有独到见解,对设计模式如数家珍,你还有完备的工具箱和自己的专用类库。其实,加强版程序员有非常独特的价值,可惜的是,在现实中却很少见,因为对任何一个公司而言,人才总是很稀缺的。老板的眼睛是雪亮的,他怎么会对你这种技术大牛视而不见呢,在你还没有成为真正的大牛之前,早已经被任命为系统架构师、项目经理或者更高的职位了。因此,你想守住自己的一亩三分地,悠闲的做自己的大牛,往往是不可能的。
二 是程序员升级版。 虽然你的内在仍然是一个程序员,但你的职位已经升级了,你成为了系统分析师或系统架构师。这是非常自然和现实的选择。程序员与系统分析师或架构师之间并没有鸿沟,只需一步而已,你就可以从崎岖山路驶向宽阔的大马路。但这一步却并不容易,需要几年时间不断思考、学习、实践,才能化蛹成蝶。
(2)成为行业专家
行业专家也是一个公司不可缺少的角色,他们对公司的行业知识、业务流程和细节了如指掌。行业专家一般并不是从外部招聘的一个只懂业务、不懂技术的超人,而往 往是从程序员经过多年的摸爬滚打成长起来的。作为从程序员成长起来的行业专家,你往往还肩负系统分析师之职。在公司里,对业务有一般了解的人很多, 但专家级别的往往很少,为了后30年的职业生涯,你必须成为专家。
(3)朝管理方向发展
向管理方向发展的第一步,一般是被任命为项目经理。在大部分IT公司里, 项目经理是最小的管理岗位了,可能你不会觉得有太多惊喜,工资也没有大的提升,但这个转变,可以说会成为你一生中最重要的转变之一。
不要小看了项目经理。有人说,项目经理是一个古老的职业。也人有人说,21世纪是项目管理的世纪。事实上,从人类有组织以来,就一直有项目管理,以前的项目 经理可能是部落首领,一次集体打猎、一次攻城拔寨,都可以视为一个项目。项目管理的知识可以应用到我们生活的方方面面,大至登月计划的实施,小至家庭聚会的组织,都离不开项目管理。
一个优秀的项目经理,不仅需要高智商,还需要高情商。 可以不夸张的说,如果你能胜任项目管理,你就可以胜任战术层的所有管理岗位,甚至你有家庭生活质量,也会提高到新层次。
然而,要成为一名优秀的项目经理,并不是一件容易的事情。可以说,需要一定的天分,有些人无师自通,有些人却永远也学不会。程序员属于高智商人群,情商却往往存在不足,这注定了只有少数程序员能够成长为项目经理,成为优秀的项目经理,则非常稀少了。
如果你觉得这几方面都不合适,那你还有几条出路:
一是塌塌实实混日子:
说老实话,做老实人,办老实事,拿老实的工资,这种员工公司也是非常需要的,一般不会遭遇炒鱿鱼的命运;
二是转行或者创业:
因为这个行业已经不再适合你,已经没有更大的发展前途,只能转行。如果可以转行,未必是坏事,也许在新的环境中,可以激发出更强的能量,创造出一番事业来。
至于创业,那就更具有挑战性了,建议你在创业之前,已经成为了一名优秀的项目经理。试想,如果转不动一个项目,如何能转动一个公司?【创业有风险,慎行】
最后推荐一个iOS高级开发群: 624212887,里面都是iOS开发,全栈发展,iOS开发可以入驻交流提升!
第一步:编程入门课
时间预计:4个星期
推荐看公开课,Udacity也行,网易公开课也行,自己找一个面对对象语言(一般是JAVA, C++, Python)的课。我是在网易公开课看的斯坦福的CS106A,学的JAVA。
如果你纯粹学iOS开发,不推荐看哈佛CS50,CS50是给CS系的学生介绍整个计算机世界的框架,讲的内容比较多,进度比较快,对iOS开发其实有点累赘了。(臣妾有点跟不上啊!!)
计划安排是一天一课,看课程要求的书(至少看完一本)及大部分作业。这一阶段重点不是语法,而是以下3个目标。
目标:
1. 让自己对编程这件事感到适应。
写hello world。
怎么写function, 怎么调用function。
全局变量,局部变量这类基本知识点。
都是基本的东西。看看书,写多两个程序就欧啦。
2. 掌握编程语言的基本要素。
编程语言4个要素:
a. 基本的数据类型:整数,实数,character, string, boolean
b. 基本的运算符号:+-×/++--那啥的
c. 怎样输入输出
d. 怎样控制程序:sequence,selection,loop
3. 了解编程范式
面对过程编程。
面向对象编程。
第二步:上手iOS!
时间预计:2星期
强烈推荐CS193P,老头子讲的超级好!我的很多东西(对象思维啥的)是在这里跟着做练习的时候才真正明白的(好啦,也可能是上一堂课练习做得少的原因)。如果等到9月应该itunes U上会开始教iOS 7了。网易公开课的是2010年iOS 5版的,前10堂课,也行。(iTunes U上有完整的课)
CS193P说有prerequisite,一开始被吓到,事实证明还是可以学下去的。头两节课一头雾水,没关系,把itunes U上的课件下载下来,把所有代码打出来,然后一个个元素对应之前学的语言匹配,再不懂先放着,继续学后边的,过几天打多点代码就懂了。
感觉学5、6堂课,一个星期左右就可以开始进入下一阶段自己做东西了。之后用啥学啥,每堂课都有主题的。速度慢点的同学们,这阶段跟我一样准备两个星期吧!
第三步:开发app!
时间预计:2星期(本人...1个半月,实在不好意思说出口)
这个时间就可长可短啦,还包括美工,交互啥的。坚持要用啥学啥的原则,其实就是知道iOS SDK都有什么组件,每个组件有什么function而已。stackoverflow, Github, apple sample code多上,搜索引擎多用。如果有个师傅,这个阶段真的是进步神速。
好的!不出意外,你的第一个app就这么新鲜出炉了!从今天开始,成为一个冷艳逼格高尚的iOS开发者吧!
作者:匿名用户
链接:
另一本是Big Nerd Ranch出的《Objective-C编程(第2版)》。(推荐华中师大出的版本)
img src="" data-rawwidth="333" data-rawheight="413" class="content_image" width="333"
——————————————————————
2、视频教程的话,只推荐我赢职场出的iOS移动开发课程。
教程链接如下:
iOS9实战开发教程
img src="" data-rawwidth="398" data-rawheight="202" class="content_image" width="398"
讲的细致是这门课程最大的特点。因此,这款教程尤其适合那些零基础学习iOS的学员。我赢职场知名度不够,但是做的课程不错,可惜没人听说过这个品牌。这款教程是从Objc一直讲到iOS高编。所以跟着这款教程走,iOS开发基本也可以学的差不多。
——————————————————————
二、其次,你要学习API,了解iOS UI控件
Objc阶段的学习只是带你入门,如果你想进阶,API和UI控件是必须需要学的。一门语言可能会有成千上百的API和UI控件。你不需要把他们全都记住,只需要记住一些常用的即可。
例如:Objc中的UITableView的dataSouce和delegate;NSDictionary、NSArray相关的增删查改方法;JSON数组转换方法;文件操作方法等。
UI控件的话,常用的有UIView、UITableView、UIScrollView、UIButton、UILable等。你要熟悉这些控件的属性和相关的操作方法。
记忆这些东西,只靠死记硬背是不行的。多去写代码,多去实践,这样才能逐渐掌握。
学完这个阶段,基本上就可以做出来一个简单的APP了。由于没有进一步学习高深的东西,咱们暂且不说流畅性和内存。
UI控件部分的知识点如图:
img src="" data-rawwidth="607" data-rawheight="531" class="origin_image zh-lightbox-thumb" width="607" data-original=""
——————————————————————
三、最后,你还需要了解iOS开发的底层原理。
能学到这一部分已经很不错了。所谓专业的iOS开发工程师和一个业余的iOS开发爱好者基本也差在这最后一步了。这一部分的知识点也是在面试的时会经常问道的。如果你想找一份iOS开发工程师的职位,这一部分是非学不可的。
这一部分的需要掌握的知识点包括:
iOS内存管理、iOS运行时机制、RunLoop、多线程等
每一块都需要掌握的很详细。
你还要熟练使用类库并阅读类库源码,例如AFNetWorking、SDWeblmage等,这两个是初学者必看的。
——————————————————————
这一阶段的学习可以多去github上下载源代码去阅读。
推荐一些完整的源码下载:
1、懒人笔记iOS客户端
GitHub - liaojinxing/Voice2Note: Voice2Note iOS client source codes.
2、《猿已阅》码农周刊iOS客户端
GitHub - icepy/manong-reading: 《猿已阅》码农周刊 iOS App(放弃维护,推荐大家下载《开发者头条》App)
3、火狐浏览器iOS客户端
GitHub - mozilla/firefox-ios: Firefox for iOS
4、某位大神做的高仿网易新闻项目源码
GitHub - dsxNiubility/SXNews: High imitation Neteasy News. (include list,detail,photoset,weather,feedback)
5、维基百科iOS客户端
GitHub - wikimedia/wikipedia-ios: The official Wikipedia iOS app.
6、品趣iOS客户端
GitHub - ltebean/novel-design: PinQu ios client
7、YoCelsius——一款天气预报的应用
GitHub - YouXianMing/YoCelsius: A weather app that uses animation to give you an at-a-glance look at the weather.
8、密记iOS版——款简单的笔记应用
GitHub - iHTCboy/SecurityNote: 密记iOS版:本应用主要功能是简单笔记。【已经开源,AppStroe可下载】The application of the main function is a simple notes.
——————————————————————
四、关于swift语言的学习。
学习iOS开发分为Objc和swift两个路线,以上介绍的是最经典的Objc路线。如果你想靠学习iOS开发找到一份工作,就要选择从Objc开始学起。因为绝大多数公司都是以Objc为开发语言的。
然而swift作为一门现代语言,集合了很多编程语言的优点,并且比Objc也更加简单易学,近几年swift语言的发展势头十分不错,大有取代Objc而代之的迹象。所以在这里建议题主把两个语言都学习一下。并且Swift语言是在Objc的基础上发明的,学完Objc,再学习swift也会更加容易。
关于swift路线的学习,可以看看我赢职场的iOS开发教程,有大篇幅的章节去介绍swift语言,并且讲得细致入微,十分适合新手学习。
教程链接:iOS9实战移动开发(swift加强版)
img src="" data-rawwidth="860" data-rawheight="589" class="origin_image zh-lightbox-thumb" width="860" data-original=""
五、下面把自己多年来私藏的一些学习iOS开发的网站推荐给大家。当然这只是部分,赞数过百还会把这些资料再放出来一部分。所以,你们快点赞吧!
——————————————————————
iOS开发相关的网站:
1、我赢职场
上文已经介绍过了,他们家的课程质量算是很赞的了,教程最大的特点是特别适合新手学习。
2、tutsplus
不定时更新一些 iOS 教程
3、WWDC
苹果官方每年一度的 WWDC 视频, 可以了解历年有关 iOS 发布的内容。
4、asciiwwdc
WWDC 的文字版
5、Swift by Robin Eggenkamp
该网站收集了很多关于 Swift 的学习资料, 新闻。
——————————————————————
邮件订阅:
1、iOS Dev Weekly
每周一期,内容多为这一星期里值得关注的 GitHub 项目、文章、工具等。
2、iOS Design Weekly
每周一期,会提供一些iOS开发的建议,新闻资讯以及创意方面的内容。