阳光男孩

Never give up!

Entries for the ‘杂七杂八’ Category

阳光男孩定义

57顶一下  如果能让你身边的人因为你的笑容而感到舒心,因为你的行为而快乐那你就可以算是个阳光男孩了!   凡事总能乐观处之,对待他人能经常微笑,(特别是女生),潇洒,风趣幽默,给人的第一印象就像和煦的阳光照在身上。什么是阳光男孩呢?他们热爱运动、朝气蓬勃、充满活力,可以在校园的各个活动舞台看到他们忙碌的身影;他们爱好丰富,个性鲜明,或许他们就是当代校园中最具代表性的男生了。...[阅读全文]

57
顶一下

  如果能让你身边的人因为你的笑容而感到舒心,因为你的行为而快乐那你就可以算是个阳光男孩了!
  凡事总能乐观处之,对待他人能经常微笑,(特别是女生),潇洒,风趣幽默,给人的第一印象就像和煦的阳光照在身上。什么是阳光男孩呢?他们热爱运动、朝气蓬勃、充满活力,可以在校园的各个活动舞台看到他们忙碌的身影;他们爱好丰富,个性鲜明,或许他们就是当代校园中最具代表性的男生了。
  什么是阳光男孩?什么是让女生疯狂、让男生崇拜?他拥有所有男生梦想的特质,俊美的面容,娴熟的球技,他有疾速的启动,迅捷的突破,他是最好的影子前锋。
  阳光男孩十大标准
  衣着整洁 体魄强健
  举止稳重 坚强执著
  宽容豁达 幽默风趣
  乐观开朗 礼貌教养
  有责任感 照顾弱小

Comments (682)

软件架构应该做些什么

1顶一下软件架构是在软件需求出来之后,软件构建开始之前的工作 架构师应该确定的事情有: 1 程序组织 架构应该定义程序中的主要构造块。 根据程序规模不同,各个构造块可能是单个类,也可能是由多个类组成的系统。每个构造块实现一个高层功能。并且每个需求都至少有一个构造块覆盖它。 定义各个构造块之间的通信规则和依赖规则 2 主要的类 架构应该详细定义或写出所用的主要的类。并指出该类如何...[阅读全文]

1
顶一下

软件架构是在软件需求出来之后,软件构建开始之前的工作
架构师应该确定的事情有:
1 程序组织
架构应该定义程序中的主要构造块。
根据程序规模不同,各个构造块可能是单个类,也可能是由多个类组成的系统。每个构造块实现一个高层功能。并且每个需求都至少有一个构造块覆盖它。
定义各个构造块之间的通信规则和依赖规则
2 主要的类
架构应该详细定义或写出所用的主要的类。并指出该类如何与其他类交互。
架构不需要对所有类进行说明,使用82法则:对构成系统80%功能的20%类进行说明
3 数据设计
架构应该说明清楚用到的数据表的设计,并且描述为何做出这样的选择
4 业务规则
对特定的业务规则(比如:客户信息的更新时间不能超过30秒)要有架构方面的描述(比如30秒内对客户端进行信息同步)
5 用户界面设计
架构应该有详细的用户界面,好的用户界面直接关系到功能的实现和软件的最终效果
6 资源管理
架构应该对稀缺资源有管理计划。比如数据库连接,线程,句柄等的使用。有可能需要设计一个“资源管理器”的模块
7 安全性
架构应该描述用户据输入数据,cookie,配置文件等的安全性说明
8性能
应该根据需求文档中对性能的描述来提供估计的性能数据,并且说明为什么架构师相信能达到性能目的。或者为什么有的性能指标无法达到
9 可伸缩性
架构应该说明系统如何应对以后用户数量,服务器数量,网络节点数量,数据库记录数,数据库记录长度,交易量等增长的需求。
10 互用性
如果系统与其他软件或硬件有共享资源,架构应该说明如何完成这项功能
11 国际化/本地化
系统式是否支持国际化,如何在与用户交互的模块中实现国际化
12 输入输出
架构应该详细定义读取策略
13 错误处理
有人估计程序中高达90%的代码是用来处理异常和错误的,意味只有10%的代码是用来处理常规情况的。
需要考虑的问题包括:
错误处理是进行纠正还是只进行检测
错误检测是主动还是被动
程序如何传播错误,是立刻丢弃还是通知一个地方
错误处理有什么约定
如何处理异常,什么时候能抛出异常,什么地方log,什么地方捕获
在什么地方处理错误,是传递到专门处理错误的地方还是沿着函数链往上传递错误
每个类的输入数据额有效性方面如何负责
是希望用运行环境内建的错误处理机制还是自定义一套机制
14 容错性
容错是增强系统可靠性的技术,如果出现了错误是转入“部分运转”还是“功能退化”?
15 架构的可行性
架构师应该论证自己这个系统设计的可行性
16过度工程
即健壮性。架构应该指出哪些类哪些模块需要进行过度工程(健壮性测试),哪些类或模块只需要做出最简单的工作性能
17 关于买还是造
一些软件,开源代码,处理程序,是使用现货采购还是自己定制开发
18 关于复用
如果使用业界已经存在的软件,开源代码等资源,应该说明清楚如何对这些东西进行加工。
19 变更策略
架构应该清楚描述处理变更的策略。架构应该列出已经考虑过的可能会有变更的需求或者可能增强的功能。
并提供处理情况,比如使用版本号进行控制,或者将代码设计成可动态添加新数据
20 架构的总体质量
架构应该清楚描述其做的所有主要决策的动机
明确指出有风险的地方

Comments (1)

浅析HTML 5在移动应用开发中的使用

2顶一下 前言 HTML5的出现让移动平台的竞争由系统平台转向了浏览器之间:移动端的IE、Chrome、FireFox、Safari,亦或是新出现的浏览器,谁能达到在移动端对HTML5更好的支持,谁就能在以后的移动应用领域占据更多的市场。 现在我们怎么装APP 有了HTML5以后怎么装APP 更灵活、更方便的app使用及安装方式将成为HTML5在移动平台上大放异彩的保障之一。 1.离线缓存为HTML5开发移动应用提供了基础 H...[阅读全文]

2
顶一下

前言
HTML5的出现让移动平台的竞争由系统平台转向了浏览器之间:移动端的IE、Chrome、FireFox、Safari,亦或是新出现的浏览器,谁能达到在移动端对HTML5更好的支持,谁就能在以后的移动应用领域占据更多的市场。

现在我们怎么装APP

有了HTML5以后怎么装APP

更灵活、更方便的app使用及安装方式将成为HTML5在移动平台上大放异彩的保障之一。

1.离线缓存为HTML5开发移动应用提供了基础

HTML5 Web Storage API可以看做是加强版的cookie,不受数据大小限制,有更好的弹性以及架构,可以将数据写入到本机的ROM中,还可以在关闭浏览器后再次打开时恢复数据,以减少网络流量。

同时,这个功能算得上是另一个方向的后台“操作记录”,而不占用任何后台资源,减轻设备硬件压力,增加运行流畅性。

在线app支持边使用边下载离线缓存,或者不下载离线缓存;而离线app必须是下载完离线缓存才能使用

形象点说,cookie就是存了电话和菜单,想吃什么要叫外卖,等多长时间才能吃到就得看交通情况了;离线缓存就是直接在冰箱里存了食物,想吃就能马上吃到(当然,想吃最新的食物同样可以打电话预定)。

设计师要知道,什么时候让用户下载离线缓存(注意在线和离线app的区别)。

2.音频视频自由嵌入,多媒体形式更为灵活

原生开发方式对于文字和音视频混排的多媒体内容处理相对麻烦,需要拆分开文字、图片、音频、视频,解析对应的URL并分别用不同的方式处理。

HTML5在这个方面完全不受限制,可以完全放在一起进行处理。

       设计师要知道,如果新闻类、微博类、社交类应用的信息呈现中实现文字与多媒体混排,而不用专门嵌入webview,将是一件多美好的事情,至少现在原生方式实现起来还有困难。

3 .地理定位,随时随地分享位置

充分发挥移动设备对定位上的优势,推动LBS应用发展。

可以综合使用GPS、wifi、手机等方式让定位更为精准、灵活。

地理位置定位,让定位和导航不再专属导航软件,地图也不用下载非常大的地图包,可以通过缓存来解决,到哪儿下哪儿,更灵活。

设计师要知道,现在嵌入LBS功能的应用越来越多,这也是移动设备与台式PC相比最大的优势之一,HTML5能把这个优势再度扩大化,好好想想怎么在你设计的应用里用上吧!

4.Canvas绘图,提升移动平台的绘图能力

使用Canvas API可以简单绘制热点图收集用户体验资料

支持图片的移动、旋转、缩放等常规编辑

Canvas – 2D的绘图功能支持

Canvas 3D – 3D的绘图功能支持

SVG – 向量图支援

设计师要知道,图片的移动、旋转、缩放?那都太基础了,自己画都是小case,至于怎么用,好好想想吧!

5.专为移动平台定制的表单元素

浏览器中出现的html5表单元素与对应的键盘:

 

 

类型
用途
键盘

Text
正常输入内容
标准键盘

Tel
电话号码
数字键盘

Email
电子邮件地址文本框
带有@和.的键盘

url
网页的URL
带有.com和.的键盘

Search
用于搜索引擎,比如在站点顶部显示的搜索框
标准键盘

range
特定值范围内的数值选择器,典型的显示方式是滑动条
滑动条或转盘

 

 

只需要简单的声明 <input type=”email”> 即可完成对不同样式键盘的调用,简捷方便。

设计师要知道,用的时候记得告诉研发同事一声!

6.丰富的交互方式支持

提升互动能力:拖拽、撤销历史操作、文本选择等

Transition – 组件的移动效果

Transform – 组件的变形效果

Animation – 将移动和变形加入动画支持

设计师要知道,HTML5提供的交互方式是非常丰富的,至于用不用得上,那是你自己的事儿喽!

7.HTML5使用上的优势

更低的开发及维护成本;

使页面变得更小,减少了用户不必要的支出;而且,性能更好使耗电量更低;

方便升级,打开即可使用最新版本,免去重新下载升级包的麻烦,使用过程中就直接更新了离线缓存。

设计师要知道,用户想要什么,HTML5能提供给用户什么。

8.CSS3 视觉设计师的辅助利器

CSS3支持了字体的嵌入、版面的排版,以及最令人印象深刻的动画功能。

Selector – 更有弹性的选择器

Webfonts – 嵌入式字体

Layout – 多样化的排版选择

Stlying radius gradient shadow – 圆角、渐变、阴影

Border background – 边框的背景支持

使用CSS3来完成部分视觉工作,载入速度快,节省代码及图片,也为用户节约了带宽。

设计师要知道,一个界面里几十张素材图的方式已经太out啦,赶快让CSS3帮你偷懒。

9.实时通讯

以往网站由于HTTP协议以及浏览器的设计,实时的互动性相当的受限,只能使用一些技巧来「仿真」实时的通讯效果,但HTML5提供了完善的实时通讯支持。

设计师要知道,应用中嵌入实时通信、信息内容进行实时提醒,HTML5可以帮你实现。

10.档案以及硬件支持

不知道大家有没有发现,在Gmail等新的网页程序当中,已经可以透过拖拉的方式将档案作为邮件附件?这就是HTML5档案的功能中的Drag’n Drop和File API。

设计师要知道,移动应用中对于数据传输的需求越来越大,传统的路径选择方式太过于繁琐,快来试试HTML5的拖拽上传功能吧!

11.语意化

语意化的网络是可以让计算机能够更加理解网页的内容,对于像是搜索引擎的优化(SEO)或是推荐系统可以有很大的帮助。

设计师要知道,HTML5能让搜索更快速、更准确。

12.双平台融合的app开发方式,提高工作效率

依照目前iPhone/Android 迅速提升市占率的情势来看,未来如果想要在先进的智慧型手机上撰写应用程式,要不是选择使用Objective-C + CocoaTouch Framework 撰写iPhone/iPad 应用程式,就是选择Java + Android Framework 撰写Android 应用程式,如果想要同时支援两种平台,势必要维护两套程式码,对于刚起步的小服务而言也算是个小有负担的维运成本。

使用HTML5, CSS3 来撰写Web-based  的应用程式,若要同时支援iPhone 及Android,几乎只需要维护一份程式码(少部份要因应clients 作修改),而且未来若有其它行动装置拥有支援HTML5 的浏览器,那同样的WebApp 直接就多了一个支援平台。

谷歌 的系列服务使用了不少HTML5 中的cache、storage 及database 规格来做到离线存取程式的效果。因为比起桌面应用程式,行动装置的网路连线更不稳定,而且有时在移动中并无网路可以使用,透过这些技术才能让使用者即使在无网路环境下继续使用你的webapp。这说明html5主要服务对象还是给予web的应用,并不会对全部app开发造成威胁,这样有利于不同类型应用使用不同的开发方式,灵活性更强。

关于HTML5,设计师要知道些神马

对于设计师,了解HTML5并不是要学会写代码,而是要知道HTML5有什么特性,能实现什么效果,以便在设计过程中熟练应用。

除此之外,需要知道哪些产品适合使用HTML5进行开发,哪些适合使用原生方式进行开发,毕竟最快、最方便的开发方式是最好的。

再进一步,原生&HTML5的符合开发方式会逐步成为潮流,哪个部分最适合使用HTML5进行开发,也应该能够分辨出来。

什么类型的应用最适合用HTML5开发

就目前来说,依托于网络,web上已经出现的,基于信息流方式及类似方式的应用最适合使用HTML5进行开发。

什么应用是这样的:微博、社交、新闻等

其他适合使用HTML5开发的应用类型:地图、导航等

为什么用HTML5会更好

信息流架构应用都是直接在web(或wap)端抓取数据,HTML5可以直接使用跨平台数据而不用使用后台API,大大降低研发、维护成本,而且呈现效果几乎没有什么区别

地图类能充分发挥HTML5对于离线缓存及地理定位方面的功能,将地图下载到本地,然后配合定位进行搜索、导航等功能(形式灵活,不用提前下载大容量的地图包,节省流量)

下面介绍一些使用HTML5开发的web应用

google+

新浪微博

百度小说

FT web app app.ft.com

不停走动的倒计时器

终端上实现素描效果

吃豆游戏iPhone版

图表实时绘制应用

怎么用HTML5开发移动应用
对于纯离线类的app,目前HTML5展现出来的实力还不是非常强劲,从交互体验和视觉呈现来说与原生方式开发的app还有一定的差距,希望随着HTML5的不断完善,能够赶超原生模式

事实上,移动应用的开发方式往往不是那么死板只用一种方式的,HTML5配合原生方式可能会获得更好的效果:利用原生方式搭建本地架构,让用户获得更加贴近于设备的交互体验,同时在信息的呈现上使用HTML5的优势,以强强联手的方式为用户打造最好的移动应用。

HTML5现状及展望

现在HTML5的标准还没有完全定制完成,整体开发方式上还没有一个规范性的内容,导致的结果是开发者开发的应用比较混乱,体验上也不及原生方式开发的应用,如果想要更好的用户体验,需要更多的优化。

对于移动设备硬件的接口API,目前使用HTML5还不能方便调用移动设备的摄像头、话筒、重力感应器、GPS等硬件设备,不过这也只是时间问题,相信随着HTML5的越发完善,这样的功能一定也会支持的。

还有一个方面就是浏览器之争,一个全面强大的移动端浏览器将对HTML5在移动平台上的发展起到至关重要的作用。

Safari、Chrome、Firefox、IE…谁能脱颖而出,我们拭目以待。

期待HTML5未来在移动平台散发炫目的光彩!

由于目前网络上相关内容较少,以上内容多为自己总结,肯定有不太对的地方,还请大家多多指正。

Comments (1)

IT人员迅速提升自我效率的十大方法

3顶一下所谓,时间就是金钱,效率也意味着时间。高效的工作方式可以为我们赢得更多成功的机遇。如何实现高效工作呢?Zielix创始人、Ingiter Frameworks的创建者Wayne Harrel发表了一篇博文《Top 10 ways to dramatically increase your personal productivity》,为我们介绍了迅速提升自我效率的十大方法。现CSDN对本文进行了编译,全文如下: 每个人都渴望成功,每个人都希望一个月能赚到几百万...[阅读全文]

3
顶一下

所谓,时间就是金钱,效率也意味着时间。高效的工作方式可以为我们赢得更多成功的机遇。如何实现高效工作呢?Zielix创始人、Ingiter Frameworks的创建者Wayne Harrel发表了一篇博文《Top 10 ways to dramatically increase your personal productivity》,为我们介绍了迅速提升自我效率的十大方法。现CSDN对本文进行了编译,全文如下:

每个人都渴望成功,每个人都希望一个月能赚到几百万美金。任何人都不希望遭遇失败,不希望生活标准低于他们的期望水平。为了达到这些目标,人们开始艰难地决定做什么与不做什么。本文提供了可以迅速提高自我效率的十大方法,如下文:

1.远离灰色地带

在灰色地带,很多事情都被掺杂在一起,这样会大大削弱了我们的工作效率。如果你同时做很多事情,你就会迷失你的关注点,失去工作动力,最终导致失败。为了达到你所预定的目标,你仅需要关注众多事情中的最重要的一件。

把你所讨厌的事情全部外包出去。

你不喜欢市场推广吗?把它外包出去。你不喜欢管理你的网站吗?把它外包出去。

我的观点即是:外包所有阻碍你工作进展的事情。在印度和菲律宾有很多人愿意以低价格来帮你做这些事情,这样也可以帮助我们仅专注于可以赢取最大利润的某一件事上。

2.制定一个结果驱动型的计划

这个方法可以最大限度的提高你的工作效率效率。制定一个由结果驱动的计划是将个人效率提至极点的关键。

把所有要做的事都写在一张纸上,并按你预期达到结果的顺序进行排列。

无论你什么时候制定成长计划,关注每件事所带来的价值是非常重要的。

3.雇佣一个顶级优秀的教练

这是一件最容易的事。我个人建议你去雇佣一个顶级优秀的教练。除了像莫扎特这样的人外,其他人都需要教练的指导。即便是Bruce也有教练,他的教练是Yip Man。我们需要有个人在我们背后支持我们,并为我们加油。

所以,如果你不是在12岁之前就能写多首交响曲的Mozart,你就需要一个教练。教练可以带给你一片新天地。

4.寻找一款高性能的软件,并尝试应用它。

最近我做了一项调查,发现很多人购买了Igniter™ Frameworks、Personal Power 2及其他一些高性能、提高生产效率的软件产品,甚至有人购买了相当昂贵的产品,但都并没完全按它的要求来做。

我们可以设想一下。如果你拥有一款高质量、高性能的生产效率软件,并按它的要求来做,那么你的个人能力将会有很大提升。在这里,我指的是可信的、结果驱动型的教练软件。我记得我曾尝试过一些Tony的产品,如Ultimate Business Mastery。它为我提供了一个新天地,并改变了我以前思考业务增长方式的思维模式。

我曾经尝试过很多此类软件,它们可以帮你完成想得到的结果。

如果你正寻找一款高性能的教练软件,你可以试试Igniter™。这是我开发的一款产品,它可以帮助获得你希望得到的结果。

5.做一些决策评估。

这是高能力的基本素质之一。当采取某一特定的行动时,评估一下可获得的收获。要清楚你希望获得怎样的结果,为了达到这个目的你需要采取哪几步行动。评估一下采取这些行动,需要花费的时间。把从逻辑上可以实现的、明确的目标写下来。重点是从预期获得的成果出发,把行动的步骤写清楚。

6.形成具有说服力的个人想法。

你的个人想法决定着你获得信息的方式。你的个人想法可以使你消沉,也可以使你备受鼓舞,它可以使你获得你希望的结果,也可以剥夺你成功的机会。个人想法的形成与你受到的影响有很大关系。这就是下面这条很重要的原因。

7.不要受无关事物的影响。

根据你观看福克斯新闻的时间长短,就可以判断出你大脑接受了多少无关事物。TV和一般的新闻是向你大脑中注入消极思想的主要来源之一。其中十分之一是消极的,而另外的十分之九是积极的。一般新闻播放这些内容的目的是为了赚钱。

如果你继续观看这些内容,你将会有一种“人们都是不好的”的思想。好的想法和性格可以让你在感情上抵触这些东西,同时将减轻压力,最终影响你的思想及工作效率。

8.观看一些专门领域的新闻,而不是一般的新闻。

观看一些像创业新闻、技术新闻之类的新闻内容。这样可以增长你的领域知识,当你很清楚自己的行动步骤,并拥有获取新信息的方法时,按行动步骤来实施计划就可以迅速提升你的工作效率。

所以,避免周围消极思想的影响,专注于可以激励你、使你产生动力的某一件事上。

9.《The Secret》,事实往往并非如些。

你可能听说过《The Secret》这本书。这是一本好书,它试图告诉我们要仅专注于我们喜欢的事,抛弃我们不喜欢的事情。

这十分正确,但却存在一个问题,事事并非如些。为了达到自己想要的结果,我们人类往往会发费两倍多的经历去避免那些自己不喜欢的事情,

你仅是一个人,按照书上所说的去做是有一定困难的。

我相信这是需要技巧的,你要对自己所做的事情一直保持激情,这样就可以阻止你关注其他事情。想像一下,当你执行你的计划,达到你的目标之后,你的生活将会是什么样子的?这将怎样改变你的生活,花一个小时把你做该事情的激情和动机写下来。

这样你就会了解你为什么要这么做,并将倾向于做你喜欢的事,同时工作效率也随之提高了。

10.行动起来

现在是时候做一个决定了。是什么阻止我们行动呢?是什么导致了这个摩擦呢?

请看下面这句话:

“一步的行动胜过一堆理论。对你所做的事,不在太胆怯、过于拘谨。人生本来就是一场实验”——Ralph Waldo Emerson

很多人专注于美好的事物,但事实上这些美好的事物并不一定美好。完美,就是矛盾所在。当你追求完美的过程中,你也将变得完美。

“不完美的行动胜过没有任何行动”——Giovanna Garcia

好消息:用应用去测量你行动的结果

我有一款很不一样的生产效率软件iProcrastinate,Mac用户可以使用它。在Mac应用商店中,它是免费的。对于PC用户,你可以尝试一下基于Web的工具,如tadalist.com。

原文链接:Top 10 ways to dramatically increase your personal productivity

Comments (11)

风雨20年:我所积累的20条编程经验

3顶一下编者按:原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。正如乔纳森在文中所言,本文适合刚毕业的大学生和刚入门的程序员。如果你已是高级开发人员,或许你能在本文中看到自己的身影。 从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些...[阅读全文]

3
顶一下

编者按:原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。正如乔纳森在文中所言,本文适合刚毕业的大学生和刚入门的程序员。如果你已是高级开发人员,或许你能在本文中看到自己的身影。

从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。

我会持续更新这些经验,我可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了。下面就是我至今最难忘的经验。

1. 估算解决问题所需要的时间。不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时。为自己定一个时间限制吧,1小时、30分钟或甚至15分钟。如果在这期间你不能解决问题,那就去寻求帮助,或到网上找答案,而不是尝试去做“超级堆码员”。

2. 编程语言是一种语言,只是一种语言。随着时光推移,只要你理解了一种语言的原理,你会发现各种语言之间的相似之处 。你所选择的语言,你应该觉得“舒服”,并且能够写出有效(而且简洁)的代码。最重要的,让语言去适应项目,反之亦然。

3. 不要过于注重程序的“设计模式”。 有时候,写一个简单的算法,要比引入某种模式更容易。在多数情况下,程序代码应是简单易懂,甚至清洁工也能看懂。

4. 经常备份代码。在我年轻时,我就有过因硬盘故障而丢了大量代码的经历,这经历很恐怖的。只要你一次没有备份,就应当像有着严格的期限,客户明天就需要。此时就该源码/版本控制软件大显身手了。

5. 承认自己并不是最顶尖的程序员 – 知不足。我常想,我对编程了解已足够多,但是总有其他人比你优秀。正所谓,“一山总比一山高”。所以,向他们看齐吧!

6、学习再学习。正如第5点所说,我经常会在手里拿一本计算机或编程相关的杂志或书(不信,可以问我的朋友)。诚然,总有很多你不知道的技术,你可以从中学习以保持不落后。如果你有一种灵巧的方式来获取你需要的新技术,那你每天都应该坚持学习。

7. 永恒的变化。你对待技术/编程知识,就应像你对待股票一样:多样化。不要在某一特定技术上自我感觉良好。如果那种技术或语言已经没有足够支持,那你还不如现在就开始更新你的简历,并启动培训新计划。我能保持前行的主要原则是什么呢?至少了解两到三种语言,所以,如果某种语言过时了,你在学习新技术的时候还可以依靠另一种语言。

8. 提携新人。协助并且培养初级/入门的开发人员学习优秀的编程方法和技巧。也许你还不知道,在帮助他们向更高一层前进时,你自己也在向更高一层提升,你会更加自信。

9. 简化算法。代码如恶魔,在你完成编码后,应回头并且优化它。从长远来看,这里或那里一些的改进,会让后来的支持人员更加轻松。

10. 编写文档。无论是Web服务的API,还是一个简单的类,你尽量编写相应文档。我曾经引以为豪的代码注释,因过度注释而有人指责。给三行代码加一行注释,只需要你几秒时间。如果那是一个比较难以理解的技术,千万别担心过多注释。如果你能很好做好自己的工作,大多数架构师、后备程序员、支持组都会感激你。

11. 测试、测试再测试。我是一名黑盒测试粉丝。当你完成编码后,你“被认可”的时候就开始了。如果你们公司有QA部门,如果你的代码中有错误,那你得到的评论,会比项目经理还多。如果你不彻底测试自己的代码,那恐怕你开发的就不只是代码,可能还会声名狼藉。

12. 庆祝每一次成功。我见过很多程序员在解决编程技术难题后,会和同伴握手、击掌或甚至手舞足蹈。每个人在生命中都会碰到“顿悟”。如果一个程序员高兴地跑来叫你去看他的非凡代码,也许你已经看过这样的代码100遍了,但你也应该为了这个家伙而庆祝第101次。(编者注:《庆祝成功的九种方式》。)

13. 经常检查代码。 在公司,你的代码要经常检查(包括自查和其他同事检查)。不要把别人的检查,看成是对代码风格的苛求。应该把它们看作是有建设性的批评。对个人来说,经常检查你的代码并且自问,“我怎样才能写得更好呢?” 这会加速你的成长,让你成为一个更优秀的程序员。

14. 回顾你的代码。在看到自己以前的代码时,通常会有两种方式:“难以至信,这代码是我写的”和“难以至信,这代码是我写的”。第一种往往是厌恶的语气,并在想如何改进它。你也许会惊叹,旧代码也能复活成为一种更好的程序,甚至是一个完整的产品。第二种通常带着惊奇和成就感。开发人员应该一到两个自己完成的项目成果,能让众人不禁而立并注目而观的项目。同样,基于你优越的编程能力,你可以把过去的程序或项目拿出来,把它们更新为更加优秀的产品或想法。

15. 幽默是不可缺的。在我20年的开发生涯中,我还没有碰到哪位程序员是没有幽默感的。实际上,干我们这行,幽默是一项必备品。

16. 谨防那些无所不知的程序员,不愿分享的程序员,还有经验不足的程序员。当你遇到这几种程序员时,你自己要谦虚。无所不知的程序员,更想当一个英雄而不是团队成员;保守的程序员则是在编写着他们独享的代码;而经验不足的程序员则会每十分钟就来问你一下,当代码完成后,代码已经是你的,而不是他们。

17. 任何项目都不会那么简单。朋友、家人和同事曾请求我仓促做一些事情,仓促做一个程序或者网站。对于这样的事,应该从双方做计划,才能做出令两方都会满意的东西。如果某人起初只是需要一个使用Microsoft Access的、只有有3个页面的网站,但来就很可能变成一个有15个页面的网站,并使用SQL Server,有一个论坛,还有一个定制的CMS(内容管理系统)。

 18. 任何时候不要想当然。假如你承接一个简单的项目,你可能会认为某个部分可以轻松完成。千万别这样想!除非你有一个类、组件、或者一段已经写好的代码,并且在现有的项目已经测试通过。不要认为这将是很容易的。

19. 没有已经完成的软件。曾经有一位程序员告诉我,没有软件是已经完成的,它只是“暂时完成了”。这是明智的忠告。如果客户还在使用你写的程序,并经受了时间的考验。如果有机会,你仍在更新它,这并不是什么坏事,这让你不断地前行。

20. 耐心是一种美德。当客户、朋友或家庭成员用电脑的时候,他们也许会受挫,进而想砸电脑,或气冲冲地离开。我一直在告诉他们,“是你掌控电脑,不是电脑掌控你。”对于用作编程的电脑,你要有一定的耐心。一旦程序员知道问题所在后,他们就会站在电脑的角度看问题,并且说“哦,这就是为什么它是这样做。”

编者后话

对本文深有感触!虽然本文没有华丽的辞藻,其中朴实的道理,其实并非只适用程序员,同样可以扩展到其他行业。记得以前练字时,总感觉当时写得很好,但后来回头再看时,也会想“这居然是我写的字!”

在阅读本文的朋友,不知你是否也有看到了自己的身影呢?欢迎你在微博或评论中和大家一起分享感触。

Comments (2)

经验丰富的程序员和代码行数

2顶一下编者按:原文作者John D. Cook是一位数学教授、程序员、顾问、经理人和统计学家,善于并享受结合运用这些技能来解决问题。 最近,我听说了一个关于缺乏经验的程序员和经验丰富的程序员每天写相同行数的代码的研究结果。其不同之处在于,经验丰富的编程人员让这些代码更高效,向着目标稳步前进;缺乏经验的程序员单纯地将大段的代码分隔开,并且多次复写相同的代码块直到它们看起来能够运行...[阅读全文]

2
顶一下

编者按:原文作者John D. Cook是一位数学教授、程序员、顾问、经理人和统计学家,善于并享受结合运用这些技能来解决问题。

最近,我听说了一个关于缺乏经验的程序员和经验丰富的程序员每天写相同行数的代码的研究结果。其不同之处在于,经验丰富的编程人员让这些代码更高效,向着目标稳步前进;缺乏经验的程序员单纯地将大段的代码分隔开,并且多次复写相同的代码块直到它们看起来能够运行。或者不拆分代码,他们连续调试好多天,几乎是随机的改变一两行代码,直到这些代码看起来能够运行。

正如格雷.威尔森在他的采访中所指出的,将注意力放在软件开发的质量上,往往也会提高生产力。更多的努力,会带来进步;反之,将会导致“回锅肉”(返工)。

经验丰富的程序员不仅能每天编写更多行值得借鉴的代码,而且他们的每行代码都能实现更多的功能,有时候多的不可思议。但是这并没有什么新奇的。众所周知,最优秀的程序员不是一般的高产,他们的产量一般是普通程序的一倍或两倍。(例如Joel Spolsky的书《聪明的完成工作》Smart and Gets Things Done)。更有意思的是,在编写和理解代码方面,最优秀的程序员看起来并没有什么更高超的能力。

并且,也有研究显示,程序员每天编写相同行数的代码与他们使用的语言无关。你可能认为使用汇编语言的程序员每天能比使用像VB或Java之类的高级语言的程序员编写更多的代码,但是事实并非如此。虽然通过数代码的行数来衡量程序员的产量是一种很烂的方法,但它却是判断一个人大脑能装多少东西的好方法。

(编注:在原文评论中,Fred Mitchell 的评论非常精彩,编译如下。)

我编写代码的时间已有30年,我可以非常肯定地说,和那些仅有过两三年代码经验朋友的代码来比,根本没有可比性。

为了更好地反应手中问题,我在代码中力争清晰性和简洁性,也注重“清洁”的架构和对象模型。我所编写的东西有,操作系统、驱动、应用程序、中间件和Web应用。

不仅是代码,还有算法、模式和数据结构。一个经验不多的程序员或许并不喜欢某些算法,从而选择一个“蛮力”方法,而不是选择更有效并省时的方法。

但是通过代码行数来判断工作的方法,并不能反映出所有这些。这种方法完全是一个愚蠢之极的想法。注释算不算进代码行数呢?有时候,我写的注释,比代码还要多,因为我想尽可能详细一些,我不想6个月之后再来看这些代码的时候,我是一头雾水。(编注:在伯乐在线编译的《风雨20年:我所积累的20条编程经验》这篇文章中,就重点提到添加注释,千万别担心过多注释,不仅对你以后查阅代码时有帮助,后来接手的同行或技术支持,都会感激你的。)

真正的生产力是无法轻易和快速测量出来的。有时候,你必须考虑业务模式。总共节省了多少时间,节省(或创造)了多少钱,代码所涉及的维护或停工时间是多少,客户服务的工作量是多少,等等。所有这些才是影响真正生产力的因素。

Comments (2)

工作之余的55种放松方式

1顶一下你是否工作一整天后感到筋疲力尽。唯一想做的就是吃爽口的食物,开瓶啤酒,看电视一直到困为止。   我们都会这样。看电视是一种很好的休闲方式,但是往往你会觉得没什么用。长时间在沙发上坐着不动会更觉得无力和疲惫,尤其是你变得习惯性地在晚上长时间坐在沙发上。 尽管在辛苦一天后要恢复足够的精力很难,有时你能做的最好的事情是从沙发上起来,关上电视,找些更好的事情去做(抱歉...[阅读全文]

1
顶一下

你是否工作一整天后感到筋疲力尽。唯一想做的就是吃爽口的食物,开瓶啤酒,看电视一直到困为止。

  我们都会这样。看电视是一种很好的休闲方式,但是往往你会觉得没什么用。长时间在沙发上坐着不动会更觉得无力和疲惫,尤其是你变得习惯性地在晚上长时间坐在沙发上。

尽管在辛苦一天后要恢复足够的精力很难,有时你能做的最好的事情是从沙发上起来,关上电视,找些更好的事情去做(抱歉像你妈妈一样地唠叨,但她是对的)。如果你感到无事可干,不用担心,本文列举了55种方法(译者注:不是每一条建议都适合你)能帮助提起些精气神,令你更加愉快和充实。

1 睡觉
2 洗个澡,在浴缸里泡个热水澡或者桑拿放松放松
3 换上舒适的衣服
4 听缓和的音乐
5 晚餐做一份你喜欢的菜
6 去公园散散步
7 踢腿、跑步
8 和朋友一起运动,如:飞盘高尔夫运动、足球或篮球
9 练瑜伽或其他非激烈的伸展运动
10 浏览播客网站Oprah.com
11 点几支带香味的蜡烛
12 看看旧照片
13 写日记或玩拼图
14 找个伙伴一起去按摩
15 打毛线,用钩针编织或缝纫
16 烤小蛋糕或松饼
17 开车去野外兜风
18 和你的小孩玩耍(如果你是父母)
19 读名著
20 骑自行车
21 K歌
22 抱抱宠物猫或者溜溜狗
23 在水池边看杂志
24 玩网球,壁球
25 打理一下园子
26 坐在家里门廊前,什么都不想
27 畅想你的愿望
28 整理、清理居住空间,使你的居住空间尽可能的舒适
29 计划一次度假
30 到城市新区逛街
31 演奏乐器
32 和你的家人聊天
33 邀请朋友玩视频游戏
34 跳舞
35 打台球或玩推盘游戏
36 游泳
37 通过博客建立自己的圈子
38 上艺术课或陶艺课
39 用小宝石串项链
40 提前为特别的人准备一份圣诞礼物
41 祈祷
42 写一封信或寄张卡片
43 给你的外公或年长的亲戚发些照片让他们知道你的近况
44 沏杯茶,热些苹果汁
45 深深呼吸清新的空气
46 安静的坐在沙滩、湖边或小河边
47 在咖啡或酒吧品尝美味
48 策划周末的活动
49 邀请朋友玩桌上足球或打保龄球
50 回忆美好的童年时光
51 做志愿者
52 打电话给最逗的朋友
53 练习自由搏击或动感单车
54 野餐
55 看日落

Comments (1)

明星软件工程师的10种特质

1顶一下如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列。 代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质。   1. 热爱编...[阅读全文]

1
顶一下

如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列。

代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质。

 

1. 热爱编程
2. 完成事情
3. 持续重构代码
4. 使用设计模式
5. 编写测试
6. 善用现有代码
7. 专注可用性
8. 编写可维护的代码
9. 能用任何语言编程
10. 知晓基本的计算机科学

 
1. 热爱编程

编程是一种为了满足兴趣而心甘情愿去做的劳动(Programming is a labor of love)。和其他任何职业一样,唯有真正的热情,才能完成真正的伟大事情。这里有个误解,认为编写代码是机械化并纯科学性的。事实上,最优秀的软件工程 师是工匠,他们能把能量、独创性和创造力融入到每一行代码中。伟大的工程师知道何时该把代码雕琢至完美,知道何时把大型系统像拼图一样组装到一块。热爱编 程的工程师从构建软件中获得满足,就好比一位作曲家在完成一部交响乐后而欣喜若狂。正是兴奋感和成就感,才造就了喜爱编程的明星工程师。

2. 完成事情

有很多技术人员只谈论软件而不编写代码(只说不做型)。而伟大软件工程师会真正去编码,这也是他们最为重要的品质之一。他们是实际做事的人。聪明人都 知道,解决问题的最佳途径是直面问题,而不是花上数周来设计复杂又不必要的架构和函数库。优秀工程师应当会问:解决手头问题的最简单方法是什么?最近的软 件开发方法——敏捷实践,正是专注那个。它的思想是,把复杂的项目拆分为短小的迭代,每个迭代只关注一小部分的增量功能。因为每个迭代对应的编码只需要数 周,所以功能易于管理并简单。

3. 持续重构代码

编码很像雕刻。要像艺术家一样不断完善自己的作品,软件工程师也要通过可能的最佳方式来持续完善自己的代码,以达到目标。重新塑造代码的原则称为“重 构”,Martin Fowler在他的创意书中有相应描述。重构背后的原始思想是:改善代码而不改变其功能,移动调整部分代码以确保系统不腐,还有确保系统完成基于当前需求 该完成的事。持续重构可以让开发人员解决另一个著名的问题——“黑盒遗留代码”(这个问题基本无人想触及)。

几十年的软件开发文化要求我们,不应该去改变正常工作的东西。然而,随着时间推移,问题是我们成为了老旧代码的奴隶,老旧代码变得不稳定和不兼容。而 重构正好可以改变这一状况,因为我们是代码的主人,不是它的奴隶。重构在工程师和代码之间建立起持续的“对话”,并带来所有权、确定性、自信心和系统的稳 定性。

千万不要成为老旧代码的奴隶。如果代码是他人所写,或许你可以轻易推脱责任。但大多数时候,那些代码是自己所写,要拿得起放得下,旧代码该埋时,就把它埋了!

4. 使用设计模式

自从所谓的“四人帮”(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)发表他们的著作——《设计模式》后,全世界的软件工程师一直都在讨论模式。在我们所处世界,不管是自然界还是人类行为,模式无处不 在。软件工程自然也不例外。模式就是不断重现的跨语言跨系统的场景和机制。一位优秀的工程师通常能识别并利用模式,而不是受制于模式。工程师不应(强制) 让系统去适应某种模式,而需发现在系统中使用模式的时机(恰当使用模式)。在使用模式来确保正确性时,应借鉴利用前人的智慧结晶,使用以前能正当解决特定 工程问题的方法。但请切记:模式不是万灵药;不要为了使用设计模式而使用设计模式。

5. 编写测试

曾有段时间,软件工程师们认为测试不值得他们去做。然而,如果你不做测试,你怎么能确保代码就能正常工作呢?敏捷实践中的“单元测试”已获得普遍认 可,因为它注重编写测试来反映代码是否有效。随着系统增大,测试也随之增大。有经验的工程师知道并了解测试的价值所在,因为测试的目的就是创建一个能正常 运作的系统。优秀的工程师通常会确保出现过一次的Bug不会再出现第二次。但优秀的工程师也知道,不应该浪费时间写那些琐碎或多余的测试,而需要专注测试 各个组件中的核心部分。

6. 善用现有代码 

“重新发明轮子”一直是软件行业中的巨大问题之一。从发明新语言到从写函数库,忽视并重写那些已经存在并已能工作的奇怪驱动力,已经造成大量软件开发 的失败案例。一位明星工程师会专注三种基本类型的重用:第一,内部基础架构的重用,相应代码是他自己或同事编写的;第二,使用第三方的函数库,比如 JDK。最后,研究使用某些大型网络服务商提供的相应服务,比如Amazon。总之,正确善用现有的代码,使得软件工程师能真正专注于最为重要的事情上 ——应用程序本身。

7. 专注可用性 

优秀的工程师通常都专注于用户。无论用户是企业还是个人,无论是为消费型的软件公司还是投资银行,需要关注的都是可用性。用户如何和系统交互?系统是 否提供一种简单、直接和平稳的操作体验?有种说法,因为软件工程师是技术人员,他/她和“用户如何与系统交互”没有关联,这种说法严重错误。优秀工程师努 力工作是为了什么?不正是让系统简单并易于使用。他们无时无刻都会想到用户,不会尝试去发明那些令人费解,只有极客才能理解并欣赏的东西。

有些时候,一些软件工程师过于投入,反而忘记所编写的程序/软件,是供他人使用,不是做给自己看的“艺术品”。所以,在软件开发过程中,一直要把“用户”放在心中。

8. 编写可维护的代码

软件开发界的另外一个小秘密是:编写优秀代码和糟糕代码所花费的时间是一样多。一位训练有素的工程师,他/她会从第一行代码开始就考虑可维护性和代码 的演化。没有任何理由编写“丑陋”的代码、长达数页的函数,或是稀奇古怪的变量名。优秀的工程师编写代码会遵循命名惯例,代码编写紧凑、简单和不过度炫耀 聪明。代码的每一行,都应恰如其分地展现出其原有目的。在给不便理解的代码(块)合理注释时,别忘了命名规则。清晰明了的函数名和变量名可以让代码不言而 明。

在编码时,有些程序员会有这种心态:过一会儿再来修改或完善某部分代码或某条语句。但谁知这一“过一会”竟然是“一天”、“一周”、“一个月”或“一 年”,甚至以后根本就没机会再回头修改。所以,尽量别妥协写出暂时堪用的代码。否则,不仅不会节省开发时间,也可以阻碍整个进程。当然也不利于后续维护人员的工作。

9. 能用任何语言编程

优秀的软件工程师活血有自己一门特别钟爱的编程语言,但从不会执迷于当中。如今已有很多优秀的编程语言,也就是说,如果你只会使用其中一门语言,说明 你缺乏多样性。你可以用Java、C#或C++编写任何现代软件,可以用PHP、Perl或Ruby编写任何网站的后台。简而言之,编程所用语言,远远没 有语言相应的函数库重要。优秀的工程师能够认知到这一点,并愿意去学习新语言、新函数库和构建系统的新方法。

10. 知晓基本的计算机科学知识

最后,但肯定不是优秀工程师最不重要的特质就是:扎实的基础。优秀的工程师或许并没有计算机科学的学位,但他/她必须知道基础——数据结构和算法。如果不知道哈希表,或者不知道链表和数组之间的差别,你如何构建一款大型软件?这些都是每位从事软件开发的开发人员应当知道的。算法也同样重要,从二分 查找到各种排序,到图形遍历,一位明星工程师必须知道并内在消化这些基础东西。因为这些基础就是你在构建任何现代软件中做抉择时的必备品。

结束语

以上就是区分伟大软件工程师的诸多特质。其中讨论的“热情”,是非常重要的。代码重用、设计模式、基础数据结构和算法都是必须知道的,而敏捷实践中的重构和单元测试则有助于工程师应对复杂的软件。尤为重要的是,明星工程师相信简洁和常识。也正是这些信念,帮助他们成功构建当今世界所需的看似不可能又错综复杂的系统。

引用网上看到的一段话:对于知识,要求知若渴;对于自己,要虚怀若谷。保持开放的心态,保持孩童般的好奇心看待新鲜事物。当今世界,日新月异,不仅要从书中获取知识,更要尽可能从其他途径来学习经验和知识。

如果你觉得一位明星软件工程师还应具备其他特质,请在评论或微博中和大家分享讨论。

Leave a Comment

程序出错后,程序员给测试人员的20条高频回复

1顶一下编者按:程序员和软件测试员之间的关系无须多言。这些经典回复是国外程序员总结分享的,“全球通用”。 20. “That’s weird…” 很奇怪…… 19. “It’s never done that before.” 以前没这样过的。 18. “It worked yesterday.” 昨天还好好的。 17. “How is that possible?” 那怎么可能?(怎么会出问题?) 16. “It must be a hardware problem.” 这一定是硬件问题。 15. “What...[阅读全文]

1
顶一下

编者按:程序员和软件测试员之间的关系无须多言。这些经典回复是国外程序员总结分享的,“全球通用”。

20. “That’s weird…” 很奇怪……
19. “It’s never done that before.” 以前没这样过的。
18. “It worked yesterday.” 昨天还好好的。
17. “How is that possible?” 那怎么可能?(怎么会出问题?)
16. “It must be a hardware problem.” 这一定是硬件问题。

15. “What did you type in wrong to get it to crash?” 你输入什么东西后才崩溃的?
14. “There is something funky in your data.” 你的数据有问题。
13. “I haven’t touched that module in weeks!” 我好几个礼拜没动那个程序了!
12. “You must have the wrong version.” 你一定在用错误的版本。
11. “It’s just some unlucky coincidence.” 这只是凑巧。

10. “I can’t test everything!” 我无法测试所有东西。(我的机器环境下,无法测试所有的可能情况。)
09. “THIS can’t be the source of THAT.” “这”不可能是问题的原因。
08. “It works, but it hasn’t been tested.” 程序能用,不过还没有测试。
07. “Somebody must have changed my code.” 一定有人改了我的代码。
06. “Did you check for a virus on your system?” 你的电脑扫描病毒了么?

05. “Even though it doesn’t work, how does it feel? 即便程序不行了,(你觉得)程序写得如何?
04. “You can’t use that version on your system.” 你不能在你系统上使用那个版本的程序。(程序版本和系统有冲突。)
03. “Why do you want to do it that way?” 你怎么会想着那样操作啊?
02. “Where were you when the program blew up?” 程序崩溃时,你在做什么呢?(做了哪些操作?)

第1条会是什么?猜猜看吧!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01. “It works on my machine” 在我机器上好好的!!!(潜台词:怎么在你那就出问题了呢!!!)

Comments (1)

IT部门的终结

1顶一下    当提起IT部门时,人们常常谈论那些禁止做的事情、不能运行的程序,以及完成所有事要耗费的大量时间。人们对刻板的制度颇有微词,更不用说使用不同语言带来的挫败感。所有这些都不利于建立可持续的关系。 如果公司对某个外部供应商有太多抱怨的话,那个供应商早就被抛弃了。但IT部门作为一个必不可少的部门一直保留了下来。我认为这样的日子也快到头了。 IT部门的问题看起来在于...[阅读全文]

1
顶一下

 

  当提起IT部门时,人们常常谈论那些禁止做的事情、不能运行的程序,以及完成所有事要耗费的大量时间。人们对刻板的制度颇有微词,更不用说使用不同语言带来的挫败感。所有这些都不利于建立可持续的关系。

如果公司对某个外部供应商有太多抱怨的话,那个供应商早就被抛弃了。但IT部门作为一个必不可少的部门一直保留了下来。我认为这样的日子也快到头了。

IT部门的问题看起来在于,他们当初是作为特定的内部供应商建立。从一开始,他们就垄断了所有“计算机问题”,这种垄断趋向于向用户提供美国邮政那样的服务。IT部门有这个实力,他们哪也不去(至少最近不会),而且他们把顾客看作是头脑简单的民工。以至于没有反馈信息用来改进服务。

很显然,我也能看到事情的另一面。人们通常把IT部门当作成本中心,在公司里地位仅高于邮递和餐饮部门,而且如果所有设备正常工作则无事可做,交换服务器宕机时则要面对所有人的指责。(相关阅读:《在IT部门和研发部门的工作差别》)

同时,IT工作的安全性依赖于把事情变得困难、缓慢以及复杂。如果交换服务器并不总是需要两个人维护,那么意味着两个朋友将会失业。使用托管Gmail当然不是一个好主意。把工会从一种进步的力量(为所有人提供合适的工作环境),变成一种停滞的力量(只有杰克可以移动开会用的椅子,只有乔伊会修扩音器)也是相同的因素。

但是,变革到来了。跟技术打交道已经从科技迷的专利,变成了很平常的一件事。年轻人明白这件事。电脑知识已经不再是只有电脑迷才知道的东西。

你不用再需要一名科技人员来管理“服务器机房”。让服务器保持平稳运行的责任已经从IT部门转移了。现在,之前需要本地专家提供的服务都可以从网络上得到。

这种转变不是一夜之间完成的,而是进行了很长时间。那些感觉不需要一个独立IT部门的公司的数量和规模正持续增长。现在,维持一个20人的公司甚至完全不需要专门的一台电脑作为服务器,而这在之前是必需的。

对IT部门工作人员的利好消息是,他们不用再掌握那些在别的地方用不到的技能。大部门的汽车工人和纺织工人将会羡慕他们的境遇,并且想跟他们交换。

 

 

Leave a Comment