栾博老师发的讲义中发现的文档,看的很有感触,分享一下!
正文:
网上看到很多人工资低干不下去,想转程序员;还有很多没学历的想改变生活,也说要做程序员;以及一些大学里应届生,找不到工作,自学想当程序员。
这一行的门槛真的低吗,且假如他们进入这一行业发展会好吗?
1、程序员门槛:
1.程序员从业不需要执照或资格证书,只要能写代码即可入行,比医生、教师、律师门槛低
2.程序员学习渠道丰富,可以通过课堂、网络、书籍、培训等获取相关行业技术知识。
3.程序员需求量大,校招抢学生的时候,不会写代码都能招进去。
新手程序员要是引导的好,一两周也可以学会一门语言并上手干活。而且程序员是乐于交流的一群人,很多开发的问题也都能在stack overflow csdn 甚至QQ技术交流群里找到答案,只要想学还是能成长的很快的。
虽然程序员的门槛低,但是门里面的天地也是很广阔的。技术日新月异,需求变化多端,开发的系统也可能是冗余复杂,这行竞争很激烈工作强度大,入行也只是万里长征的开始而已。
2、入行门槛是不高,发展门槛就不低了。
程序员和程序员之间存在着那么几条明明暗暗的线,那些线外行人看不见,水平低的看不懂,只有准备摸到那根线的人才知道自己被坑了。
行业在高速发展之中,经济成就和热钱的进来,造就了无数的岗位,岗位一多没经过系统培训的人就这么入行了。
如果工作过一段时间,你就会发现那些程序员会“差那么一点点东西”。
1.数据结构和算法。我知道培训班肯定不会教这个,不然把ACM的小伙伴置于何地。
2.操作系统,你知道一个异步调用,操作系统里早就提到和实现了无数遍的东西,到了现在都还有人拿出来当概念玩,拿来做卖点,或者XX解读。
3.计算机网络,网络对那帮人来说就是个黑盒子,真的。离开tomcat都不知道web是什么了。
4.编译原理,撕逼大战不解释 ---------PHP是世界上最好的语言
以上 是一个程序员的基本素养
现在的码农队伍起码缩水90%。就互联网来说,到处充斥着 一群 “HTML文本构造人员”。仅此而已。
程序员这个概念太大了,会 html/css 的人、会写 linux 内核的人,都是“程序员”,前者门槛有多高?后者门槛又有多高?
程序员这个行,能力层次太多。而恰恰社会也需要各个层次的程序员。(总需要一些人来写 html/css 吧。
再比如同样会写 html/css 的人,能写出优雅的兼容的 css 和不兼容的 css 又是不同层次,而且层次相差也不小。
就像做饭,人人都会做饭,但是专业的厨师却不多。
3、入行门槛不高,多掌握技术才是发展硬道理
如果我们对码农技术进行分层(层次本身没有优劣,是为了描述技术依赖关系而划分.....但是多掌握几层一般会更好一些) :
1层是数学(加密解密,压缩算法,时频转换,计算机模拟\仿真)
2层是数字电路(机器码如何被硬件电路执行的过程)
3层是计算机组成原理(计算机体系架构,计算机是如何组成的)
4层是计算机算法和数据结构(低端排序,中端动态规划,高端人工智能)
5层是计算机操作系统,计算机图形学和编译原理(linux内核,词法树\语法树)
6层是计算机编程语言,IDE,架构(各种语言,各种架构)
科班教育(半路转行的码农只要老老实实把计算机本科教程刷一遍也能算科班阵营的)调教出来的码农正常情况下应该熟悉4-5层,一些小牛熟悉3-6层。个别神人能额外在擅长1层
而如果是培训班速成出来的码农,能熟悉第6层的一些知识就不错了。
在经济形势不错,码农职业有泡沫的时候,熟悉第6层就能找到工作,运气好,收入也许还不错。因此,码农职业给人感觉“门槛低”(其实门槛也确实不算高,如果和医生职业比的话)
然而工作若干年后 :
·熟悉3-6层的码农成为了架构师\主程,开始参与项目\产品的设计和规划。
·仅熟悉第6层的速成码农工作依旧仅是简单的按照别人的设计写代码
这样等到35岁以后,前者还有可能继续做码农的工作,后者则出局的可能很大。
冯唐说写作有一条金线,计算机无疑也有这么一条金线,或者也许各行各业都有这么一条金线。这条线,是无形的,没人知道在哪。过了,你会知道你过了;没过,可能你根本不知道有这条线。
这条线是感觉上的,也是技术上的。
过了这条线,coding就不是为了钱是为了多巴胺了。这条线之上,程序不再是工具,而是玩具,会让你感到兴奋。你能感觉到语言,代码,算法,模式,思想都碎成粉碎,一块块等着你来拼。你能体会到程序里齿轮般环环相扣的精巧。你能闻到代码的味道,看到代码的形状。过了这条线,你最爱的事会变成重构,变成删代码,因为你能感觉到有一个完美的东西在那里等着你。过了这条线,35岁让你不写程序了你会觉得我他妈还没玩够呢。你会觉得你能干这个行业干一辈子了。觉得一件事能干一辈子了,这才是过了那个门槛,否则只是路过。
这行竞争很激烈工作强度大,入行也只是万里长征的开始而已。一个行业,都有他的付出。不断的学习才是程序员的归宿。
成为优秀程序员的10条黄金法则
1.不要重复
这是一条非常值得遵循的伟大原则。我很习惯于回过头去检查自己写下的代码,重构那些被多次使用的部分。虽然在将一个长方法分解为若干个短方法时,会遇到一些困难。Ctrl + R + M在visual Studio中非常有用,可以帮助你重构代码为单独的方法。这使得代码更加可重用和可测试。
2.命名变量的要点为说明它们是什么,而非它们是什么样的数据类型
唯一的例外是,如果你正在处理别人的代码,并且需要继续参与的,那么你应该遵照他们的命名规则。
3.给你的方法取一个明确说明他们要做什么的名称
这一条如果做得好,那么将大大减少注释的必要。如果你的代码清晰易读,那还需要注释干什么。
4.不要使用奇奇怪怪的数字和字符串常量
你的代码中不应该有任何会造成他人误解或需要猜测的数字和字符串值。创建常量、枚举和私有变量时,要给他们取一个能够更易于理解的名字。
5.可能的话,自己写方法,这样在测试方法时,就不会对应用程序的其他部分有任何依赖
将方法写成不需要关注从哪里调用的方式。这样会让代码更可测和更可重用。
如果你正在使用会话值或app设定值,那么把它们作为变量传递,得到会话,并在你调用方法的时候配置值。这能让代码变得更可测。
6.不要害怕寻求帮助
这句话不是让你在碰到所有问题时都去寻求帮助,我的意思首先你得自己去思考,去尝试自己解决问题,但如果你实在想不出解决方法,那么就应该去寻求他人的帮助。可能已经有人经历过这个问题,知道如何解决它。同时,在告诉别人你正在做什么,你期待什么样的结果,问题是什么的过程中,或许灵机一现,搞不好你自己就揪出问题的关键了呢。
7.不拖延
如果你看到bug或乱码,那么当时就解决然后再前进。不要想着以后去做或让别人去做。
8.与他人分享知识
不要敝帚自珍。尝试创建一种互助的文化。你会发现,团队的工作效率比单枪匹马更高,并且互相帮助的氛围能更快地提升各自的水平。同事的进步,并不会让你落后,也不会让你有被炒的风险。相反,你变得更有价值,因为你不但拥有渊博的知识,敢于学习,还能帮助周围的人一起提高。
9.当你的同事沉浸在思考中时,不要打断他们
己所不欲,勿施于人,当你自己沉浸在编程中时,当你的大脑高速运转工作时,就像你正在小心翼翼地用纸牌搭建房子一样,你也不希望有人来打搅你。这时如果有人问你问题的话,那么你的注意力必然无法集中,就像房子可能会很容易坍塌。这可能需要5到10分钟的时间才能将注意力重新集中起来,将思绪一一理顺,而原本这个问题只需要Google搜索一下,或者询问别人就能解决。如果你在这方面尊重你的同事,并且让他们知道这样做的重要性,那么他们也会做相同的事,从而反过来让你变得更高效。
10.积极地面对批评,而不是消极抵制。
对我来说,批评是一个让我能够改善提高的机会。如果还有一种做事的方法是我没有想到的,那么我会想去了解它,因为这或许能帮助我改进自己。
好了,10条黄金法则已经讲述完毕,下面让我们一起学习它们,利用它们,成就更优秀的自己吧!
|
|