给那些想转行做程序员的朋友的一些建议

当然如果你只是觉得待遇好来做这个行业的朋友,那么原谅笔者泼冷水,做这一行需要极大的热情才可以,单纯的觉得工资高赶紧走。培训出来的高手笔者也见过不少,但也真的不多,尤其是那些想都没想清楚,就是觉得工资高、行业好才来的,基本上培训班的贷款还没还完,已经不做这行了。

给那些想转行做程序员的朋友的一些建议

emacs

越来越多的人在自己的行业混得不好或者觉得写代码工资高,于是纷纷想转行做程序员,于是找培训班培训,在培训班里也能做一些东西,但是等培训出来以后发现到了公司以后自己培训班拔苗助长方式出来的与别人的差距太大。难道你到了公司以后还指望我给你讲算法、讲数据结构、还教你什么叫需求、教你怎么做模型、怎么写单元测试等等这些基础知识吗?并且除非真的是有天赋做这行,大多数半路出家的薪资其实也并不高,因为企业宁可选择一个20K的优秀的程序员也不愿花6K请三个能力达不到企业要求的码农!因为写代码这个职业真的需要你自己是真的是从内心深处喜欢这个行业。

泼完了冷水,下面我来增强一下提问者的信心。如果你真的喜欢写代码,享受用数学思维去解决问题,享受写代码的快感那么欢迎你加入我们这个大家庭。计算机行业从业者,或者我们说程序员这一行往往都比较单纯,一群技术理工男一般都比较纯粹,没有很多行业的那些乱七八糟的事情。并且做计算机尤其是互联网,发展瞬息万变,真的是用一行行代码改变世界,设想你做的app被大家喜爱,你做的网站深受大家亲睐的时候,那种成就感自然是不言而喻的。

想好了这点,那么楼主就可以开始想想程序员这条路了。

1、你能吃苦吗?

为什么这么问?很简单,996大家听过吧,这是互联网行业奇葩工作时间。做程序员这行尤其是互联网企业里,加班是常有的事,遇到赶项目或者大事通宵也不是不可能,华为加班猝死,阿里大楼凌晨还有不少人加班、双十一通宵,腾讯加班,58的996等等。所以做这行你首先得有个很好的身体,肯吃苦,工资福利好,但是加班也不少。

2、你喜欢互联网吗、喜欢技术吗?

做程序员目前工资待遇最好的在国内无非就是互联网公司了,很多应届生都能拿10K以上,年底还双薪,还可能有股票期权,要是遇到一个好的创业公司可能IPO之后瞬间屌丝登上人生巅峰!但写代码需要一个相对来说比较能耐得住寂寞的人,如果你坐不住一般来说不会是个好的技术从业者。既需要有独立解决问题的能力,还要有团队合作的能力,并且大多数码农都是比较闷的,很少有很open的码农,这也许是技术从业者的诸多共性吧。

互联网公司更是发展迅速,这就更需要你去关注行业形势,关注技术发展,否则的话你很快就被淘汰了。

3、你有较好的数学、英语基础吗?

越是顶尖的程序员,对于个人天赋的要求就越高,对,做程序员真的需要一定的天赋,天赋是后天怎么样的经验都积累不来的。一般来说,一个优秀的程序员需要较好的数学天赋,数学能力强的往往具备较好的优势,一个好的算法太重要了。如果你从小到大数学都特别好,并且也很喜欢数学那我觉得至少你具备了较好的先天条件。英语为什么重要?因为计算机技术本来就是老美发明的,你需要的文本编辑器、集成开发环境、官方技术文档以及很多专业书籍都是英文的,甚至即使有翻译的材料和书籍你会觉得也许英文版会更好,所以随着学习深入英语必定是个很重要的工具。笔者就是因为中学时代对数学、物理的疯狂喜爱和还不错的英语水平选择的这个专业。

4、现在学还来得及吗?

程序猿一定程序上是个青春饭,并且学习的最佳时间也最好早一点,本来就是一个耗费脑力的活,尽早学习优势更大,在国外都提倡孩子从小接触一些简单的编程。比尔盖茨、扎克伯格、杰克多西、亚伦斯沃兹这些人都是从小都学编程的。但是国内比较特殊,毕竟应试教育压力很大,所以不太可能从小学,但是如果你说你快三十了才来准备学写代码转行做程序员我一定不会觉得你这样是认真的,因为真的是有点晚了,因为你不可能有20岁左右的年轻人思维敏捷!当然如果只是作为一个兴趣当然没问题。

5、你愿意不断学习、长足学习吗?

计算机技术可以说是更新最快的了,互联网行业更是日新月异。一个互联网公司可能几年就估值100亿美金,也可能一夜之间关门大吉。因此你需要不断学习长足学习,不断的接触新的知识和技术,不断的更新你对行业的了解,并且随着年长你不可能永远在一线写代码,那么就可能往上走,那么你就除了要学必要的技术知识,你还需要学一些管理、合作、沟通的能力,你需要了解很多产品原理,你需要学习更多的业务知识,逐渐成为一个业务理解上的技术专家,而不是只会在一线写代码。因为那种真正把技术做到极致永远只在一线写代码的的大神真的不多,阿里这么大的公司也只出了一个多隆,纯粹做技术还做到副总裁级别的高P大神,但人家是一个人就可以搞定N个牛人的活的那种。

6、到底要学些什么呢?

那么接下来就要谈一谈需要学些什么了。

首先我觉得你应该具有一定的数学基础,并且有一定的英语基础。

第二我觉得可以从一门特定的语言开始,我建议从C语言开始,不建议从C++开始,因为C++学习难度确实有点大,不是一朝一夕的事情。推荐一本书<C primer plus>,书比较厚要有恒心!可能的话尽量买纸质书吧,比电子书效果好得多。推荐用codeblocks写程序,开源免费跨平台(但如果有条件的话MacBook pro对于一个程序员来说还是很有优势的,基于Unix你渐渐会懂的),这时候你没有必要用visual studio这种很强大的但同时也很笨重的IDE,也没有必要现在就开始学习Emacs、Vim这种门槛比较高的工具。

并且这时候一定要养成良好的代码习惯,学会做注释,学会合理的变量命名等等,千万不要成为一个程序痞子或者代码流氓!如果不知道怎样做好代码规范的,自己去网上搜大公司例如Google、Microsoft的代码规范!

要强调的是一定要多写多练多实践,看完不要看着答案敲习题的代码,这点非常重要!等你认真看完这本书后你绝对已经打好基础了,后续的话你可以慢慢看看K&R C这本书,毕竟C语言之父自己写的不用解释了吧。

然后你可以学习一门面向对象的编程语言,你可以选择时下比较火的一些语言。比如C#、Java、Python等都是不错的选择,主要是熟悉面向对象编程的思想。Python的中文资料比较少,单数语法非常漂亮,并且很多语言的设计哲学也逐渐在致敬Python,所以我觉得绝对值得一学。Java和C#就不用多说了,市场份额摆在那里。比如Java我推荐一本<Java核心技术卷>(卷一)就够了,高级特性别急后面来。然后你会渐渐发现有了C的基础你学Java会很轻松。随着学习的的进步,<Think in Java>和<effective Java>都是很棒的书。

这时候我觉得你有必要选择一个方向并且为自己的能力加成了。自己去了解以后要走哪个方向哪种语言,比如你想做Android,那你必须要学好Java,学习Android开发的一些基础知识,当然最好的教程就是个Google的官方文档。如果你想做iOS,你可能要学Swift,学objective-C等。如果你想学做游戏,你可能要学脚本,虚幻你要学C++,unity你要学C#。如果你想做Java Web你可能要学Java ee,要学JavaScript,要学HTML要学CSS等等。然后根据自己的具体爱好选择相应的语言和技术,而且最终要学的东西比这个多得多,不仅仅是编程语言,你要学类似于框架之类的等等很多东西。

与此同时,我觉得你应该去学一些算法和数据结构的知识,学习更多的数学知识。高德纳大弟子sedgewick的<算法>和<算法导论>是两本本很不错的书,但千万不要一上手就去看<TAOCP>,因为这本书其实难度还是比较大的。同时数学方面<离散数学及其应用>和<具体数学>是很好的书。这些书不要求你非要每一个问题都弄懂,只要多看就会有进步的。

确定方向之后就是实践了,网上有很多公开课的平台,国外如coursera、edx等,国内如极客学院、麦子学院、慕课网、百度传课、网易云课堂等等都是不错的平台,这里面有很多免费的课程的。学着去做一些小项目,真正去实践,比如Web你可能还要去学习各种框架等等。同时自己最好也要多写一些单元测试,这是一个优秀程序员的必备课。

学会利用工具很重要,不可能不遇到问题,Google你值得拥有,论学术能力和专业能力Google确实比百度强太多,至于怎么用Google,你百度一下吧,还有就是stack overflow这绝对是个好工具!

最后就是多逛开源社区多逛论坛,国内如开源中国都很棒的,多关注一些大神例如鸟哥、云风、左耳朵耗子等的博客,GitHub这个神一样的代码仓库你同样值得拥有,里面太多开源项目可以学习了!

获取方式:

1.在你手机的右上角有【关注】选项,或点击我的头像,点击关注!(关注我)

2.关注后,手机客户端点击我的主页面,右上角有私信,请私信发我:编程

电脑已经设置好了关键词自动回复,自动领取就好了!这几天上万个消息,真的回复不过来,所以回复的时候请注意关键词!

其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这里请私信我“编程”不管你是小白还是大牛欢迎入住大家一起交流成长。小编会在里面不定期分享干货源码,包括我精心整理的一份c++零基础教程。欢迎各位感兴趣的的小伙伴。

学习思路:

给那些想转行做程序员的朋友的一些建议

学习资料:

给那些想转行做程序员的朋友的一些建议

相关推荐