近读了Chad Fowler的"The Passionate Programmer",副标题是Creating A Remarkable Career In Software Development。感觉写的很好,很能够给于每个想要成为卓越的程序员一点思考和规划,书中的练习,非常值得一做。接下来就按照这个书的目录结构分成五个部分来说一下自己的体会和感悟。
选择市场
- 稳定成熟的技术还是未成熟的新技术?
- 供应和需求
- 只会编程是不够的
- 做团队中最差的
- 在思维上投资
- 不要听从父母
- 做一个通才
- 成为一名专家
- 切忌孤注一掷
- 热爱它,不然就离开它
学习一门技术就像是在投资,既然花时间和精力学习了,就会希望以最小代价来获得最大的收益。所以在有目的地选择投资哪种技术和领域时,我们可以借鉴一下经济学中有关风险收益的概念,将风险收益平衡作为一个很重要的权衡因素。选择一项已经进入商业生产流程的稳定技术,投资风险很低,但是与投资那些无人开发的很炫的新技术相比,收益也会比较低。但是,那些即将完成使命的技术,只需轻轻一推,就会跌进坟墓。
在技术的选择上,从市场的供求规律中,我们可以学到重要的一点——需求的增长会加剧价格的竞争。如果只想做稳定可靠的工作,并跟随着工作发展,那么你就会卷入与国外开发人员的价格竞争中,因为你的技术决定了你只能进入平衡的外包市场。如果在主流技术市场上竞争,你就必须在更高层面上竞争,否则,你就要去发现市场上的不平衡,找到外包公司无能为力的工作。这两种情况,你都必须找到工作的动力,提高自身的技术和灵敏度来应对一切变化。突然想到Kent Beck的Embarce Change。
作为一名卓越的程序员,只会编程是不够的。应该了解业务领域,使我们的行业经历成为我们的重要才能。试想一下,如果一个程序员能用客户所处行业的专业语言与他们交流,这样他就能让客户更了解软件开发是怎么回事,使自己的工作更得心应手。这是一项非常重要的技能。
人们会取得很大的进步或者退步,可能仅仅是因为与他们合作的人不同了。与一个团队合作的时间长了,会对自身的能力产生持久的影响。所以,寻找那些最棒的IT人士,尽量能与他们一起工作。时间久了,你会发现自己变得出奇地睿智。你写的东西,和你的谈吐都会变得越来越有智慧。你编写的程序和设计会越来越优雅。你会越来越有创造力,难题也迎刃而解。一句话,与天才在一起,你也会变成天才。尽可能的参加一些优秀的开源项目,可以从中学习一些牛人解决问题的思想,经历一段时间,会学到很多东西。
学习一种新的编程语言。这门新的语言应该可以让你的思维方式产生变化。你不需要成为专家,只要能够感到这种新的编程环境与你之前所处的环境的不同之处即可。对新的东西保持好奇是优秀的程序员共有的特点之一。
值想着如何避免失败绝对不是取得成功的方法!成功是要冒险的,胜利者想的是他们想要做什么,而不是其他人会怎么做。
成为通才就是说让你不要只专注于一种技术。我们要成为某一项技术的专家,同时还应该再擅长几种别的技术。技术平台只是一种工具,你的技术必须要高于它。你可以在工作中或者工作外寻找一个教课的机会。你所传授的知识是自己想要深入学习的技术。讲课时最好的学习方法。
可以把开源作为一个平台,使自己可以对一项技术进行深入学习。不是去学习如何操作,而是去研究其内部是如何运作的。当你已经了解了实施的细节,也就知道了更高层次的概念和模式。你的视野被拓宽了,思想也开放了。比起那些特定厂商的技术,你会发现经过你大脑分类解析的概念和模式更易于扩展,也更能广泛应用。
永远不要用自己的技术来定位自己,而是用自己已经做过的和将要做的事情来定位自己。技术只是一种做事的方法。
箴言:
- 无论做出哪种选择,最终目的是产生利润。Both ends of the technology adoption curve might prove to be lucrative.
- 不要在价格上竞争,你承受不起。You can't compete on price. In fact, you can't afford to compete on price.
- 发现市场上的不平衡。Exploit market imbalances.
- 仔细思考在哪个商业领域投入时间。Now is the time to think about business domains you invest your time in.
- 做乐队中最差的乐手。Be the worst guy in every band you're in.
- 你身边的人会对你产生很大的影响,明智地选择你的圈子。The people around you affect your own performance. Choose your crowd wisely.
- 没人给过我机会……?要学会抓住机遇。I haven't been given the opportunity...? Seize the opportunity.
- 通才很少,所以很珍贵。Generalists are rare... and, therefore, precious.
-
你的技术水平应该超越技术平台。Your skills should transcend technology platforms.
- 很多人认为专攻某种技术就简单地意味着不知道其他技术。Too many of us seem to believe that specializing in something simply means not knowing about other things.
- 以特定技术厂商为中心的观点,缺乏远见。Vendor-centric views are typically myopic.
- 工作,因为你无法停止工作。Work because you couldn't not work.
分享到:
相关推荐
### LLVM 程序员手册 —— LLVM 4.0 文档 #### 概述 本文档旨在介绍 LLVM 4.0 版本中的关键类和接口,为开发者提供一个快速入门指南,帮助他们在庞大的 LLVM 源码库中找到方向。文档假定读者已经对 LLVM 的基本...
[12]优秀程序员之路——C++开发经验及技巧大汇总.zip上位机开发VC串口学习资料源码下载[12]优秀程序员之路——C++开发经验及技巧大汇总.zip上位机开发VC串口学习资料源码下载[12]优秀程序员之路——C++开发经验及...
标题中的“程序员之路——一个老程序员对刚上大学的学弟学妹的忠告”旨在为初入大学的计算机科学专业的学生提供经验分享和指导,避免他们在学习过程中走入误区。以下是对这部分内容的详细解读: 1. **技术风潮的...
在当今这个信息技术迅速发展的时代,程序员已成为一个炙手可热的职业。然而,面对编程语言和技术框架日新月异的更迭,初入IT领域的程序员们如何才能为自己规划一条清晰的职业发展道路呢?《程序员职业小白书——如何...
总之,《程序员的羊皮书——程序员必备》涵盖了程序员在技术、职业和个人发展上的诸多方面,提醒我们,成为一名优秀的程序员不仅仅是编写代码,更重要的是全面发展自己的技能,适应快速变化的IT行业。通过不断学习和...
首先,我们来探讨沟通的第一个误区——自我本位为主。这个误区往往源于我们过于坚持自己的观点,忽视了对方的需求和感受。例如,在案例1.7中,面对客户时,程序员可能会认为技术问题并不复杂,但这种单方面强调可能...
一个合格程序员该做的事情——你做好了吗
### 程序员的自我修养——运行库 #### 入口函数与程序初始化 在传统的认知中,人们普遍认为程序是从`main`函数开始执行的。然而实际上,`main`函数并非真正的入口函数,而是在一系列初始化操作之后才被调用的一个...
Linux,一个开源的操作系统内核,更是为开发者提供了自由定制和深入学习的机会。下面,我们将详细探讨这两个领域以及它们之间的关联。 首先,C语言是计算机科学中的经典编程语言,以其高效、灵活和接近机器特性的...
《C~C++程序员实用大全——C~C++最佳编程指南》是一本为C和C++程序员量身定制的综合教程,旨在提供全面且深入的编程...而“disk3.gsd”这个文件可能是书中的一个数据文件或示例代码,用于配合书中章节进行实践操作。
在IT行业中,ASP.NET是一个强大的Web应用程序开发框架,由微软公司推出,用于构建高效、安全且可扩展的网站和Web应用程序。在这个“优秀程序员之路——ASP.NET开发经验及技巧大汇总”中,我们将深入探讨ASP.NET的...
针对文件信息,接下来的内容将基于“程序员到项目经理”的职业发展路径进行详细的知识点阐述。 首先,程序员与项目经理虽然都属于IT行业中的职位,但...只有通过不断的尝试和反思,才能真正成为一个优秀的项目经理。
标题《优秀程序员之路——C开发经验及技巧大汇总》指的是向程序员介绍和总结在C语言开发过程中积累的经验和技巧。C语言作为编程界经典的语言之一,对于初学者和资深程序员都有着重要的学习价值。描述部分罗列了文章...
在“程序员如何从小白到大神——免费程序课程培训宣传ppt模板.rar”这份压缩包中,您会发现一个精致的PPT模板,这个模板不仅为初学者描绘了一条清晰的成长路线图,同时,它也能够帮助程序课程培训机构更好地展示其...
总的来说,这份《软考程序员历年真题2004上——2009下》集合是一个非常实用的学习资源,它可以帮助考生充分准备,提高考试通过率,同时也能提升个人在计算机编程领域的专业素养。通过深入研究和反复练习,考生可以...
- **log(n) (Level 3):** 自己维护一个技术博客,分享个人见解和技术心得,并与读者互动交流。 综上所述,程序员的能力矩阵涵盖了多个维度的知识和技能,每个维度都设定了不同的级别以评估程序员的专业水平和发展...
一个好的架构设计能够支持系统的可扩展性、可维护性和性能需求。常见的架构模式包括单体架构、微服务架构、客户端-服务器架构以及事件驱动架构等。选择合适的架构模式对系统的长期成功至关重要。 此外,与IBM 360...