专栏名称: Cocoa开发者社区
CocoaChina苹果开发中文社区官方微信,提供教程资源、app推广营销、招聘、外包及培训信息、各类沙龙交流活动以及更多开发者服务。
目录
相关文章推荐
51好读  ›  专栏  ›  Cocoa开发者社区

编程入门--如何成为一名软件工程师

Cocoa开发者社区  · 公众号  · ios  · 2016-09-05 08:06

正文

▲点击上方“CocoaChina”关注即可免费学习iOS开发


文:老吴

来源:PaysonNotes

iD:PaysonNotes


我到底应该学什么语言?


编程语言各式各样,花花绿绿,不知道该选啥。到底有多少种编程语言呢,我上维基百科一搜:https://en.wikipedia.org/wiki/List_of_programming_languages 天啊,比我认识的明星都多。我上大学时候,如果有人发个帖子说php是世界上最好的语言,那全论坛的人都炸了毛了,嗷嗷的能吵吵好几天。其实各种编程语言有点像中国各地的口音。刚上大学时候在北京,我们宿舍六个人来自不同的地方,那晚上一个个给家里打电话都不用避人啊,谁都听不懂谁。可过了一个月后,大家竟然神奇般的都听懂彼此的家乡话了,毕竟都是中国话嘛。


编程语言也是一样,你乍一看貌似不认识,稍微了解语法熟悉一个月,那基本都是一样的,万变不离其宗。所以不用太纠结选语言。


那有些同学就要问了:我总得选一个开始学吧。我建议就选当前最流行的就好。我常用的方法就是,找一个找工作网站,我随便敲了个monster.com,然后去搜索加州的那个语言的工作数量。我来举个例子:



JavaScript,1000多个工作机会,28页。



Scala,757个工作机会,也不差,22页。



F#,7个工作机会,就一页。


这三个让你选,那你肯定也会选前两个开始学。F#学完了很开心,但是找不到工作啊。到时候还得去适应别的语言,那就浪费了一个月,就像你开始适应寝室同学口音的那一个月。当然如果你已经会好几种语言了,那也可以搞个小语种来见识见识,也是不错的。我这个意见针对于不知道挑哪一个语言的学习者。


学校的作业就算真的都自己认真写完,貌似也不能提高太多能力


即使认认真真写作业,做老师留的project,貌似感觉还是心虚啊。我上学时候真是,我学的专业更偏向数学,基本要求编程的唯一一门课就是Java入门。上课那个困啊,作业不会写瞎糊弄啊,反正到学期结束也感觉没学到啥。


当时我觉得我肯定以后不会从事软件行业的工作,没学到就没学到吧,该吃吃该喝喝。殊不知,在我傻呵呵一天天到处寻找北京的好餐馆的同时,我的心怀志向的同学们都开始找老师,问问能不能去研究生实验室帮忙了。


有一天我在北邮的主楼前吃冰糖葫芦,我的一个姐姐,是北邮的博士生,问我有没有找导师。我说我才大二啊,不着急。她说就是你们大二的好几个都在我们实验室呢,做的Android的手机游戏,做的可好了,还要去参加比赛呢。姐姐说:我把你介绍给那个实验室的导师吧,我跟她关系很好,虽然他们项目已经开始一段时间了,不过你去她会同意的。


如果时间能倒流,我肯定说:啊快快快,这就带我去见导师吧。可是,当时毕竟年轻啊,我说我吃完冰糖葫芦再考虑吧。姐姐一脸恨铁不成钢的样子走开了。


其实我要说的是如果有机会能进入研究生的实验室那就进去跟一学期试试。看看他们都干啥。研究生有的特别努力,周末也在实验室。本科生周末没课,去实验室找师兄师姐聊聊天,问问他们学习的历程。最重要的是搞到他们代码repository,开始读一读,然后读得差不多了就跟导师说:你看,我也很感兴趣,我给你干活吧,反正你也不用给我钱,就是免费的体力,我就是想学点东西嘛。除非老师的项目是国家机密,一般都会同意的。


万一你特别羞涩,就是不好意思跟老师当面说,那也没关系。每年大公司都有很多夏令营或者类似这种的活动,比如Google Summer of Code。人和人都是不见面的,就是一起搞一个开源的小项目。特别适合羞涩的人,在家里默默的就提高了写代码能力。


还有个就是大家都很熟悉的GitHub,上面无数个开源项目,挑一个加入,慢慢能力就提高了。


除了天才,大部分普通人的能力都得靠后天努力。写代码跟写文章一样,多读多练,自然能写出好的东西来啦。


哪些课程是非常重要的呢


算法,算法,算法。


算法的重要性,拿我第一个关于语言的比喻来讲,各种语言是中国的各地口音的话,那算法就是中华文化。就是因为有了中华文化,才把我们凝聚到一起,让我们了解彼此的语言。


有很多同学抱怨算法课不清不楚,不明不白。我觉得主要问题还是在于,对于算法的理解不够透彻。如果你觉得你的老师讲得不好,或者教材不够吸引人,那可以上一个MIT Open Course,那个算法课还不错。YouTube上面有,MIT Open Course官网上面也有,搜索Algorithm就可以找到啦。而且老师说话一点都不快,即使英语不够好,也听得懂一些。大部分时间那个课程的老师都是记笔记在黑板上的,所以听不懂也可以看看他的笔记。即使你对自己的算法没什么自信,我还是强烈鼓励你去参加ACM竞赛。一般大学都有ACM竞赛的队伍,找个学长学姐或者辅导员问问,学校的ACM测试网站,你可以去上面多做几个题试试。如果有幸能代表学校出去比赛,那你肯定是算法大牛了。即使没机会,你也在训练的过程中提高了自己思考能力。推荐算法书:




想写好代码,除了多读多写还要多思考。学好了算法,你能更善于思考,更快的解决问题。


要不要去实习,实习的时候该做些什么呢


只要有机会一定要去实习啊。实习能赚零花钱,还能学知识,还能认识技术达人,美女帅哥。我当年实习可高兴了,虽然我是去做部门秘书。(额,老吴,这个要不咱就别算实习了吧。)最重要的是能让你早点接触到,什么是真正的软件项目。


在学校里面的作业也好,研究生实验室的实验项目也好,都是不会进production的,有时候小项目甚至连server都没有,数据库也没有。在公司里面实习,你能真正的了解软件开发流程,以及每个环节都代表什么。


这里我要给大家一个小建议。当你去实习的时候,你肯定是组里面最年轻的小鲜肉,有时候你会觉得,哎呀这帮同事都好无聊啊,整天聊孩子,也跟我玩儿不到一块去,上班咋这么没意思呢。千万别这么想,你要试图开始一段话题,问问组里面的人学习历程,怎么走到现在的职位的,都学了什么,下班回家看什么技术书籍,逛什么技术论坛,等等等等,真的能学到很多。





最近发现一个好玩的测试,互联网从业者都应该来试下,我得了 85 分,看看你能不能超过我!长按图片识别二维码或者点击阅读原文就可以参与。



微信号:CocoaChinabbs


▲长按二维码“识别”关注即可免费学习 iOS 开发

月薪十万、出任CEO、赢娶白富美、走上人生巅峰不是梦

--------------------------------------

商务合作QQ:2408167315

投稿邮箱:[email protected]