原文出处: John Sonmez 译文出处: IDF实验室
我的软件开发生涯开始于15年前。
但是直到最近的5年,我才真正开始看到自己在软件开发领域的巨大进步。
这里有一些感悟是我希望能够在我进入软件开发领域时所知道的事情,如果我早一些领悟到,相信会比现在更加成功,也更节省一些时间。
软件开发工作没有“正确方法”
在软件开发生涯的早期,我曾经浪费了大量的时间在学习和争辩,错误的相信有一条“绝对正确的方法”能够应付软件开发的很多方面。
结果证明我曾经认为关于软件开发的每一件正确的事情到最后都是错误的。
但是更重要的是,我发现很少有事情是黑白分明的。在写代码和开发软件时所做的几乎每一个决定都取决于当时所处的环境。
我曾经讨论过关于技术的宗教式信仰是如何对软件开发者不利的,但这个话题已超出技术范畴。
没有万能的最佳实践方式,这句话很对。甚至像“是否应该进行单元测试”、“敏捷开发和瀑布模型哪个最好”这种高热度的话题都不会有一个直截了当的简单答案。
在我的职业生涯中,我已经浪费了大量时间在这种“正确方法”上以至于最终一无所获,而不是探寻可以让我走更远的“实用主义”道路。
一页一页看书不是最佳的学习方式
当我第一次想提升自己的编程水平和各种技术水平时,我花了非常多的时间一页一页地读具体的技术类的书。
读书并没有错,但是要有选择那些重要的书和重要的章节读。
比如,我记得我曾经读过一本非常厚的关于Visual C++的书(我非常确定是《Beginning Visual C++ 2012》的早期版本),总之,这本书是一本包含了海量知识的好书,但是一页一页读并不是学习Visual C++的最佳途径。
早知道我就应该像过流水账一般地粗略地看下这本书的所有章节,以了解Visual C++包括哪些知识点,然后再考虑哪些部分是最重要的,是应该首先读的。
如果我坐下来实际练习下书中的基础练习题而不是仅仅看过或跳过这些例子的话,会有更多的收获。除非你实际用你的所学解决了实际的问题,否则算不上你学会了这门技术。
深入学习特别技术是浪费时间
我不仅仅浪费时间在一页一页的读书,还经常选择了那些错误的书读。
曾经的我花费了大量的时间读诸如ASP.NET或Hibernate等特别技术的书,而不是读像《代码大全》、《代码整洁之道》、《敏捷软件开发:原则、模式与实践(C#版)》(顺便说一句,如果你还没有读过这些书,我推荐你读一读)。
比起知道你所用的技术的重要性,成为某一特别领域的专家是不重要的。知道某一个具体API调用一点好处都没有,当你需要它的时候只要查询下就好了。
我曾经花费大量时间深入学习的许多技术中,到最后要不这技术逐渐没落,要不就是太过技术以至于我自己放弃了它。这些特别技术中的绝大多数最终都证明是在浪费时间。
只要是我正在使用,无论什么语言,成为这种编程语言方面的专家都是很重要的,因为在一门特殊语言方面的专业知识能够让你活跃在软件开发领域许多年。 当然,我仍然在花时间深入学习C++、C#和JAVA,但是,对于现在的我来说,可能多花一点时间在C++的各种纷繁难懂之处并没有什么好处。
技术社区在软件生涯中及其重要
在我早年的职业生涯中,我犯过的一个错误就是没有投入到技术社区中求助或帮助他人。
我总是乐于帮助我的同事,并和我所接触的各类职业打交道,但从来超出我所在公司的人员和岗位范围。
曾经我花了大量时间将自己投入在所在公司的职业生涯中,而没有在软件开发社区中投入一点时间,这点非常的不划算。
曾经我花时间致力于内部技术建设的分享或实践原本也可以在技术社区中做同样的分享和交流,也同样会给我带来工作上的认可。
我也错误的认为我没有什么有价值的事情贡献给技术社区。
现在的我会和很多软件开发的新手们聊天,有时候我想相比我们他们一定花了很多精力贡献在技术社区,因为和其他新手相比较,他们看起来没有懂的更多,也没那么抓狂。
如果时光能够倒流,我确信年轻时候的自己一定会投入很多时间在技术会议和用户群组上,我会尽早地开始写自己的博客并创建自己的项目和资源与其他人分享,而不是呆呆地读书。
永远有编外项目在做
影响我职业生涯最大的选择可能就是杜绝看电视、《无尽的任务》和《魔兽世界》游戏了,取而代之的是将这些时间用在我的编外项目上。
在过去的生活中我已经浪费了很多时间在做娱乐活动,而不是那些能够充实我生活的事情。
在大约3-4年前,我已经基本和看电视这种活动决绝了,现在的我甚至都很少看电影。看电视和看绝大多数电影都是一种时间浪费,浪费那些原本可以做一些有用之事的时间。多数的电视游戏也是如此,但至少玩电视游戏收获的也不仅仅只是无用信息。
我非常喜欢玩电视游戏,而且恐怕也不会有停手的那一天,但是我着实希望我能够把花费在玩游戏、看电视的时间投入在自有的项目上。
不幸的是,我真正开始自己的第一个项目却是在大约3年以前,那时的我开始着手创建一个Android应用程序。
当你为别人工作时,能够花时间在自己的项目上非常重要,否则就是在牺牲自己的精力为别人建造帝国。
在过去的几年间,我不仅从编外项目中学习到了不少东西,而且也从其中得到了巨大的利益。事实上,其中的一个编外计划:创建Pluralsight课程,是我现在正全职在在做的事情。
将所学揉合起来
以上所说是少数我后悔没有在自己职业生涯开始时不知道的感悟,但从一开始我仍然做了很多正确的事情。
实际上我在一个绝密项目中正将这些信息结合起来帮助开发者开始他们的职业生涯并让他们学会推销自己。
如果你想成为这个项目正式启动后的第一个参与者,在这里注册,到时我会通知你。
你有什么感悟?
当你开始自己的软件开发生涯时你希望有哪些经验与大家分享呢?请留言让我知道。
相关推荐
Martin的职业生涯丰富,他曾是1999年《C++ Report》杂志的总编辑,并且因其在推动软件开发方面的杰出贡献,在软件业界享有盛誉。他的作品《设计模式》(Design Patterns)已经成为软件工程领域的经典之作。 本书还...
尽管具体内容部分主要是博客链接的重复,我们仍可以根据标题和描述来构建与软件开发相关的知识点。 ### 软件开发者的路线 #### 一、基础技能与编程语言 对于软件开发者而言,掌握至少一种编程语言是入门的必要...
通过这个"Python-为希望成为机器学习从业者的软件开发人员制作的速成课程",你将不仅能够熟练掌握Python编程,还将具备使用TensorFlow和Keras解决实际机器学习问题的能力,为你的职业生涯开辟新的可能。不断更新的...
文章作者在五年软件开发的职业生涯中经历了技术能力的停滞不前、职业方向的迷茫、以及对个人成长的深刻反思。在即将转换职业跑道之际,他回顾了自身在软件开发领域的经历,并给出了对后来者的几点建议。 首先,作者...
在2019年的夏季,我有幸加入了一个充满活力的软件开发团队,开始了我的实习生涯。随着实习的结束,我深感有必要总结这一阶段的学习和工作体验,以更好地规划未来的职业道路。以下是我的实习个人总结,希望能对即将...
总结过去,展望未来,我相信,每一个在软件开发领域努力工作的人都会遇到自己的困难和挑战,但只要我们保持学习的态度,不断努力,提升自己的能力,就能在职业生涯中取得成功。对于我自己,我会以更加饱满的热情,...
在得知贵公司在寻找具有扎实技术功底和丰富项目经验的软件开发工程师之后,我怀着极大的兴趣,通过此封求职信向您介绍自己,并希望能够有机会成为贵公司团队的一员。 作为一名拥有多年软件开发经验的专业人士,我...
随着2019年的落幕,我作为软件开发工程师,在这一年中积累了许多宝贵的经验和感悟。通过回顾过去一年的工作和生活,我深刻地意识到,努力、坚持和不断学习是职业发展的关键所在。以下是我对自己工作的一些总结和心得...
2019年对我而言,不仅是一个新的年份的开始,也是我软件开发职业生涯中一段重要的转折点。回顾过去一年,技术的精进、项目的挑战以及个人的感悟,诸多经历让我成长了许多。在此,我愿与各位分享我的年终总结,希望...
然而,经过深思熟虑,我发现自己可能并未找到在软件开发领域的真正归属。您曾提到,如果在工作中两年没有明显的进步,应该反思自身。我对此进行了深刻的反思,发现我对软件开发的热情和激情似乎逐渐消退,这使我陷入...
在信息技术飞速发展的当下,Android软件开发已成为计算机领域内一个极为重要的分支,而我有幸在过去的三年里担任Android软件开发工程师一职,在这期间我不仅积累了宝贵的经验,同时也获得了个人职业生涯的成长。...
在这一时期,我有幸加入了一家充满活力的软件开发公司,经历了从初始的理论知识到实际项目参与的全过程。在此期间,我不仅深入了解了软件开发的专业知识,也积极面对并克服了许多挑战。这篇工作总结将回顾试用期的...
在这里,我学习到了先进的软件开发理念,并与一群才华横溢的同事共事,这些都是我职业生涯中宝贵的财富。然而,在深思熟虑之后,我决定因个人原因向您提出辞职申请。 我深知,我的决定可能会对团队当前的项目进度...
在IT行业中,软件开发人员的职业发展道路规划是一个关键议题,它不仅关乎个人职业生涯的成长与成功,也直接影响到行业的整体创新与发展。以下是从标题、描述、标签以及部分内容中提炼出的关键知识点,旨在为软件开发...
- **教学理念**:教学内容紧跟行业发展,不仅覆盖了传统的软件开发方法,还特别强调了敏捷开发、精益开发等现代软件开发模式。这种与时俱进的教学方式有助于学生更好地适应行业需求。 3. **专业课程**: - **...
这篇文档是一个软件开发员工提交的辞职报告,其中包含了一些与软件开发行业和职业发展相关的重要知识点。以下是对这些内容的详细解析: 1. **职业转变**:员工提到从学生到社会人的转变,这是每个新入职者都要经历...
在软件开发领域,职业生涯规划是一个至关重要的过程,它涉及到个人的自我认知、职业认知以及具体的行动计划。这份文档详细阐述了一个软件专业学生如何进行职业生涯规划,以确保在快速发展的IT行业中找到适合自己的...
回顾2019年的软件开发生涯,我作为程序员的个人成长与收获颇丰。这一年,我在技术、管理和人生理念上都有了新的认识和提升。在此,我将分享我的经验与心得,希望对同行有所启发。 首先,从技术层面来看,2019年是我...
这些都是每一个希望在Java软件开发领域取得成就的实习生应当铭记的。 综上所述,《Java软件开发——顶岗实习周记25篇借鉴.pdf》不仅仅是实习生个人经历的记录,更是Java软件开发实践知识的宝库。通过这份实习周记,...
三、职业定位结合自我分析和个人兴趣,我将自己定位为一名专注于软件开发的工程师,期望能在掌握核心编程技能的同时,关注新兴技术,不断提升自己的竞争力。长远来看,我希望能够在项目管理或技术领导岗位上发挥自己...