`
cyj1988jyc
  • 浏览: 20281 次
  • 性别: Icon_minigender_1
  • 来自: 荆州
最近访客 更多访客>>
社区版块
存档分类
最新评论

我们到底该怎么学技术?如何成为一个优秀的技术人员?

阅读更多
看了不要迷失在技术的海洋中,深表同意。在后来的评论中大家也表达了自己的看法。让我觉得很有意思的是,大家的观点惊人地一致——几乎没有反对的声音。

不过从经验上来看,意见太统一也不一定是一件好事。我有时也会小人之心地想,表示赞同的朋友们是真与LoveCherry的想法一致,还是仅仅因为自己以前对待技术随波逐流不堪所累,现在把这篇文章作为救命稻草看待,追求自身的心理平衡呢?LoveCherry写这篇文章,是基于他对于技术和思想的深度。如果我们没有达到这样的程度,是否会误解他的意思,得到的仅仅是一种心理安慰,却失去了更多东西呢?

我们到底该如何学习技术?或者说,如何成为一个优秀的技术人员?

扎实的基础
如果要成为一个优秀的技术人员——我并没有说是“开发人员”,比如也包括“测试人员”吧——一定需要扎实的基础。什么叫做扎实的基础呢?其实就是我们大学所学的课程——离散数学、算法与数据结构、操作系统、计算机体系结构、网络、编译原理等等。现在它们经常被视为“没有用”,但是我认为这些都是一个优秀技术人员成长和前进的基础。不知道大家有没有过这样的感觉:某天早上一醒来,发现对于最近接触的事物有了新一层的认识,似乎什么都不会了,却好像什么都理解了——就像张无忌练太极剑,不求剑招,只求剑意。我曾经有过两次这样的感觉,真可谓豁然开朗。其实我想,这就是所谓的“突破瓶颈”。而引起“量变到质变”的关键,可能就是您忽视的那些课程,那些一进大学就被“灌输”的知识。

在面试时我经常听到这样的话:“我的理论和基础不行,但是我让我写代码是没有问题的。”这样看来,基础真的没有用吗?我并不这样认为,因为……

如果您不了算法和数据结构,又如何从.NET Framework(甚至包括Power Collections,在这里我强烈推荐这个组件)琳琅满目的数据结构中做出最适合目前需求的选择呢?
如果您不了解操作系统,又如何能深入Windows系统,写好.NET Framework程序,或者在postmortem环境中做调试呢?
如果您不了解计算机体系结构,又如何能在Multi-CPU(Multi-Core)时代写出真正高效的应用程序呢?
如果……
因为我们不光要写代码,而且要写好的代码,因此我们必须强调基础。很多时候技术人员之间能力的高低,很可能就会取决于这写基础。有朋友告诉我,这些计算机科学的基础的意义不仅仅在于知识本身,它们还能够让人的思维更符合计算机科学的发展和变革——这可能说的有点远大,但是我基本上同意这个看法。如果说得简单一些,它们让您的思维方式更适合这个行业——试想,如果您知道了计算机/程序/框架/系统是怎么想的,他们还能够为难你吗?

举一个例子,微软有着大量高素质的技术人员,他们是微软惊人生产力的源泉。因此微软能够在Vista和Office开发完成之后将大量牛人派去作Windows Live产品研发。在我们很多技术人员看来,Vista是操作系统,Windows Live是Web,两者大相径庭。但是微软就是能够有大量的技术人员作此类迁移。再举一个例子,当年Google挖角Microsoft许多技术人员,难道他们跳槽去Google继续作微软产品的研发吗?正是因为那些技术人员有着扎实的基础能力,因此就能够在各种类型的技术之间游刃有余,即使它们“表面”上看来差距有多大。

表面?这两个字放在这里是什么意思?因为这就是我想说的就是……

技术之间的关系
其实《不》一文的中心思想,就是不要随波逐流,不要迷失在技术的汪洋之中。我很同意,但是我也想补充一点我的看法。

在《不》文的评论中,我看到了一段话,其主要意思就是:“如果一个技术不会用到,就不要去学它。当要用的时候再去学”。首先表明我的观点:我不同意。这里我想举一个例子:

我是今年1月份加入目前的公司的,公司的技术团队当时使用.NET Framework 1.1进行应用开发。是时由于业务的原因需要开发一个平台以及其他一些应用,我在时在技术部门内部强烈建议将新系统使用.NET Framework 2.0 + 3.0的方式进行构建。我的理由是:“使用.NET Framework 2.0构建新平台在基础设施上不会增加任何成本,但是在功能和性能上都会有提高。而.NET Framework 3.0,尤其是WCF,是微软提供的新组件,也即将成为微软平台上通信的标准。”领导同意了我的建议,并希望我带领新的团队进行新平台的开发。过程中的细节就不一一道来了,现在回头看来过程虽有波折,但是倒也收到了较好的效果。我们经常会发现有技术人员会抱怨技术发展地太快,但是就拿我之前的例子来说,在2007年还在使用2001年出现的东西,却忽视2004年就已经成熟的技术,这究竟是技术发展的太快,还是我们没有根本没有去跟进技术呢?

我想答案很明显是后者,这其实就是“如果一个技术不会用到,就不要去学它。当要用的时候再去学”。我们不会(或者很难)因为不断钻研老技术而领会新技术,掌握新技术是需要我们主动去追求的。如果一个人不追求,他就难以发展。如果人人不追求,那么整个技术团队就难以发展。不过我认为,其实只要怀着“把项目做的更好”的想法,追求新的技术和实践(例如重构、TDD)是自然而然的事情。

不论您是普通开发人员、技术经理抑或是架构师,我想您都不能止步不前。有人说,领导不愿意使用新技术,我们没有办法——那么设法说服他们。如果他们不能给出让您满意的理由,如果您觉得他们妨碍了您的发展,那么可以选择离开。我想有追求的您一定不会在找工作的问题上遇到太多麻烦。:)

似乎话题有些偏了,我们回到正体。新技术那么多,我们到底该怎么学呢?我这里想说的就是,新技术并非洪水猛兽。在一定程度上,我们完全可以驾驭它们。

我们来想一下,新技术是怎么来的?新技术并不是某些公司的牛人们拍脑袋出来的,新技术也是发展过来的。发展需要时间,发展是一个过程。例如C# 3.0由2.0发展而来,CLR 2由CLR 1发展而来。根据我的经验,如果一个技术人员能够较好地掌握.NET Framework 1.1,他几乎能够轻而易举地过渡到.NET Framework 2.0。他之需要了解一下新特性,找一些资料比较一下前后两者的改变即可。我们并没有创造技术,我们只是在跟进。为什么总有人能够在技术出现不久就写出大量文章或书籍来进行推广呢?这就是值得我们思考的地方。

举个例子,如果要从.NET 2.0升级到3.5(我不懂VB,用VB的朋友抱歉了),其实您只需要了解……

ListView控件:一个控件而已。
集成了ASP.NET AJAX:不是新东西了。
Linq To XML:一套新的语法用于解析和构建XML。
Linq To Object:枚举,只是枚举。
Linq To Sql:可以视作简单的一套ORM,动态生成SQL语句。
Lambda Expression:即使没有接触过LISP(很幸运,我大学课程中有Functional Programming这门课:)),我想如果您了解编译原理的话,对此也应该不陌生了。
……
真的不多。其实我觉得,跟进每个人各自领域的技术并非不可能的事情。我一再提到这么一句话:一个优秀的技术人员,他的知识架构应该成倒T字形,有着扎实的底盘,并且成为某个领域的专家。

我们究竟该如何学习基础呢?
扎实。我认为,这是关键。

您有扎实的基础吗?这是成为优秀技术人员知识储备。
您对于每项掌握的知识或技能都学的扎实吗?这是您前进过程中的助手。
您有扎实的学习目标和计划吗?这是您在技术汪洋中的指南针。
我的文章写完了。

我很理想,我也在努力。:)
分享到:
评论

相关推荐

    如何成为一个优秀的软件实施人员PPT教案.pptx

    一个优秀的软件实施人员不仅要理解软件技术,还需具备项目管理能力、沟通技巧和客户服务意识。本文从软件实施人员的角色与职责讲起,深入探讨了优秀实施人员的特质、实施阶段与技术要求、项目实施方法和技巧以及职业...

    如何成为优秀的软件开发人员

    总结,成为一名优秀的软件开发人员不仅需要扎实的技术基础,还要有持续学习的决心,良好的沟通和管理能力,以及对个人魅力的培养。面对不断变化的行业环境,持续的职业发展和自我提升是保持竞争力的关键。在追求卓越...

    Python核心技术与实战 02-JupyterNotebook为什么是现代Python的必学技术?.pdf

    ### Python核心技术与实战 02-JupyterNotebook为什么是现代Python的必学技术? #### Jupyter Notebook:现代Python学习与工作的必备工具 随着Python成为近年来最受欢迎的编程语言之一,其在数据分析、机器学习领域...

    专业技术人员创新能力培养提高.pptx

    创新能力是专业技术人员在面对不断变化的科技和社会环境时,能够提出新思想、新技术、新方法并将其转化为实际成果的能力。它涵盖了从创新构思的产生到将其商业化运作的整个过程。在当今全球化和技术快速发展的时代,...

    专业技术人员思想政治表现考核表.docx

    一个优秀的技术人员不仅要在技术上有所成就,更需要在团队中发挥协作精神,与同事们共同推进工作进展。这包括了遵守工作纪律,严格按照组织的规定行事,以及在遇到问题时能够和同事们通力合作,寻找最佳解决方案。 ...

    谈技术人员发展方向及嵌入式学习

    在当今这个飞速发展的技术时代,技术人员面临着多样化的职业道路选择,而嵌入式技术作为其中的一个重要分支,具有广阔的就业前景和职业发展空间。本文将深入探讨技术人员在嵌入式领域的发展方向,以及如何在这一领域...

    精品资料(2021-2022年收藏)内蒙专技继续教育学习计划专业技术人员工匠精神读本考试答案97分.docx

    职业道德要求专业技术人员具备高度的责任感,以用户至上为原则,注重产品的每一个细节,力求打造精品。同时,个人修养也体现在情绪管理上,例如通过自我暗示法、语言节制法等方法来控制和调节情绪,保持良好的心态...

    我学的技术不流行了怎么办?

    如何应对所学技术不再流行的问题,成为了许多技术人员需要思考的问题。 #### 1. 技术的本质与共通性 首先,我们需要理解技术的本质和共通性。尽管不同的编程语言和技术框架有着各自的特点,但它们解决的问题本质上...

    【思考】你是一个合格的技术人员么?

    根据描述,一个合格的技术人员需要掌握西门子PLC的多种编程语言,比如FBD(功能块图)、LAD(梯形图)、STL(指令列表)和SCL(结构化控制语言)。这些技能要求技术人员对数字电子技术、电气设计、微机原理、汇编...

    专业技术人员继续教育登记卡(已填).pdf

    朱海先生的经历正是一个优秀专业技术人员持续进步的典型代表。通过《重庆市专业技术人员继续教育登记卡》的记录,我们看到了他如何在繁忙的工作之余,依然保持学习的热情,积极地参与各种继续教育活动,并最终取得了...

    IDC售前支持部技术人员考核表

    因此,《IDC售前支持部技术人员考核表》成为了衡量和提升技术人员工作绩效的利器。 考核表由多个维度构成,首先是工作任务(占45%),它是整个考核的核心部分。在此部分中,考核内容涵盖了技术人员的日常操作流程,...

    如何成为一个优秀的程序员

    如何成为一个优秀的程序员:深入解析与实践指南 在IT行业,成为一名优秀的程序员是众多技术追求者梦寐以求的目标。在《如何成为一个优秀的程序员》一文中,作者罗伯特·L·里德(Robert L. Read)列出了多达一百条...

    技术人员如何快速具备产品能力体系?.pptx

    技术人员在产品开发中不仅要考虑技术实现,更要寻找合适的技术应用场景,使技术成为产品竞争优势的一部分。 为了快速具备产品能力体系,车马建议采取以下方法: 1. 阅读专业书籍,如《首席产品官1——从新手到行家...

    技术人员培训学习总结.doc

    随着社会经济的快速发展和行业竞争的加剧,专业技术人员的培训学习成为了行业发展的重要推动力。在技术领域的不断变革中,技术人员不仅要掌握扎实的专业技能,还要具备广博的知识面、良好的个人素质、全局观念以及...

    面对疫情,工程技术人员需要做些什么?.docx

    对于工程技术人员而言,这也是一个反思自身职业道路和发展方向的好时机。 2. **适应变化的能力**:疫情教会了我们如何在不确定的环境中生存和发展。未来无论遇到什么挑战,这种适应变化的能力都将是一笔宝贵的财富...

    国有企业技术创新人员激励机制研究.doc

    同时,通过设立技术职务等级,为技术人员提供除管理岗位之外的晋升渠道,这样既能给予他们专业成长的空间,也能在一定程度上防止技术人才的流失。 除了职业成长空间的创建,公平且具有竞争力的奖励制度同样对技术...

    T7广东省专业技术人员继续教育网辅助 v1.2.zip

    T7广东省专业技术人员继续教育网辅助,本软件为共享软件,免费试用3小时,试用期间可以自动处理各种弹出框、回答问题、自动跳转到下一课程和自动做一个课程作业等。 T7广东省专业技术人员继续教育网辅助功能说明: ...

    汽车维修技术人员的必备知识PPT教案学习.pptx

    通过学习技术哲学,技术人员能够系统地认识维修工作的每个环节,从而在面对汽车电子、智能诊断、网络通信等前沿技术时,能够运用科学的方法论进行有效处理。 汽车维修技术人员的基础素质构成复杂多元。他们不仅需要...

    工程技术人员思想思维方法工作方法PPT学习教案.pptx

    工程技术人员应当深入学习马克思主义哲学的三大组成部分——哲学、政治经济学和科学社会主义,认识到哲学的深刻意义,并将其原理应用到具体实践中,以此来提升自己的思维深度和广度。 在实际工作应用方面,教案列举...

    GIS技术人员的自我成长

    蒋波涛的个人成长经历,为我们揭示了一个GIS技术人员如何通过不断学习和实践,逐步从技术型人才转型为复合型管理者,实现自我成长的全貌。 首先,GIS技术的进步为世界提供了前所未有的理解和分析地理信息的能力。...

Global site tag (gtag.js) - Google Analytics