工欲善其事,必先利其器
(。・∀・)ノ゙嗨,小伙伴们
你现在收看的是腾讯NEXT学位出品的
互联网5大职业解析 — 程序员篇
希望能帮你了解未来的职场全貌~
以下正文
程序员真的很厉害
如果你要找到小米创始人雷军,微信创始人张小龙,以及作家王小波的一些共同点的话,除了他们都很厉害,之前他们都做过程!序!员!
而且,程序员已经成为未来丈母娘物色的首要目标,朝阳公园里经常会听到阿姨们念叨:“你说这程序员都是干啥的呢?”
那为什么程序员这么厉害呢?
首先,多金。收入是和供需有关的。会写程序的人,据说全国也只有200万(占人口0.14%),相当少。另外,印度270万程序员(最多的),也只占人口0.2%的。底子扎实的苗子每年都会收到BAT的重金诱惑,毕业月薪15K实在太常见。
其次,稳定。在所有职业当中,程序员是增长得最快的,很多传统工作已经渐渐被取代了。正是因为程序员把这些工作自动化了,这个趋势肯定会继续下去。
最后,专注。程序员是最靠能力说话的职位了。没有所谓的办公室政治和按资排辈,代码写的好就是好,写的不好就是不好,高下立判。而且技术越强,别人就越替代不了,1个优秀的程序员能解决的问题,往往10个普通程序员加起来都解决不了,是一个让个人英雄主义发挥到爆棚的职业。
那么我们回到最初的问题
▼
程序员是干什么的?
这里统一答复:把解决问题的方法,以计算机可理解的方式告诉计算机,并让之执行,以解决问题的工程师。而计算机可以理解的方式,就是代码(code)。所以程序员的英文名称更为形象 — Coder。
写程序就像是说话一样,需要用到所谓的语言,比如C语言,Java,Php,Html,Javascript,Sql等等。
程序员的发展细分
程序员可以分为前端和后端,怎么区分呢?
最生动的例子就是网站的登陆界面,在一个网站登陆页面:
你的鼠标移入输入框、移出输入框的颜色变化,以及输入框长什么样子,这部分就是前端完成的。在你输入用户名、密码,点击登录按钮后,你的用户名和密码就会发送到服务器,后端做验校,那么你登录是否成功。
总而言之
前端主要负责实现视觉和交互效果,以及与服务器通信,完成业务逻辑。其核心价值在于对用户体验的追求。
后端则负责功能(下载、上传、评论...)的可用,区别于前端开发工程师,重点是对业务逻辑及数据的处理。
如果你前端和后端都精通,那么全栈工程师你就当之无愧了。
对于前端和后端的区别,你还可以看下图来借鉴
前端的必备技能&素质
对于以后的毕业求职,我们应该掌握什么样的能力才能胜任前端的工作需要呢?以下帮你梳理了前端必备的软实力和硬实力。
硬实力(前端方向)
1.HTML
网站制作的基础,浏览器打开任意一个网页,查看其源码都是看到的HTML。因为HTML是网站页面最终的表现形式。网站页面所有的内容都需要通过HTML展现,而且HTML很简单,它甚至都不能算做一门编程语言,而是一个标记语言。HTML就是一些标签,页面的内容就放在一个个标签里面。
2.CSS
学习了HTML,知道页面的内容是怎么展现的了。那么我们是不是可以把页面展现得更漂亮呢(毕竟这是一个看脸的时代~),平时我们看到的那些漂亮的网站页面,大多数都是通过CSS来美化的。CSS代码都是些样式属性,这些样式属性添加到HTML元素上面,对应的HTML元素的样式就会被CSS改变,学起来会很快,因为编写HTML和CSS可以直接在浏览器上面看到效果,非常有意思!
3.Javascript
JavaScript会比HTML和CSS难一点,主要的作用是页面交互,不过入门很简单,跟着教程练习学起来会更加顺利。如今JavaScript被炒得比较火(库和框架满天飞,用得最多的还是jQuery),不过学习好基础才是最重要的,正所谓万变不离其宗。学习建网站,当然就要勤动手,巩固好基础。
4.数据结构
程序 = 数据结构 + 算法
数据结构的本质就在于:如何将现实世界中各种各样的数据放入到内存中,并且如何在内存中操作这些数据,如何评价这些存储方案和操作方法。
软实力
学习能力。尤其是自学能力,你啥时看到那些有名的程序高手在论坛上问“学习XX该看什么书,如何快速学习XXX,学习XXX有什么代码推荐”之类的问题,他们想学什么很快就能自己找到相关资料。这个行业发展太快,技术淘汰的速度也很快,3年不学新东西就可能落伍了。
动手能力。都是看书看资料,当别人还在纠结看什么书,还在纠结书里的字句是什么意思的时候,有些人的几百上千行代码都已经能运行了。
耐心和毅力。做程序员兴趣固然重要,写自己喜欢的代码那是相当愉快的事情,但是程序开发中无论如何还有大量乏味无趣的事情,要能坚持,咬牙把这些做完。
表达能力。能在大庭广众下,把自己的想法逻辑清晰流畅地讲出来,让人听懂。
前端的晋升路径
只要选对了方向,全世界都在发光。其实大多数前端工程师的晋升路径并不复杂,无非以下几种:
总的来说,可以分为技术大牛路线和项目管理路线。这两条路并没有孰优孰劣,在互联网公司里这两者的地位和薪资都处在同一水平线。
走技术路
对于选择这条路的人来说,需要根据自己所在的行业以及技术范围训练自己。程序开发有很多方向,有做web开发的,有做网页游戏的,有做视频直播的,有做数据库的,有做网络安全的......我们不可能每个领域都做得很好,所以根据你自己的爱好,选择一个自己努力的方向。
等你在某个技术领域达到一定的级别,你就可以往架构方向发展。你可以独挡一面,给你一些研发人员,你可以带领大家高效地完成公司的任务。这个时候公司员工提到某些技术难点就自然而然地想到你。我相信升职肯定是没有问题的。
走管理路
选择这条路,并不意味着你程序开发能力可以不强。实际上做技术管理,首先你要在曾经的程序开发岗位上做得不错。但是你自己更看重带领团队带来的满足感。所以你希望走管理这条路。程序开发的知识你不能丢,并且最好能够保持一定的技术敏锐能力。
在保持技术敏感度的同时,你需要将侧重点转移到人上。这需要你提高自己的沟通能力。对于外企的员工来说,提高英语能力是首当其冲的。除了沟通能力,你还要制定如何提高员工技术能力的计划,帮助团队成长,团队成长了,他们才能帮助公司提高生产效率,或者拿到更多的项目。
沟通和制定计划之外,还必须培养自己的演讲能力。怎么为你的团队获得更多的公司资源,这都需要对上你有很好的口才,把你做的东西表现出来。这些都需要很多的软技能。
程序员薪资水平的变化
薪资一直都是大家最关心的问题,我们调取了最专业的互联网招聘网站 — 拉勾网15、16年北上广深四地的薪资数据。
北京地区
广州地区
上海地区
深圳地区
北京因为互联网企业集中,高校密集,给应届生开的OFFER最高,16年平均薪资为7.3K,北京依然是技术爱好者的最好去处。深圳上海次之。
如何入门程序员
不管是在线下还是线上的书店,满目都是《21天学通 X》这种速成书目,它们都承诺在很短一段时间内就让你能够学会相关技术。Matthias Felleisen 在他的著作 How to Design Programs一书中明确指出了这种「速成」的趋势并予了讽刺。
所谓的「捷径」是不存在的,智者说过,精通某个东西需要10年或10000个小时,也就是汉语中的「十年磨一剑」,所以不用着急,功不唐捐。
如果想入门程序员行业,那么第一步我们要如何走呢?
首先,我们先要走出两个困扰无数人的误区。
1.我是不是现在开始太晚了
2.我不是计算机相关专业的
首先,大牛之所以是大牛,不是因为“他们开始得早”,而是他们“学得已经够久”。如果你现在开始几年之后成了大牛,你会发现编程并不是一项需要极高天赋的神技,而是一项基本的技能。
其次,美国的程序员交流网站Stack Overflow在去年的开发者调查中想要了解,码农们是否都有大学的计算机专业学位。有26086名程序员参与了这项调查,其中有近一半受访者的答案是,没有学位。
从启蒙到入门
结束启蒙阶段后,初学者积累了一定的代码量,对编程也有了一定的了解。这时你可能想去学一门具体的技术,诸如 Web 开发, Android 开发,iOS 开发什么的,你可以去尝试做一些尽可能简单的东西,给自己一些正反馈,补充自己的推动力。
但记住别深入,这些技术有无数的细节,将来会有时间去学习;同样的,这时候也别过于深入特定的框架和语言,现在是学习计算机科学通用基础知识的时候,不要试图去抄近路直接学你现在想学的东西,这是注定会失败的。
那么入门阶段具体该做些什么呢?这时候你需要做的是反思自己曾经写过的程序,去思考程序为什么 (Why) 要这样设计?,思考怎样 (How) 写出更好的程序?试图去探寻理解编程的本质:利用计算机解决问题。
以下推荐
《Web前端开发最佳实践》,这本书是前端开发领域的经典之作,是一本扎实前端基本功,规范我们前端代码的实践性书籍。本书主要讲解了HTML、CSS、Javascript以及移动端开发的最佳实践方案,能够对缺乏良好指导的开发者产生很大的帮助。通过阅读本书我们可以掌握如何编写高可读性、高维护性、高性能的HTML、CSS以及Javascript。
《操作系统》,了解了操作系统的原理以后,才能更好的操作我们正在使用的系统。属于中级的课程吧。
《编译原理》, 如果说计算机语言是魔法咒语的话,编译原理就是告诉你,这些魔法咒语是怎么生效的。
《计算机组成原理》 哦,这个非常有趣,和操作系统有很大关系,但是这个是从硬件的层次上面(大部分来说)来解释计算机的组成
《软件工程》 估计题主暂时看不到这里的了,什么是软件工程呢?我的理解就是,把写软件规范化。形成一种规范以后好处就不言而喻了。
如果你能设法完成以上的所有任务,恭喜你,你已经真正实现了编程入门。
计算机应届毕业生要有怎样的能力?
其实对本科生的要求其实很简单,认真学过专业课就行!
所谓认真学过专业课的程度是:
能达到这个程度的本科生,可以随便秒大部分水硕,同学们可自行对照。
可以从哪儿获取知识/信息?
免费IT学习社区
腾讯课堂
慕课网
极客学院
麦子学院
FreeCodeCamp中文
汇智网
实验楼
伯乐在线
博学谷
CSDN知识库
GitBook
看云文档
博客园
CSDN
菜鸟教程
简书程序员专题
开发者头条
稀土掘金
各大名校的公开课
腾讯课堂的公开课
网易云课堂大学计算机课程
学堂在线计算机课程
哈佛大学公开课-计算机科学_全20集
麻省理工学院公开课-计算机科学及编程导论
微信公众号/订阅号
腾讯NEXT学位
菜鸟教程: runoob
程序人生: coder_life
前端大全: FrontDev
前端早读课: FeZaoDuKe
算法爱好者: AlgorithmFans
算法与数学之美: MathAndAlgorithm
InfoQ: infoqchina
Node地下铁: Node-Subway
SegmentFault
数据库开发: DBDevs
我是架构师: Architect-msup
云计算头条: chinacloudnj
W3cplus: w3cplus_12
架构师: JiaGouX
Docker: dockerone
Web前端
W3cplus
W3cfuns
DIV.io
CNode社区
前端乱炖
极客标签
前端观察
前端里
前端教程文档
ES5: Annotated ES5
ES5中文: ES5 - HTML5 Chinese Interest Group Wiki
Web 技术文档
MDN ES5: https://people.mozilla.org/~jorendorff/es5.1-final.html
颜海镜ES5: http://yanhaijing.com/es5/#book
阮一峰Javascript教程: http://javascript.ruanyifeng.com/
阮一峰ES6: http://es6.ruanyifeng.com
HTML当前标准:https://html.spec.whatwg.org/multipage/
Html5标准:http://w3c.github.io/html/
css标准: https://www.w3.org/Style/CSS/
W3CHelp: http://w3help.org/zh-cn/kb/
GitHub - sunyuanSoftware/itshare
大牛们有哪些要对准程序员说的?
贺嘉
腾讯面试官
1.趁着在校期间,多做完整项目,多写代码。哪怕没有老师给你项目做,你可以自己创造需求也可以编程实现这个项目。
exp:作为鹅厂面试官一员, 我们会更多基于STAR面试法,主通过你的行为看你的编程能力,除了让你做算法题外,更重要的是你实际写过的代码和项目,效率如何?有没有考虑过异常处理?实际的访问性能如何?有没有开过自己的github项目,或者是给知名项目贡献过源码,其次才是你的编码风格如何,学习成绩啥的。
2.当你踩过的技术的坑多了,自然你就成为大牛了...
exp:之前我在知乎发了一篇小程序的教程,得到了800多个赞和知乎编辑的推荐,背后是花了3个晚上每晚干到12点,来填小程序的一些坑。
3.学技术要学主流框架,学Node要学Express,学Java就不要忘了SSH,学Ruby首学Rails。
exp:非主流技术比如Action Script,你会也没人招这个专业的。
蓝色
知乎编程领域优秀回答者
不要担心自己没有计算机基础,也不要羡慕高中有计算机基础的同学,其实你们都还是在一个水平线上。
很多课程不是没用,不要太抱怨,只是教学的方式没有办法引起你的兴趣。
对于一门课程,选一本经典的教材,认真研读,并且善于Google,看看国外名校这门课程的教材与讲义,并且做做他们的作业。
数学很重要,也许你只有这一次机会有大把的时间来好好学习数学。
编程语言不需要会太多,C,C++,Java,Python,汇编远远足够。增长见识可以看看函数式语言,如OCaml,Haskell。学会一门语言,就去用这门语言刷刷题,如HackerRank | Technical Recruiting,About - Project Euler。
勿好高骛远。经常去造造轮子,如标准库,OS,编译器,网络库,这个时候都是青春年少容易被诱惑的时候,但是切记不要被周围所谓华丽的界面与技术迷惑,那些其实都是浮云。
本文参考了很多大神的精彩回答
以下是直达电梯
知乎蓝色
https://www.zhihu.com/question/50312449/answer/120653369
知乎贺嘉
https://www.zhihu.com/question/50312449/answer/129539843
知乎笑笑
https://www.zhihu.com/question/46939006/answer/108635330
知乎WenRou
https://www.zhihu.com/question/20194473/answer/25163794
知乎蔡如海
https://www.zhihu.com/question/20259295/answer/125520061
知乎姚冬:
https://www.zhihu.com/question/27180582/answer/35573520
简书劳卜:
http://www.jianshu.com/p/3cf51d3dbb73
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有