软件开发从业者如何走出自己的安逸环境[转]

过去的几个月里发生的几件事情,让给政府做软件开发的人感受到压力的陡增,一些事情让我回忆起曾经作为政府程序员的经历,以及这段经历如何变成一种一直督促我努力工作的思想动力。

我曾在某个政府部门维护过一个写于1990年代的老系统。当一个新的系统启动开发来替代部分的老系统功能时,很多的程序员对开发新系统的工作产生的严重的抵制心里。起初,我并不知道为什么他们会有这么大的反感。对这个系统维护一段时间之后,我才慢慢明白,有些程序员是专门维护系统(如crm系统),时间长达15年之久。当被邀请开发新系统时,他们对新事物和新技术都感到心里没底。

这让我警醒:这种事情也会很容易发生在我的职业生涯中。我可能会安逸的干着某一种工作,安逸的年年维护着某个系统。当这个系统长岁数时,我对它也变的更有价值,我的角色会最终变成专职维护它。我的余生也就整天执行相同的任务,直到退休。而当有一天,当这个系统不再被人需要时,我会发现外面的世界已经日新月异,我需要从头学起。

这可不是我希望的生活轨迹;我作为程序员喜欢的方式是学习新思路来解决新问题,而不是安于现状。我们程序员很容易迷住某一项技术而将全部精力都放在上面,对于其它的毫不关心。虽然这样可以让你在某一个领域成为专家,但你却得不到探索其它领域获得的更多好处。当意识到这种目光狭窄会扼杀我的进取心后,我开始避免让所有鸡蛋都放到一个篮子里,我开始走出自己职业仕途中的安逸环境。

学习新技术

你一直在用PHP编程吗?尝试一下使用Rails或ASP.NET。也许尝试一种新的语言或框架会让你感到受挫和沮丧,但探索的趣味也就在这里。至少,你应该看看同一种功能用其它语言是如何实现的。如何你只会用锤子,那你眼里所有的东西看起来都像钉子。

不惧怕老代码

虽然上面我举例的那个老代码的例子有些极致,但我并不认为所有的老代码都应该立刻替换掉、删掉。在如今的软件中,有很多稳固的、良好设计的程序代码,它们对那些只会使用集成开发组件的现代程序员来说是很好的学习教材。如果你的公司里有老项目、老代码需要你去维护,研究一下!你会吃惊于从中学到那么多的编程知识以及公司的业务规则。还会发现一些当前正在研究的问题,其实几年以前就有人已经解决了。

了解你的敌人

程序员很容易对某种语言或框架产生宗教式的虔诚。如果你发现自己曾经痛恨或鄙视某种技术(如敏捷项目管理),也许你应该强迫自己去研究一下它们。最不济,至少你能证明讨厌它们是有理由的。最好的情况是,你会从它们中学到很多东西。不要让你的偏见阻挡了你的探索道路。

不要太贪心

程序员很容易被各种层出不穷的新平台、新语言、新工具、新类库吓倒。你很容易产生一种恐惧心理,感觉自己已经落后——那些程序员谈论的技术我怎么从来没有听说过?当你发现一种新技术看起来很有用或很有趣时,做个笔记,几周或几月后在回来看看它,如果人们还在谈论它,那么,你就应该进一步研究它。事实上很多热门新技术都是昙花一现,你完全可以忽略它,不要让它们浪费了你的大脑。

学无止境

程序员都有着一种天生的好奇心,这种好奇心引导着我们的编程生涯。写几行代码,装载到计算机里,让它按照你的思路工作,这是非常有趣的事情。但随着开发的东西越来越多,我们变的越来越忙,这种好奇心会慢慢的减退。我们应该时不时的用一些新思路挑战自己,让自己的思想保持锋锐和专注,提醒自己为什么当初选择码农这条道路。

转自:翼发云计算

时间: 2024-10-10 10:06:59

软件开发从业者如何走出自己的安逸环境[转]的相关文章

程序员如何走出自己的安逸环境

过去的几个月里发生的几件事情,让给政府做软件开发的人感受到压力的陡增,从奥巴马的医保网站饱受诟病到美国退伍军人事务部官方网站的预约系统从1985年起就没有更新过,这些事情让我回忆起曾经作为政府程序员的经历,以及这段经历如何变成一种一直督促我努力工作的思想动力. 我曾在某个政府部门维护过一个写于1990年代的老系统.当一个新的系统启动开发来替代部分的老系统功能时,很多的程序员对开发新系统的工作产生的严重的抵制心里.起初,我并不知道为什么他们会有这么大的反感.对这个系统维护一段时间之后,我才慢慢明白

敏捷软件开发VS传统软件工程

敏捷软件开发:又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新兴软件开发方法,是一种应对快速变化的需求的一种软件开发能力. 与传统软件工程相比,它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中"人"的作用. 本文将介绍敏捷软件开发的历史背景与发展,

敏捷软件开发?什么是敏捷?

敏捷软件开发?什么是敏捷? 敏捷开发(Agile development)是如今软件工程项目中一个大热的词汇,很多大大小小的开发团队都喜欢高举敏捷开发的旗号,搞出一套显得大大不同于传统的运行模式来区分自己的团队博取眼球,他们手头所做的事情,只是套用一套流行的敏捷开发模板,如Scrum,Crystal,XP到自己的开发流程中,就认为自己的整个开发体系会有一个质的飞越.然而他们是否能真正驾驭所谓的敏捷开发?他们是否理解了敏捷开发的核心理念?这都是要划一个大大的问号. 笔者我在刚刚接触这个词的时候,下

《软件开发工具》知识点-第一章绪论

第一章 绪论 1.软件开发工具的概念: 在高级程序设计语言基础上,为提高软件开发的质量和效率,从规划.分析.设计.测试.成文和管理各方面,对软件开发者提供各种不同程度的帮助的一类广泛的软件. 理解: (1)是在高级程序语言之后,软件技术进一步发展的产物 (2)目的是在开发软件过程中,给予不同方面.不同程度的支持和帮助. (3)它支持软件开发全过程,而不是仅限于某个特定的阶段 2.计算机软件发展的几个阶段: 四个阶段: (1)第一代计算机语言——机器语言阶段 (2)第二段计算机语言——汇编语言阶段

三五个人十来条枪 如何走出软件作坊成为开发正规军

三五个人十来条枪 如何走出软件作坊成为开发正规军(转载) 自从发了上一篇博文,这几天收到很多朋友的来信. 大家从各个开发语言的优缺点和适用领域,一直讨论到设计模式.框架.重构.单元测试,乃至敏捷编程,最后都讨论到了软件开发过程管理,甚至都谈到了盈利模式和中国软件 的悲哀. 最后不了了之,都觉得改善中国内地现在的软件生产状况不可能. 为什么呢? 我重新把这几天大家的讨论留言翻了一遍,发现大家的软件团队都存在着这样一种普遍现象 1大部分人所在的公司,开发人员仅3-5人,多的在10人.别看就这几条枪,

怎么用snapman一个人在三天内开发出一个复杂的软件开发项目管理系统

snapman是一个简单而强大的团队协作软件,在上面的信息可以是数据.可以是规则.也可以是自动化代码:最重要的它是一个可以开发的协作平台,所有信息都可以作用到所有人或机器上,大大减少了工作的复杂度.软件开发项目是人类工程中对人力.脑力的配合度要求最高的项目.所以高智商的人才开发出各种项目定义实施流程:PMBOK.CMMI.IPD.SCRUM.XP等,这些流程的实施离不开各种强大的信息系统.但是这些系统只适合于大公司大流程,到单个的项目组级别很难为项目具体的特点做适配,随心所欲的更改.比如做10个

走出软件作坊读书笔记(一)--项目需求调研

最近在拜读阿朱的[走出软件作坊],读到项目需求调研一章,为了读有所得,从现在开始需要养成写读后笔记.读完后需要好好整理一下,结合自己以及自己公司的现状,想想哪些对自己以及公司可以借鉴的. --改变从现在开始,不要再做一个思想懒惰者,勤于思考,善于总结,你才能有所提高! 言归正传,下面将根据我对该章节的理解,对该章节的内容进行简要记录,记录我的一些想法. 其实阿朱大神在书中也没有详细讲述如何进行需求调研,只是以他亲身经历过的一个项目需求调研案例阐述他对需要调研的理解: (1) 如何着手进行需求调研

R型思维模式对软件开发的影响(草稿)

The pragmatic programmers 一直在工作之余读些书,之前主要是纯英文版的计算机相关的算法,编译器,数学等,想通过读这些书来提高自己每日工作效能,结果收效甚微.一是,因为纯英文的书,阅读的慢,第二,也是最重要的一点,发现掌握的很慢,思前想后感觉可能是和工作的内容距离较远,两者不能互相辅助,第三,不能直接的回馈工作本身. 索性就换一换类型,最先入手的,是<agile software development-principles, patterns, and practices

敏捷软件开发简述

前言:由于我读了邹欣老师的<构建之法:现代软件工程(第二版)>,因此对敏捷软件开发有了比较大的兴趣.于是我在网上找了一些论文,比如Requirements Engineering and Agile Software Development.A decade of agile methodologies: Towards explaining agile software development.在读了这些论文之后,对敏捷软件开发有了大致的了解.这篇博文主要是简单介绍敏捷软件开发,重点集中在主