`
wenjinglian
  • 浏览: 807605 次
  • 性别: Icon_minigender_1
  • 来自: 株洲->深圳
社区版块
存档分类
最新评论

我希望在软件开发生涯初期就知道的 4 件事

阅读更多

原文出处: 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课程,是我现在正全职在在做的事情。

将所学揉合起来

以上所说是少数我后悔没有在自己职业生涯开始时不知道的感悟,但从一开始我仍然做了很多正确的事情。

实际上我在一个绝密项目中正将这些信息结合起来帮助开发者开始他们的职业生涯并让他们学会推销自己。

如果你想成为这个项目正式启动后的第一个参与者,在这里注册,到时我会通知你。

你有什么感悟?

当你开始自己的软件开发生涯时你希望有哪些经验与大家分享呢?请留言让我知道。

 

  • 大小: 11.2 KB
  • 大小: 18.8 KB
分享到:
评论

相关推荐

    每天学习一些东西:I我所学到的一切的汇编; 计算机科学,软件开发,工程,数学和编码。 在此处阅读渲染结果->

    我希望通过在整个职业生涯中添加有关新主题的摘要说明来开发此存储库。 该存储库的目的是帮助我保留所学到的所有信息,因此请深入研究并找到一些值得探讨的主题! 我在这里做了很多总结性说明,但是我经常也会将...

    antlr4权威指南

    使用ANTLR之后,我在一天之内就完成了整个编译器前端的开发工作,从而能够迅速开始处理真正的业务逻辑。从那时起,我就被它强大的功能所深深吸引。简而言之,ANTLR能够解决别的工具无法解决的问题。  软件改变了...

    设计模式解析

    本书以作者多年来为软件开发人员(包括面向对象技术老兵和新手)讲授模式的经验为基础撰写而成,首先概述了模式的基础知识,以及面向对象分析和设计在当代软件开发中的重要性。随后,使用易懂的示例代码阐明了许多...

    aboutMe:关于我和猜测游戏网页

    我最终希望在职业生涯中被软件开发所包围,这样我才能做自己喜欢的事情。 成为一名技工已有6年之久,这对我的身体造成了巨大的伤害,在改变自己的危险之前,我想改变一下这一状况。 作者:Sunny Lee 链接与资源 ...

    CodeIgniter:php敏捷开发框架web快速开发详解

    发送 Email 的功能实现起来比较复杂,但是,使用 CI 将使这件事变得很简单: 复制代码到剪贴板PHP 代码$this->load->library('email'); $this->email->from('your@your-site.com', 'Your Name'); $this->email->...

    计算机专业学习课程(共14页).docx

    并且为我后来的软件开发生涯打下了基础,代码一写就是20年,顺利完成了不少软件开发项目,近几年来,又捣腾了一个小网站——金老师的计算机在线学习网站,想打造一个心目中理想的计算机在线自助学习平台。现在,我在...

    resume

    我不知道,因为我在没有成年的情况下脚过早的成年生活,这些影响会引导我进入软件开发领域。 我逻辑上的大脑会说:“钱是好东西”,而我大脑的情感方面同意说:“您可能也会喜欢它!”。 我对自己的

    使用Visual Studio Team Foundation Server进行团队开发

    从科罗拉多大学毕业之后,他于 1990 年在 Microsoft 开始了自 己的职业生涯,最初致力于 Visual C++ 的早期版本。1996 年,他离开了 Microsoft,转向自己的其他 兴趣所在,包括咨询、在小学教学,还建立了自己...

    计算机专业毕业实习周记.docx

    现在可不是这样了,五月一日是我们搬迁新公司的日子,所有的东西都是新的,我进公司的那天起我就知道,我最大挑战的时刻才刚刚开始,五一全公司员工都有四天假期,我可是天天在加班的哦,因为我就是要趁着假期把新...

    Liam-Gaffney-Actor:我的演员页面

    我正在将该页面设计为我的Code1软件开发文凭MS1项目的一部分。 这也将是我自己的个人演员网站,旨在展示我的作品并让人们了解我的职业生涯。 我希望使用此网页来推销并促进我的职业生涯。 可以在找到已部署网页的...

    README:与我一起工作的人的自述文件。 一直在进行中

    我的角色我以前是Two Sigma的软件工程师,Netlify的高级DX工程师,现在是AWS的高级开发顾问。 我还编写并持续管理着图书社区。我几句话家人都在新加坡出生和长大,现在仍然在那里,我每年至少拜访一次。 我的小妹妹...

    关于编程的神话与事实

    我希望在我的早期职业中了解有关计算机编程的常见神话和事实(有针对性)。 如何贡献? 用新的Q / A和更新提交拉取请求 编程需要数学 中性的。 只有少数百分比的程序员在其职业生涯中处理数学问题。 分析能力有...

    kanvas:一个面向软件工程师学生和入门级开发人员的专业社交网络和求职网站

    一个面向软件工程师学生和入门级开发人员的专业网络和求职网站。 Kanvas 的用户可以创建配置文件并相互建立联系。 这是一个为软件工程师设计的在线社交网络。 用户可以在该地区找到可用的工作。 用户可以发布/分享...

    二十三种设计模式【PDF版】

    过这本书,你会在你的程序教育生涯里存在一个严重裂沟,所以你应该立即挽救弥补! 可以这么说:GoF 设计模式是程序员真正掌握面向对象核心思想的必修课。虽然你可能已经通过了 SUN 的很多令人炫目的 技术认证,但是如果...

    项目管理中不该做的事

    你的团队中所有人的特点你都了解了吗,你都知道该把谁用在哪个位置上了吗,他们都能按照你的思路进行工作,他们能在这个团队呆多久,他们都有什么需求,什么是他们最在乎的?工作的第一目的是为了挣钱,第二是为了...

    编程调试和诊断的五大规则

    在我的职业生涯中,不管是系统开发、系统设计、还是系统调试,我都是这些方面的专家。对于我的成就,我很自豪。后来我大部分时间都花在系统检查上。“系统崩溃了”是我经常听到的话。在一个进行了三年的项目

    金领简历 敲开苹果 微软 谷歌的大门

    为求职者详细介绍了招聘程序,如何应用、设计和定制简历,如何准备面试并在面试中胜出,如何处理被拒的情况,如何就录用条件进行谈判,以及如何卓有成效地处理工作中的事务,使自己的职业生涯更上一层楼。...

    阅读笔记

    我毕业于理工学院的机械工程专业,一直希望获得最好的成绩,并寻求新的机会,以增加职业生涯的经验,并期待提高自己的技能。 联系信息 电子邮件: GitHub上的 该网站包含我在ASAC课程中学习的主题的摘要 阅读笔记...

Global site tag (gtag.js) - Google Analytics