OurDotNetLogo

.NET学习,OurDotNet,.NET学习,OurDotNet

来自10年经验的程序员的自白
作者:程序员精选俱乐部  |   2017/12/5 23:37:23   |  阅读:2083

来自10年经验的程序员的自白:

回顾过去的十年,作为一个本科毕业生,在管理上六年升任副总监,技术上七年半晋升专家。虽不是发展最好的,但相对平均速度来说都是比较快的。

我总结主要的几点是学习成长、合作共赢、总结呈现、思考前行。分享一下这些方面的体会,希望可以帮助初入互联网行业的技术人员或发展遇到困惑的人突破和提升自己,让自己成为精兵再到骨干,并进一步成长为一名强将。

10,000小时定律

我曾看过一本书,名叫《异类:不一样的成功启示录》,作者对社会中那些成功人士进行了分析,书中那些被称为异类的计算机天才。杰出的棒球手,演奏家,无一例外都是经过了超过10,000小时的练习才达到了超乎常人的技能。

而另一个我最喜欢故事,是关于一位做寿司的日本老人的,他便是被誉为寿司之神的小野二郎,他的寿司店数寄屋桥次郎(Sukiyabashi Jiro)被《米其林美食指南》评为三颗星的美食店,被公认为拥有世界上最好的寿司服务。而他作为全球最年长的米其林三星寿司大厨在88岁高龄仍然在不断探索寿司制作之道,当然他花在寿司制作上的时间,也远远超过了10,000小时。

技术成长

第一阶段、入门级阶段(1-2年),此阶段处于观望期。抱着怀疑的态度进入这个行业,学习一门新的语言或者技能。初学者在初学时,往往也会纠结于一些在后来看来不是很紧要的问题,学的这个技术有前景吗?会不会过时?IDE用什么?什么语言是最好的语言?这些问题,大多都不重要,重要的是你扎实下去,把所学的这一行搞精。

第二阶段、迷茫期(3-4)。对于基本的业务开发也比较熟练,自认为自己啥也能干了,但是工资就是上不去。有的人,因此迷茫、普通,有的人因此会产生一些积极的动力来改变。在之前,想渡过这个阶段,有几个途径,比如说跳槽到一个更好的公司,找到大牛,跟随成长。比如在论坛里活跃,结交好友。

第三个阶段、成熟期(5年以上)。进入这个阶段,就是高级工程师和架构师阶段了。进入这个阶段,已不再为语言纠结,知道啥合适用啥。也不再为完美纠结,懂得妥协、权衡的艺术。从多种门类的技术中,窥见了要义和根本。可以快速地掌握新技术,融会贯通。

钱很重要,但是生活质量比钱还重要,工作是很重要,但是家人比工作还重要。

钱不是万能的,但是没钱是万万不能的。钱赚了,身体夸了,全送给医院了,钱赚了,身心疲惫了,人活着为了啥?不就为了开开心心生活嘛?工作重要,但是失去了家人的爱,失去了女朋友,失去了老婆孩子,那这个工作有啥用了?工作很容易就换了,家人是换不了的,老婆不是想换就换的,孩子不是想换就换的,连自己的家庭都不负责的人,怎么可能对公司负责呢?我一直是这个观念,来面试时觉得工作更重要的,我们一般不录取的,那太假了,或者太不懂事了。

为项目而工作

在我的经验中,没有什么可以与工作于自己的项目以学习编程更有用的了。除了一些例外,我所知道的所有真正优秀的程序员都有一个习惯就是工作于业余项目(这也可能发生在工作中!)。有了一个点子并试图实现这个点子是非常具有挑战性的。它需要很强的自律心。

对某方面的无知可能会让你一败涂地,因为你在这方面毫无经验。

即使到了今天我依旧在不断惊叹,有的同行竟然仍然没有收集足够的日志、崩溃报告和使用信息来掌控自己的软件。那些对这方面信息不屑一顾的家伙,大多会高估产品的质量。因为如果你不采取措施和记录结果,浑浑噩噩地混日子,终将会导致你对当前情况一无所知,包括你的客户。我一直反复强调,详细而有用的日志记录、程序崩溃跟踪、评论和意见,反正各种只要能让我尽快了解发生了什么问题的途径和方法,都是可行的。不过,我也知道有很多人认为“这种事和程序员有一毛钱的关系吗?”。

将复杂的东西整理成简单的,是很难的,但是要是把复杂的捣鼓成更加复杂的,那就简单了。

这一条适用于编程、设计和几乎所有的创造领域中。我一直以来都希望自己的代码能越易于理解越好。如果你的代码过于复杂和晦涩,那十之八九它正常工作的可能性很低。我曾非常有幸地见识到有些程序员费劲千辛万苦,反而让代码更加难以捉摸了。

解决故障报告

每个开发人员都应该花时间去处理来自客户的故障报告,并修bug。这能让你更好地理解客户的意图,明白如何使用系统,知道排除故障的难易程度,了解系统的设计情况。这也是为自己的开发成果负责的好方法。

从程序员向技术管理发展

其实一个Team Leader的职责与ProjectManager相像,但Team Leader更着重于技术开发方面,通常一个大型项目都会有一两个开发团队由Team Leader带领,负责开发核心部分,而其它部分分派给不同开发小组或者分派给外包公司。在网上常看到几句话,贴切地形容了PMTL的区别:“技术人员乐于被领导;但他们不喜欢被管理,不喜欢像牛一样被驱赶或指挥。管理者强迫人们服从他们的命令,而领导者则会带领他们一起工作。管理是客观的,没有个人感情因素,它假定被管理者没有思想和感受,被告知要做什么和该如何做。领导是引领、引导,它激励人们达成目标。领导力是带有强烈个人感情色彩的,它不是你能命令的,也不是你能测量评估和测试的。”



评论:

发表评论

最新评论:


昵称  :  萌萌丶小魔王

  十年啊~~


  回复 顶(0) 踩(0)

圈内热点

  • 怎么轻松学习JavaScript

    js给初学者的印象总是那么的“杂而乱”,相信很多初学者都在找轻松学习js的途径。我试着总结自己学习多年js的经验,希望能给后来的学习者探索出一条“轻松学习js之路”。
  • 我心目中的ASP.NET核心对象

    在我的眼里,Asp.net有三大核心对象:HttpContext, HttpRequest, HttpResponse。除此之外,还有二个对象虽然称不上核心,但仍然比较重要:HttpRuntime,HttpServerUtility
  • IIS内部运行机制

    这篇文章的资料收集整理自各种微软公开的文档,通过比较 IIS5、IIS6、IIS7 这三代 IIS 对请求的处理过程, 让我们熟悉 ASP.NET的底层机制并对请求(request)是怎么从Web服务器传送到ASP.NET运行时有所了解
  • 改善程序员生活质量的3+10习惯

    2017年的一天,代码伴随着手指极具节奏感地输出在IDE上,突然某Chrome插件弹出一封邮件提示:“今天是我在ThoughtWorks的最后一天”。
  • 编程的一些伟大真理

    编程学习中的一些伟大真理,初级程序员都知道吗?
回到顶部