程序员为什么成为高级打工仔

说在前面

要想清楚为什么要做程序员?

 如今越来越多的人选择了或转行到了计算机互联网类的专业行业,但是我不建议还没考虑清楚就来到了这个行业,首先你真的要明白你为什么选择这个行业;可以是努力钻研并掌握一种新技术或是完成代码后的那种满足感;或者想成为一个行业某个领域中的业务专家;甚至是成为一个出色的架构师,做出改变世界的产品,而不仅仅只是想赚很多很多钱。

没有梦想,没有目标,没有热爱,没有好奇心的话,你会很难把工作做好,甚至讨厌工作,进而觉得一切都没有意义!所以,要么不做,要么就抱着目标,梦想和热爱去投入到这个行业中,把职业做成热爱的事业,成为自己的偶像,追逐梦想,找到工作和生活的意义!

所以,加油吧,欧庆深!!!你可以的!!!

新人如何为未来做准备?

如今的开源模块,开源项目越来越完善,你完全可以在各种网站上搜寻各种资料来完成你的项目,但是如果你没有思考就直接用上了,你永远成为不了一个好的程序员,你要理解其中的语法和原理,懂得分析哪些技术,有哪些优缺点,放在哪个模块使用更高效率......

所以,作为新人,你要做的就是语法一定要扎实,那就是每学到一个知识点都能亲自纯手动敲代码做一两个项目,并且能发散思维想到其他用处(能想到就很不错了),学到后面的知识点也能运用之前学到的知识来解决现有的问题,并且下意识发散思维想到其他用处就很好了,期间还能提升敲代码的速度,目的就达到了。

到了后面就需要了解计算机原理,数据结构,进程与线程,网络通信,处理异常等一个完整的知识体系架构了,每个语言基本都是按照基本语法,计算机原理,数据结构,操作系统,进程与线程,网络通信,处理异常等基本技术进行增删的,所以学会一个语言就可以融汇贯通其他语言或者新技术了,这些技术点先侧重理解原理,即使跟一个新人和一个老师说都能明白就算可以了,关于代码有时间可以敲一敲做做项目,观看B站的方式最省时也最不乏味。

对于工作的内容或者其他的新兴技术都是基于以上的知识架构发展而来的,所以你只需要保证自己语法和知识体系扎实,再加上对新技术保持好奇心(每周了解一两个新的技术的原理和用处并发散思维)就可以了,以下内容有些习惯可以现在就养成,有些需要工作了才理解,有些计划现在可以做,有些可以以后做!

高级打工仔的自我觉悟

1.1 为什么要做程序员

程序员只需分三类:天才的程序员、理想的程序员、平庸的程序员。

有人会问,费劲心思成为一个理想的程序员,又有什么用处呢?会有高薪吗?会能升值吗?迎娶白富美?都不见得。

但是我知道,当自己努力钻研并掌握一种新技术或是完成代码后的那种满足感,至少是金钱满足不了的。或许这就是许多理想的程序员追寻的东西吧。

1.2 普通程序员和高级打工仔区别

天才在生活中毕竟是少数,今天我们就来聊聊理想的程序员和平庸的程序员有什么区别。

理想的程序员与平庸的程序员只有一墙之隔。两者的差距只有6个一点点,而人与人的差距,正是在这日积月累的一点点中,被永远拉开了。有意思的是,我发现这6个一点点都和意识有关,也就是程序员和其他一切新兴职业一样,只需要意识加上时间的锤炼,人人都可以达到理想的阶段。  

第1个一点点:专注眼下

见过太多心猿意马的程序员,我不得不把「专注眼下」作为第一条。他们往往有各式各样的小梦想,比如做个小茶衣、做个小鹅贩、做产品、做销售、做投资,却被程序员的高薪或是没有转行的魄力「耽误」了,而因为不专注,他们不在意做好自己的本分,不在意锤炼自己的技能,不在意学习新兴的技术。

不可否认,这世界上存在着伟大的产品(像乔老爷)、伟大的销售(像埃里森)、伟大的投资客(像彼得菲),而他们毫无例外都是程序员出身。可你听说过巴菲特评价盖茨的话么,比尔盖茨如果转行去卖狗,那他一定是全世界最大的狗贩。

我坚信除了少数的天才外,冥冥众生均可以在多个领域取得成功,只要保持足够的专注。而哪怕你下一年就想卖狗去,程序员的经验仍然能训练你强大的逻辑、谨慎和耐心,放在哪个行业都是相当可观的竞争力。

第2个一点点:思考力与推动力

我认为处理bug、崩溃、调优、入侵等突发事件比编程本身更能体现平庸程序员与理想程序员的差距。

当面对一个未知的问题时,如何定位复杂条件下的核心问题、如何抽丝剥茧地分析问题的潜在原因、如何排除干扰还原一个最小的可验证场景、如何抓住关键数据验证自己的猜与实验,都是体现程序员思考力的最好场景。是的,在衡量理想程序员的标准上,思考力比经验更加重要。

有时候小伙伴跑过来,问我「提交了一个任务被卡住了,怎么办」的时候,我总觉得他可以做得更好。比如,可以检查试验别的任务,以排除代码自身的原因;可以通过Web UI检查异常(如果没有账号,可以让我提供);可以排查主机日志或删除缓存,再不济,总应该提供任务ID和控制台日志给我。

理想的程序员永远不会等事情前进,他们会用尽一切方法让事情前进。

第3个一点点:Never Say No

我发现在很多团队里,都存在一种技术和产品的对立,程序员往往以「技术上无法实现」来挡产品的需求,而产品也往往以「Facebook可以为什么我们做不到」来奚落程序员。这两句话应该属于禁语,从根本上都不利于程序猿和产品狗的相亲相爱。

一句「技术上无法实现」是容易出口,可有多少人在说出这句话的时候,心里是100%肯定的?如果不肯定,为什么不能回去谷歌一下再回答?

原本我以为程序员是充满想象力,在因为有想象力,才能诞生那么多改变我们生活的软件和互联网产品。见识多了,才了解大部分程序员已经在与bug的对抗中变得保守而不愿担当风险,与此同时许多团队也不愿意宽容失败。于是「Say No」变成一种习惯性的抵触,还记得曾国藩为什么解散湘军么?他说那支军队已「暮气渐深」,不能打仗了。

要做理想的程序员,就不能给自己滋生暮气的机会,如果面对不合理的需求,可以把时间成本摆出来,把曲线救国方案亮出来,简单粗暴「Say No」是不可取的。

一个优秀的程序员最大的优点就是从来不和老板说这个做不到那个做不到。

第4个一点点:投资未来

程序员是一个非常残忍的职业。你所学所用的语言、框架、模式,很可能在数年内就成昨日黄花了;你现在嘲笑的另一群程序员,可能马上就能转身来嘲笑你了。

所以理想的程序员除了做好自己的本分,还要花费时间来投资未来。

什么是「投资」?投资就是你现在投入的时间,在未来会以更多的时间或者金钱(看看早几年学习iOS的程序员现在的薪酬!)回报你。

举我自己的领域--数据挖掘为例,08年左右Hadoop开始兴起,一时「大数据」概念火热,Hadoop工程师万金难求,各互联网公司纷纷把数据统计、数据分析和数据挖掘的业务切换到分布式平台上。这几年眼看Hadoop还在不断迭代,Spark又异军突起,一举刷新了Hadoop保持的排序记录,以内存存储中间数据带来的性能优势和丰富的数据结构让人爱个不停,各种奇异的小bug和陡峭的学习曲线又让人打退堂鼓。那么,明眼人都知道Spark是未来的趋势(内存会越来越便宜),在主业务放在Hadoop的条件下,就可以适当把一些小模块切换到Spark上,同时留意Spark社区的发展。很快从Spark获得的性能收益就能把之前投入的学习时间挣回来。

第5个一点点:善用工具

善用工具可以分为4个层面:

·搜索引擎

·不相信重复

·代码片段

·自动化

我刚入行那会,一个计算机专业却当了公务员的朋友问我,你一点都没学过编程,平时怎么写代码?我说,谷歌,于是遭到无情的耻笑,以至于我在哪里的账号都叫2shou,告诫自己是一个无耻的二手程序员。这是一个笑话,但如果现在问我,我还是要回答谷歌。

程序员的成长就像膨胀的圆饼,外面是无边无际的大海,圆饼越大,与大海接触的面也越大,懂的越多,不懂的越多,而计算机科学又是一门更新换代异常迅速的学科,同时也是知识互联网化最好的学科,很术利用传统的科班式有教有学的方法,相反通过搜索引擎则很容易获取到最新的知识。

不相信重复,大师的话叫DRY原则(Dont repeat yourself),代码写多了,会有人为的直觉判断好的和烂的代码,我的标准是简洁和规范,简洁并不是美感上的标准,重复越少,给自己出错的机会也越少,后期维护的成本也越少。

如果你不幸丢了三周前的代码,也许你能凭着过人的记忆力把脑子里残余的片段复写出来,但如果丢的是三个月前的代码,恐怕就没有那么好的运气了。理想的程序员会着力找寻有效的资料保存方式,把工作里灵光闪现写下的代码、脚本、配置、经验等短的片段保存起来,以便任何时候都能复查。

理想的程序员必须懒惰。对他们来说,重复的步骤和重复的代码一样丑陋,如果意识到一项工作有可能长期要重复,那么自动化的时间总是越早越好。

第6个一点点:管理时间

之所以管理时间会对程序员这个行当特别重要,是因为在完成任务时你必须像荒野里的狼一样「独行」。没有外界约束的情况下还能稳定控制自己,保证能高效率地工作和学习,那么日积月累你肯定会变得比一般人厉害。

程序员干的是高强度的脑力活,一般每天集中4-5个小时应对本职工作就足够了,但工作之外,一定要安排时间用于学习。

除了学习,留点时间放空自己也是必要的,利用泡茶或者喝咖啡的间隙,把弥足珍贵的时间留给自己,往前想往后想,事半功倍。

1.3 如何成为高级打工仔

1.3.1来自:http://www.asmedu.net/news.jsp?index=155

  1. 大量编码经验,解决过大量问题,熟悉大量算法,自己真正动手编过。

(2) 工作勤恳,当研究一个问题的时候就应该埋头苦干。

(3) 经常要思考这个阶段比上一个阶段是不是有所长进,今天比昨天提高,每天要反思自己所做,好的保持,形成习惯。不好的就要反思,下回不能犯这样的错。

(4) 要学会创新,学会设计。创新很重要,比同类产品有所创新,这就是一个亮点和优势。当自己对一个项目做设计,试着自己去设计各种软件,思考创新点。

(5) 努力编程,不断地学习,不断地反思,深度思考。思考是一切进步的基石,多思考会使你热爱这个行业。思考+努力,万事皆可达。

(6)设计,撰写的模块都遵守MVC划分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值