社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 银行

  • 214291阅读
  • 1107回复

软件编程杂谈文章汇总

级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 1099楼 发表于: 2014-08-07
微软从瀑布式走向敏捷开发
长久以来,身为“软件开发商”的微软的名声并不太好,倒不是人们对微软的软件产品不满意,而是其更新周期太过漫长,比如Office、Windows、SQL Server和Exchange等主打产品的更新周期都长达3年左右,这其中的主要原因就是微软在软件项目的开发中采用了瀑布式开发模式。但随着用户对软 件的需求越来越苛刻,瀑布式开发模式已经难以满足新型软件的开发要求,而微软也不得不改变自己的软件研发策略。


国外科技媒体Arstechnica日前发文对微软软件研发策略的转变之路进行了分析。


以下是文章的主要内容:


在 大部分人的印象里,微软的新版本软件好像很少按照既定时间发布(Windows 95、Windows 2000和Windows Vista均延期发布),而微软本身也很少就软件延期发布正式的官方声明,所以此时关于微软的各种传闻、假设和猜测似乎已经成了惯例。尽管如此,微软仍然 取得了巨大的成功,因为许多竞争对手的情况也大同小异,大家针对付费软件的更新速度都比较慢,所以微软也就显得没有那么突兀了。


瀑布式开发模式


客 观地讲,延期发布在大型软件项目的开发中非常普遍,毕竟这其中充满了各种未知的复杂因素,而目前尚未出现一套行之有效的方法来对此进行管理,所以许多软件 项目最终都很难在既定的时间和预算内完成开发。针对这种情况,许多计算机领域的科学家和工程师尝试了多种正规化的方法来改善软件开发的流程,这其中就包括 微软和大部分软件企业普遍使用的瀑布式开发模式。


微软软件研发策略转变之路 从瀑布式走向敏捷开发


瀑布式开发模式将软件开发的过程分为系统计划、需求分析、系统设计、系统编码、系统测试、系统运行和维护6个阶段,每一阶段工作的完成是下一阶段工作开始的前提,每一阶段都要进行严格的评审,保证各阶段的工作做得足够好时才允许进入下一阶段。


瀑布式开发模式在上世纪70年代被正式命名之后就备受争议,尽管有不少公司在软件开发中使用该模型,但它一直未能获得业界的广泛认可,相反,还有许多业内人士该模型是造成软件开发延期或失败的主要原因。


尽管如此,瀑布式开发模式在如今的制造业和建筑业领域中应用仍然非常广泛,因为这两个行业中的项目进度大多是不可逆的,所以使用这套略显刻板的模型反而能够避免一些不必要的成本支出。


相比之下,软件项目在后期进行修改的成本要比一栋楼简单许多,同时软件开发过程中的不确定因素也要更多一些,所以许多软件项目往往会在某一阶段的开发完成之后再对需求做出修改,这显然与瀑布式开发模式的理念是相悖的。


瀑布式开发模式在微软的应用


虽然微软在软件开发中并没有使用纯粹意义上的瀑布式开发模式(部分开发过程有所反复),但总体上来说还是沿用了瀑布式开发流程,其中的一个代表作的就是Visual Studio。


相对于Windows和Office等软件3年的更新周期来说,Visual Studio的版本更新速度要稍快一些,为两年左右。这两年通常会被分成若干个阶段,其中软件的规划和设计工作要占到4到6个月,之后是6到8周的代码编写和为期4个月的测试阶段,接下来如果出现较大的需求变更,就需要6到8周的时间来进行第二轮的代码编写和4个月的第二轮测试,如果无需大的调整,则进入到4个月的稳定期直到产品最终发布。


从中不难看出,即便在需求发生变更的情况下,软件代码的编写时间也不过只有4个月,而软件测试阶段所需的时间却是代码编写的两倍左右,多少有些本末倒置。


其实微软的组织结构也符合瀑布式开发模式的要求,其在软件开发项目中主要有三个角色,分别是负责功能说明和设计的项目经理、负责代码编写的开发人员以及负责功能实现的质保人员,这三个角色在管理架构上属于平级,三方相互合作和制约来完成一个软件项目的开发。


上 述的这种开发流程和架构看似很是严谨,但操作起来却不甚理想。举例来说,当某个用户安装了Visual Studio的Beta版本并进行了1个月的测试之后发现并提交了其中的一个Bug,而此时对于开发人员来说,是应该对这个Bug进行修复的,但由于此时 软件的开发已经进入尾声,所以如果这个Bug比较严重的话,可能就只能到下一个版本的开发阶段再对其进行修复,这显然会影响该软件的最终质量。


敏捷开发模式


网络的逐渐兴起开始对软件交付模式产生巨大影响,用户是在体验某款软件时无需再将其安装到本地计算机上,只需访问某个网站就能够体验到具体的外观和功能,这对于软件测试来说无疑是非常方便的。也正是在这个时候,“敏捷开发”模式开始出现在软件开发领域之中。


微软软件研发策略转变之路 从瀑布式走向敏捷开发


“敏 捷开发”一词最早出现在上世纪的90年代,并在2001年被正式定名,当时一组开发人员公布了所谓的“敏捷开发宣言”:“个体和交互胜过过程和工具、可以 工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划、虽然右边的项也具有价值,但我们认为左边的项具有更大的价值。”


简 单的说,敏捷开发是一种以用户需求进化为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测 试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。


很显然,敏捷开发与瀑布式开发有着质的区别,前者采用了“迭代式”的开发模式,事先并不先入为主地确定用户的需求,而是先做一些原型试验品来让那些关键用户去体验,然后再根据用户的反馈意见不断做修改和调整。在整个研发流程中,产品的最初设想和最终设计往往是不相同的。


敏捷开发模式在微软的应用


微 软的Visual Studio团队是公司内部首个采用敏捷开发模式的研发团队,尽管最初微软内部仍然以使用瀑布式开发模式,但由于Visual Studio的第三方开发者强烈要求使用敏捷开发模式,所以微软的研发部门不得不做出改变,这也为敏捷开发模式在Visual Studio中的应用铺平了道路。


微软软件研发策略转变之路 从瀑布式走向敏捷开发


Visual Studio 2010是首个因敏捷开发模式而受益的Visual Studio版本,该软件发布于2010年4月,当时同样耗费了两年的时间完成开发,但随后研发团队就发现软件中的许多模板对于敏捷开发者来说太过笼统, 几乎没有太大的实际意义。针对这种情况,微软的研发部门推出了鼎鼎大名的Team Foundation Server(TFS),这个功能强大的服务器平台能为微软的产品提供源代码管理、数据收集、定义工作流程和管理项目进度等,而微软的软件研发策略也就从 此开始发生巨大变化,以往两到三年的产品更新周期逐渐变得更短,软件开发的流程也变得更加灵活高效,而敏捷开发模式也开始在微软内部流行开来


尽 管敏捷开发模式已被证明是非常高效的软件开发模式,但在微软这种规模庞大的公司中推行起来还是颇为困难的,微软拥有大量的软件开发者,其中仅研发部门的员 工就在3000人以上,同时还有数百个研发团队,所以要想让大家从早已习以为常的瀑布式开发模式转换为敏捷开发模式,其难度不亚于“壮士断腕”。


然 而,微软的管理层已经意识到敏捷开发模式对于公司未来发展的重要性,于是开始积极地制定各种措施来推动这一模式在各个研发团队进行普及,其中包括知识培 训、改变研发团队组织结构、建立新的层级汇报机制等等,这都在一定程度上盘活了微软内部的研发资源,明显提升了产品的研发进度。以Visual Studio为例,目前的版本更新速度已经缩短至一个季度左右,这在瀑布式开发模式下是难以想象的。


“保守”的微软Office


Office应该算是微软最为传统的应用软件了,由于该软件拥有非常广泛的用户群,所以微软在Office的开发策略上相对比较保守,而Office用户也大多不喜欢比较频繁的版本更新,因为这样可能会打乱他们既有的工作流程。


微软软件研发策略转变之路 从瀑布式走向敏捷开发


但是,微软另辟蹊径地鼓励用户转向Office 365订阅服务,该服务为用户提供定期的版本更新以及新的功能。同时,微软的iPad版Office团队在进行产品研发时也采用了敏捷开发模式,通过定期产品迭代来为用户带来更棒的使用体验。


就 目前情况而言,微软是否会将敏捷开发模式应用到桌面版Office的研发中还不确定,但至少微软已经主动进行了若干尝试,虽然公司并未改变Office为 期3年的产品更新周期,但微软也承认如今的用户期待获得更多的功能,所以未来微软会通过其他方式来满足用户的需求。由此不难看出,一旦微软发现敏捷开发模 式能够为用户带来更棒的使用体验的话,那么完全有可能在未来数年内抛弃瀑布式开发模式。


结语


对于微软的用户来说,敏捷开发模式为Visual Studio的开发而带来的改进是显而易见的,每隔数月该产品就能进行一些版本更新(网络版的更新速度更快),这无疑将会吸引更多的开发者积极加入到Visual Studio的阵营中来,从而实现良性循环。


而微软也在内部大力推动敏捷开发模式的进展,毕竟这种模式明显提升了软件项目研发的速度和质量,同时该模式所带来的优质体验也让用户变得更加忠诚,所以我们有理由相信敏捷开发模式未来将会在微软逐渐普及,并推动这家软件巨头打造出更为优秀的应用软件。
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 1100楼 发表于: 2014-08-09
为什么谷歌要执行严格的代码编写规范
本篇是谷歌是如何做代码审查的的续篇。
我们在谷歌所做事情中另外一个让我感到异常有效、有用的制度是严格的编码规范。


在到Google工作之前,我一直认为编码规范没有什么用处。我坚信这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率的东西。


我是大错特错了。


在谷歌,我可以查看任何的代码,进入所有谷歌的代码库,我有权查看它们。事实上,这种权限是很少人能拥有的。但是,让我感到惊讶的却是,如此多的编码规范—缩进,命名,文件结构,注释风格—这一切让我出乎意料的轻松的阅读任意一段代码,并轻易的看懂它们。这让我震惊—因为我以为这些规范是微不足道的东西。它们不可能有这么大的作用—但它们却起到了这么大的作用。当你发现只通过看程序的基本语法结构就能读懂一段代码,这种时间上的节省不能不让人震撼!


反对编码规范的人很多,下面是一些常见的理由,对于这些理由,我以前是深信不疑。


这是浪费时间!


我是一个优秀的程序员,我不愿意浪费时间干这些愚蠢的事。我的技术很好,我可以写出清晰的、易于理解的代码。为什么我要浪费时间遵守这些愚蠢的规范?答案是:统一是有价值的。就像我前面说的—你看到的任何的一行代码—不论是由你写的,还是由你身边的同事,还是由一个跟你相差11个时区的距离人写的—它们都有统一的结构,相同的命名规范—这带来的效果是巨大的。你只需要花这么少的功夫就能看懂一个你不熟悉(或完全未见过)的程序,因为你一见它们就会觉得面熟。
我是个艺术家!


这种话很滑稽,但它反映了一种常见的抱怨。我们程序员对于自己的编码风格通常怀有很高的自负。我写出的的代码的确能反映出我的一些特质,它是我思考的一种体现。它是我的技能和创造力的印证。如果你强迫我遵守什么愚蠢的规范,这是在打压我的创造力。可问题是,你的风格里的重要的部分,它对你的思想和创造力的体现,并不是藏身于这些微不足道的句法形式里。(如果是的话,那么,你是一个相当糟糕的程序员。)规范事实上可以让人们可以更容易的看出你的创造力—因为他们看明白了你的作品,人们对你的认识不会因不熟悉的编码形式而受到干扰。
所有人都能穿的鞋不会合任何人的脚!


如果你使用的编码规范并不是为你的项目专门设计的,它对你的项目也许并不是最佳方案。这没事。同样,这只是语法:非最优并不表示是不好。对你的项目来说它不是最理想的,但并不能表明它不值得遵守。不错,对于你的项目,你并没有从中获得该有的好处,但对于一个大型公司来说,它带来的好处是巨大的。除此之外,专门针对某个项目制定编码规范一般效果会更好。一个项目拥有自己的编码风格无可厚非。但是,根据我的经验,在一个大型公司里,你最好有一个统一的编码规范,特定项目可以扩展自己特定的项目方言和结构。
我善长制定编码规范!


这应该是最常见的抱怨类型了。它是其它几种反对声音的混合体,但它却有自身态度的直接表现。有一部分反对者深信,他们是比制定编码规范的人更好的程序员,俯身屈从这些小学生制定的规范,将会降低代码的质量。对于此,客气点说,就是胡扯。纯属傲慢自大,荒唐可笑。事实上他们的意思就是,没有人配得上给他们制定规范,对他们的代码的任何改动都是一种破坏。如果参照任何一种合理的编码规范,你都不能写出合格的代码,那只能说你是个烂程序员。
当你按照某种编码规范进行编程时,必然会有某些地方让你摇头不爽。肯定会在某些地方你的编码风格会优于这些规范。但是,这不重要。在某些地方,编码规范也有优于你的编程风格的时候。但是,这也不重要。只要这规范不是完全的不可理喻,在程序的可理解性上得到的好处会大大的补偿你的损失。


但是,如果编码规范真的是完全不可理喻呢?


如果是这样,那就麻烦了:你被糟蹋了。但这并不是因为这荒谬的编码规范。这是因为你在跟一群蠢货一起工作。想通过把编码规范制定的足够荒谬来阻止一个优秀的程序员写出优秀的代码,这需要努力。这需要一个执著的、冷静的、进了水的大脑。如果这群蠢货能强行颁布不可用的编码规范,那他们就能干出其它很多傻事情。如果你为这群蠢货干活,你的确被糟蹋了—不论你干什么、有没有规范。(我并不是说罕有公司被一群蠢货管理;事实很不幸,我们这个世界从来就不缺蠢货,而且很多蠢货都拥有自己的公司。)
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 1101楼 发表于: 2014-08-11
面试时绝对不能说的话
除了交出一张充满错字的履历之外,在面试中回答出错误的答案,也是让你被刷掉的重要因素。


「每一年,我们都会看到很多调查和投票,列出一些面试的出轨行为,显而易见,这些人尚未意识--面试中所回答的答案,是极为重要。这是你的面试!」国际商业演讲者、《You Can’t Be Serious! Putting Humor to Work》的作者 Michael Kerr 说。


人事经理用面试来衡量你是否适合这份工作,他依据你的创造力、随机应变的能力、你的 EQ,以及你的态度等,所以要记住,不是你说了什么才是最重要的,「你说话语气和肢体语言,也会备受关注,成为另一指标。」Kerr 如此说道。


而以下 13 句,则是面试时绝对绝对不说的雷区!不过除了参考这些不能回答的句子之外,用心地准备面试,才是被录取的不二法门。


「我真的很紧张。」


即使这是你前所未有的紧张,但也不要说出口,没有一家公司愿意聘用一个缺乏自信的员工,「所以,在这种情形下,『诚实』不是好的策略;你需要假装,直到你做到!」TalentZoo 的总裁 Amy Hoover 说。


「我们谈一下钱的部分」


从来没有在面试一开始就谈钱,Kerr 说:「对老闆来说,你只在乎薪水,而没有更深层原因。」他解释,越来越多雇主,喜欢寻找和他们价值观,以及使命、目标等一致或类似的。「你要谈判,可以!应该等到最后、面试尾端时再提出。」


「我的缺点是太斤斤计较,及害怕工作太辛苦。」


如果你被问到「你最大弱点是什么?」时,要避免回答这类答案,Kerr 说:「你不应该主动谈及自己的弱点,除非面试官问起。」每个人都知道他们潜在的优势,Hoover 说:「你应该花多一点时间思考,你真正的缺点是什么,并承认它们。」


「我真的很需要这份工作!」


不要表现出「绝望」。


「绝对不提起,你目前情况下,真的很需要这份工作。雇主可能会认为,这是软弱的表现,他们想要的是那些寻求长期『事业』,而不仅仅是一份『工作』。」Kerr 强调。


「我现在的老闆、雇主,太可怕了。」


永远不要批评前任老闆或公司,Kerr 说「即使面试官故意问起离职原因等,也不要轻易回答!它会塑造你是位『偏激』、『消极』和『小气』的人。」这也测试,你会说出什么诋毁的话。


另外,不禁让雇主联想,是否在未来他/她,就成为你口中的坏人、巫婆等。


「我需要 ……」


不要在谈话中一直提到「我需要 ……」,这是雇主在谈他们的需求,而你是否能帮到他们。


「请问我们什么时候结束?」


你不应该留下赶时间、兼差的印象,Hoover 说:「当 30 分钟的面试延长至 90 分钟,一切进行很顺利,但你却频频看手錶或时钟,一副还有别的重要事情,那么面试官最后肯定不会录用你。」


「我喜欢贵公司提供的福利津贴。」


不要带着你有多爱公司的福利津贴,如每个星期三、五会提供免费零食。「同样地,这会造成你更在乎这些好处,而不是工作上的贡献。」Kerr 如此说道。


「无可奉告!」


除非面试官问你一个涉及个人隐私、非法或让你感到非常不舒服的问题,否则你应该回应他们的疑问。Kerr 说:「面试,不会一直是『无可奉告』,这会让你看起来是有所隐瞒或毫无准备。」


「工作第一年,我能得到多少带薪假?」


Hoover 表示,你不会想留下「打算用病假,尽可能避开较多工作的时段,同时还能领薪水」这样的印象。她建议,离开这类型的问题,直到后续谈到有关人力资源部分的利益。


Ÿ   「S—、d—、f— 等开头字眼。」


不要用脏话或是俗语,来强调你很道地、正宗,Kerr 说:「你只会给人,欠缺沟通能力的印象!」


Hoover 同意的说:「即使面试完在休息,周遭都在说脏话,也不要谩骂,永远!如果它是一个很悠闲的场景或快乐时光,你可以使用 PG 字眼,并活用你的肢体语言,来表达你的观点。」


「我在离婚 / 怀孕时,经歷非常艰难的时期。」


Kerr 建议,不要提起任何私人问题,这可能被看作红灯的理由;它象徵你个人的挑战,雇主会联想,你个人的事情都处理不好了,是否会影响到工作表现。


「我没有问题要问。」


当他们询问你是否有问题有问时,千万别说「NO」,这会显得你对面试毫无准备,或者更糟--对工作、公司不感兴趣。
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 1102楼 发表于: 2014-09-27
Adobe 在中国为啥混不下去了?
作为 Photoshop 的创造者,堂堂 Adobe 为啥在中国区说关门就关门?这事怪不得别人,还是得从自己身上找问题。


在盗版大国玩高价等于找死


Adobe 提供的都是业内最顶尖的行业软件产品,为此收费当然是理所应当的事情。不过售价嘛……


单单一个 Photoshop CS6,售价就达到了 849 美元,折合人民币 5209 元。如果你此前已经购买了旧版本,那么依然需要花 245 美元(1503 元)来更新新版本。但是,很多专业的设计人员并不满足于只使用一个 PS,矢量绘图软件 Illustrator 和排版软件 InDesign 都是必须的。为此,Adobe 非常“贴心”的推出了一个“入门级”套装 Adobe Creative Suite 6 Design Standard,它的售价是 1265 美元(7761 元)……


这样的定价在很多西方国家用户看来虽然高了些,但似乎还能接受:Photoshop 不就是一部 iPhone 6 的价格嘛,买买买。而到了国内,状况则完全不同:国外都是买一部 iPhone 玩玩,但咱可是得卖肾的啊,Adobe 你以为我肾很多么?你以为所有专业人员都是设计界的大咖,那刚入行的有志青年该怎么负担这么多钱?


当然,毕竟也是个专业软件嘛,贵一点有情可原。不想为了一个软件赔进去一台 iPhone 6 的用户只好采取其他对策。


破解 Adobe 系列软件非一般的简单,据笔者所知,目前 Adobe 最新版的 Creative Cloud 2014 系列已经推出了相应的破解补丁和工具。在这方面 Adobe 也是没有长进,防盗版措施依然在延续很早之前的方案,几乎没有升级。只要用一个叫做 amtlib.dll 的文件将现有文件替换,破解即大功告成,破解成本无限趋近于0。


除了 amtlib.dll 之外,还有屏蔽 Hosts、离线激活等的破解手段,只要在网上搜一搜就可以轻松搞定。


在版权意识比较淡薄的国内,绝大部分计算机上运行的 Adobe 软件都是盗版。即使是很多专业的设计师,也不可避免地迫于过高的售价而选择盗版。夹在高定价和国内盗版用户之间的 Adobe 中国研发团队,他们的处境有多困窘大家也就可想而知了。


老版本升级太坑了


不管功能提升有多少,Adobe 系列软件差不多每年就会全线升级新版本,想追新的朋友需要花大价钱跟着升级,而这些软件不管有多少新功能,都要跟着大部队一块升级,这其中水分可是相当多 的。就拿 Photoshop 说,CC 版相比几年前的老版本,本除了界面颜色更深、多了一些辅助工具以外,获得的新功能是少之又少,还不如一些手机 App 更新来得实在。升级花的这些钱越想越觉着亏。


如此一来,很多之前采购过正版的用户也知道 Adobe 软件很水,就不愿意再二次投资,去采购新版本了。很多企业、高校的 Photoshop 还都停留在六、七年前的 CS3 或更低版本,跟 Windows XP 不死差不多一个意思。


定价策略死板


反观其他企业,无论是普及类还是专业类的软件,很多都采取了降价或免费策略。苹果 OS X 从 10.9 版本开始免费提供,而 iWork 系列在新购买的苹果设备上也同样是一分钱不收,算是足足的摆了微软 Office 一道。


当然,Adobe 可以选择继续收费,但是在这方面却要学学二维、三维设计和工程软件公司 Autodesk。Autodesk 为旗下产品推出了租赁服务,用户可以以季度或年度为单位花更低的价格购买一定时间的使用权。对于部分想尝试软件的用户来说,这样能够提供一个更低的购买门 槛,这些用户后期购买永久许可的可能性也会大幅提高。而 Adobe 的方式简单直接:你要不就全款购买,要不就试用 30 天。面对如此死板的销售模式,平民老百姓当然会用脚投票,去选第三个选项:破解。


Adobe 为啥在中国混不下去了?


Autodesk 提供了灵活的购买方式


学习成本高,美图软件逆袭


Photoshop 是远近闻名的图像处理软件,如果大家评论一张照片,会说它是“P”过的,而不是修过、改过、山寨过什么的。虽然 PS 的知名度如此之高,但真正能掌握它的用户却是少之又少。


PS 提供了丰富的工具、滤镜,甚至可以满足平面设计用户的所有需求,但惟独征服不了那些自拍分享控、祛痘磨皮控们的心,因为它操作起来太复杂了。正是因为 PS 复杂,所以美图秀秀、光影魔术手们才会出现,甚至连手机也全部自带美颜功能了。它们操作简单、效果明显,什么P的细致不细致的帅哥美女们根本不在乎。反过 来,Adobe 在移动设备软件开发方面碰了不少钉子,此前所推出的 Photoshop Touch 虽然非常专业,但是操作体验却非常、非常的别扭。


别以为被坑的只有 PS,Adobe 大部分软件都有它的“好兄弟”:Premiere 有会声会影,Illustrator 有 CorelDraw,InDesign 有方正飞腾,Audition 有 Soundtrack……苹果提供的软件更是齐全:Aperture、iMovie、Final Cut Pro、Logic Pro,这些个个比 Adobe 好用,个个比 Adobe 便宜。


就在这样一个看起来比较诡异的趋势下,更多国内用户进一步失去了选择 Adobe 的理由,给他们花钱就更没门了。


这样一看,Adobe 中国研发团队解散真的是一点都不新鲜了。不要责怪国人没有版权意识,要是当年全世界都向中国标准看齐的话,那全世界都没有靠版权的盈利模式。要怪还是得怪 Adobe 没能审时度势,没能抓住用户在移动互联网时代的需求。


Adobe 为啥在中国混不下去了?


网友闻讯纷纷“忏悔道歉”
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 1103楼 发表于: 2014-10-02
一位30多岁的程序员生涯经验总结
1.客户在接触到产品之后,才会真正明白自己的需求。

这是我在我的第一份工作上面学来的。只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的。给出一个功能性原型设计远远比一张长长的文字表格要好。

2.只要有充足的时间,所有安全防御系统都将失败。
安全防御现如今是全世界都在关注的大课题、大挑战。我们必须时时刻刻积极完善它,因为黑客只要有一次成功,就可以彻底打败你。

3.安全防御是否失败取决于及早规划。
假设有黑客会彻底破坏你的防御系统,那你就得提前做好准备。这样即便真的让他们侵入了系统,也盗取不了任何有价值的东西,因为你已经对服务器做了安全设置,比如对数据库中的内容进行了加密,并且对每台有可能遭受攻击的服务器进行了隔离。
记住,再强大的防御都会有它的薄弱之处,关键是要有备无患。

4.良好的安全防御系统不要在乎它的费用,因为这是战略投资;不及格的安全防御才是被浪费的资源。
在我的职业生涯中,经常听到有人抱怨说安全防御是多么多么的复杂和昂贵,他们没有意识到的是,如果防御失败,公司将损失的可能不止几十亿美元。为了节约几块钱而导致企业破产,这种做法毋庸置疑是非常愚蠢的。

5.将复杂的东西整理成简单的,是很难的,但是要是把复杂的捣鼓成更加复杂的,那就简单了。
这一条适用于编程、设计和几乎所有的创造领域中。我一直以来都希望自己的代码能越易于理解越好。如果你的代码过于复杂和晦涩,那十之八九它正常工作的可能性很低。我曾非常有幸地见识到有些程序员费劲千辛万苦,反而让代码更加难以捉摸了。

6.成功源自于失败中的学习;失败则是因为容忍错误的横行。
有很多程序员总是在辩解,说什么“程序这么难,犯错误很正常了,软件变得糟糕也在所难免了”。这种理由听得多了,于是,大家也逐渐接受了这些扯淡的 借口。但是我们作为程序员真的不应该让这些借口阻碍我们的进步,应该谨记,错误只能犯一次,要吸取教训。话说是程序员都会希望自己下一次就能一次性搞定代 码。但是没有人是完美的,不过至少我们是在朝着这个方向前进的路上。

7.唯一不变的是变化本身,这是谁都无法改变的法则。
计划永远赶不上变化,以为明天的世界和今天一样,这种想法本身就是愚不可及的。尤其是在编程世界里,没什么是永恒的。人不能两次踏进同一条河里。

8.永远不要停止学习,一旦你停下来,技术的浪头就会狠狠将你拍死在沙滩上。
作为程序员立于不败之地唯一方法就是,不断学习、不断进步。因为一旦你松懈下来,你的所有优势都将随风而逝。

9.整个软件行业建立在“百家争鸣”的思想上。
在我的职业生涯中,我看到过很多程序员会对各种事情较真:预估完成时间上较真,规模大小上面较真等等。而且有的人还屡错屡战。有些以前被批判为“行不通”的技术,现在却已经牢牢占据了人们生活的一席之地,并且现今正向着另一个高潮冲刺。

10.适合你的不一定适合他。
在软件项目中我们可做的选择很多很多。有的英明,有的糟糕。但是适合你和你当前情况的选择可能一点都不适用于其他人。我们经常能听到别人说自己又在干什么伟大的创举,但是如果他们说什么这是唯一的好方法时,我会对此嗤之以鼻。

11.在这个不断变化的世界中,评估是最为重要的技能。
这一点有些人可能并不知道。但是如果你愿意认识新事物,看得到他人的努力,比较做事方法之后再择优使用,那么不但是你自己,还有你的团队、你的项 目、你的公司,都将受益无穷。但是很多人对此都不擅长,而很多负责人甚至在这方面表现得非常糟糕。照着别人说得做,以及看别人做什么自己也做什么,是非常 容易的。但是如果要全方位地看问题然后再基于自己的需要选择对应的最优方向,这就很难很难了。在软件行业中做抉择是必须的,但是如果当你在不得不评价分析 的时候头脑一片茫然,那最终的结果只能是随机挑一个或者是盲从随大流。

12.不管黑猫白猫,能抓到老鼠就是好猫。
只要你的软件能实现客户指定的功能,他们才不会关心需要解决哪些问题。系统出问题了,异常情况发生了,硬件坏了,程序猿被女朋友甩了,黑客盗号了: 用户永远不会对这些发生兴趣。如果发生意外情况,最好能坦诚说出来,但是你最好要能确保这种情况不会持久,因为你总给将最终的产品交给客户。

13.客户的意见决定质量。
无论你设置了多少指标,检查过多少表单,审核了多少代码,写了多少测试:这都不是关键,除非客户自己亲眼目睹软件运作正常。关于代码质量、性能、设计和可用性,客户的意见才是决定质量的唯一要素。

14.对某方面的无知可能会让你一败涂地,因为你在这方面毫无经验。
即使到了今天我依旧在不断惊叹,有的同行竟然仍然没有收集足够的日志、崩溃报告和使用信息来掌控自己的软件。那些对这方面信息不屑一顾的家伙,大多 会高估产品的质量。因为如果你不采取措施和记录结果,浑浑噩噩地混日子,终将会导致你对当前情况一无所知,包括你的客户。我一直反复强调,详细而有用的日 志记录、程序崩溃跟踪、评论和意见,反正各种只要能让我尽快了解发生了什么问题的途径和方法,都是可行的。不过,我也知道有很多人认为“这种事和程序员有 一毛钱的关系吗?”。

14.总有更好的办法,但是时间不允许。
评估中最难把握的节点是什么时候应该停止头脑风暴开始开工。或许我们会错过那个更好的方法,但是如果要耗费很长时间,那就不值得了。但是这是很难界定的,不过有时候今天的一个小小的选择可能会打败明年那个更佳的选项。Who knows?
下面两点引用自一名销售人员,他是我很早以前的同事。有些东西我并不是完全同意,不过也能给予我们不同的角度看问题。

15.客户要找愚蠢的。
这是我最喜欢的一句话,这个销售人员就职于一家咨询公司。他认为,要找那种不懂技术但是有足够资本挥霍的金主。聪明的人总是会问很多问题;没钱的人无力购买我们的服务。我很庆幸我是一名程序员,哈哈!

16.我的工作是欺骗客户,而你的工作则是支持我。
第二句话来自于同一个销售人员。他总是喜欢不断地承诺一些不可能的任务,然后当我们终于呕心沥血加班加点赶出来了,他就来收获我们成功的果实。挑战的确让人exciting,但是每次都是这种不可能的任务未免太痛苦。我的建议是,换一个更好的销售人员!

QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 1104楼 发表于: 2014-10-05
从“码农”说起
有篇《解密内幕:一位Adobe中国区遭裁员工的“陈述”》的访谈,其中提到:“随着人力成本的提升,中国的软件业的很多工作机会正在转向印度……”


这引起了我的思考,随后和网友们的互动也让我进一步有了想写一篇长微博的想法。


如我微博里面所说,我从来也不是一个真正意义上的程序员,虽然我很多时候都是在编程和调试代码,但是我自己觉得自己一方面不是科班出身,另一方面从事的总是偏硬件或者偏协议的工作,所以算不得真正的软件开发人员。


但是当我不断听到有人说软件行业正在变成“劳动力密集型产业”的时候,当很多自称软件开发人员的人不断提到程序员已经逐渐成为“码农”的时候,我想我还是想说出我的想法。这想法未必多么新锐,但是对于那些渴望从各种伪经验和各种吹水中看到一点真知的年轻人,应该还是有点意义的。


“码农”这个称谓,原本是程序员用来调侃自身待遇的称谓,因为感觉在这个花花城市(程序员的工作一般都位于大型城市) 里,和自己同样学历的金融、财务方面的就业者都有着比自己高的收入。这样的自嘲有时候也是针对所作项目的不满,有些项目因为各种各样的原因,进展艰难,所以让程序员觉得一直裹足不前,看不到明确的发展方向,犹如反复耕耘同一片一亩三分地的农民,而由此自称“码农”。


这个称谓流传到了程序员的圈子外面,很快得到了传播,所以社会上也逐渐以“码农”来形容程序员,一开始总有点调侃和不屑,到后来,舆论逐渐转向同情(这里我在想,电视剧《蜗居》里面文章扮演的小贝这个角色,可能就是一个舆论认知的信息渠道)。


我在微博中提到,我是不同意用“人力成本”来表述一个依赖创意的产业的,至于“好的软件是测试出来的”这样的屁话我也已经耐心的反驳过了。


谈论一个事情的各个侧面不是我今天长文的目的,我的目的其实是想对那些刚刚进入或者是正打算进入这个行当,心存敬畏,并且想好好干一番事业来的年轻朋友们说点我的真心话。


首先,这个行业的确存在很多重复劳动,因为大家都不愿意购买或者说获得授权使用别人的成果,很多工程之所以劳师动众,很大程度上是因为无法借鉴或者舍不得购买前人已有的算法成果和有效的代码模块。这就好比造汽车的企业明明没有发动机的研发功能,却不想花钱采购发动机。你看,这在实体产业中是可笑的,但是在软件行业中,却是常常出现的现象,尤其是当企业领导或者项目经理拥有一个其他行业的背景的时候。 很多人的说法是,反正别人能写出来,你为什么写不出来?问题是,已经有高人写出来了,为什么我这个菜鸟还要写,而且拿着这么低的工资却要求我写出天才的代码?


第二,这个行业的确存在很多的外行领导内行,前面说的企业领导或者项目经理的问题是一种情况,更为普遍的是,大家觉得软件是无所不能的,所以软件开发者也应该是无所不能的,不遵循软件开发的规律,不激发开发人员的创造力和协作配合精神,以为强调纪律就是一切。这种遭遇很多资深程序员都遭遇过,但是想想为什么松松垮垮的谷歌可以成功,而治军严谨的富士康为什么没有啥拿的出手的软件产品(富士康是有很大软件开发团队的,只不过战绩拿不出手,所以一直不怎么露脸)。


第三,这个行业里面有一大堆不合格的人。很多人是半路出家,很多人就是大忽悠,可以吹牛,但是编程水平太差,很多人根本不会查文档,很多人完全不喜欢这份工作,巴不得这是一份不费脑筋,每天到点下班、每月按时拿钱的近乎前台的工作。


所以,软件行业其实也是中国社会的缩影,或者说各个行业都是中国社会的缩影,而软件行业体现的是中国社会组织性和人性的某些特定层面。


知识产权什么的,哎…… 这个问题这里就不多说了,说多了大家也都眼泪汪汪的。


我只是想说,那些天天咒骂人力成本提升的混账老板们,都是吃人不吐骨头的东西,他们山珍海味的下馆子可以涨价,他们开的豪车可以升级,但是手下几个程序员每个月多拿几千块,便是动了他们的祖坟一般。


我还想说,那些天天狂喷人力成本提升,贩卖所谓“中产阶级陷阱”的伪经济学者们,都是招摇撞骗的无赖,他们可以鼓吹房价上涨保护中国经济,却认为程序员工资高了对社会是危害,每个有良心的程序员都应该以相信这样的伪经济学者的话为耻!


一个正常的市场经济里,有创意,有技术的人,都是能够得到回报的,如果一家企业,一个组织不能满足你,你可以选择创业,可以选择跳槽。现在我们的社会还远远没有到软件供不应求的状态,反而是大量的需求得不到满足,大量的社会协调缺乏软件技术的协助。相信机会总是有的——即使是在中国。


年轻人,不要相信什么“码农”的宿命,也不要相信“人力成本”提高会导致软件行业受到冲击,不会的,美国的人力成本那么高,软件行业受到冲击了?瑞典、芬兰的软件行业因为人力成本那么高而受到冲击了? 听这种扯淡,不如睡睡好觉,听听音乐,保持好心态,做有意义的事情,迎接未来。
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 1105楼 发表于: 2014-10-08
程序猿特有的 15 个坏习惯
0. 程序员数数会从0开始数起.

例: 程序员吵 架的时候会说: “我数三下, 你再不闭嘴我就不客气了! 零! 一! 二!” 或者列清单的时候编号会从0.开始写.

因: array[0]是数组的第一个元素.

评: 这个习惯的养成是一个艰难的过程. 多少次的越界, 多少次的循环次数错误让我们深深的记住了从0开始.



1. 程序员用肯定和否定 回答选择性的问题.

例: 问 “您想喝咖啡还是喝茶?” 程序员答: “嗯.”

因: 当条件或||有一个子句值为真, 则整个语句值为真.

评: 这个习惯夸张了一点, 但这的确是程序员思维方式的通病, 用计算机的处理逻辑处理人类问题. 当然这样的回答显然是存在编程错误的, 因为对于这个问题他错误的返回了布尔型的值. 虽然高度怀疑有没有人关心这种回答的结果是怎样, 还是给出一个答案. 如果真的在程序的世界里, 服务员会优先考虑给你咖啡, 如果没有咖啡了, 才会端茶给你.



2. 程序员普遍患有或曾经患有分号结尾综合症;

例: 比如这几行;

因: 大部分程序, 特别是多数程序员的启蒙编程语言C语言是用分号结尾语句的;

评: 换行之前习惯用分号结尾, 这是程序员专属的坏习惯. 还记得编译报的各种诡异的错最后原因总是少了那一个小小的”;”吗? 这就是这个坏习惯的成因. 据说分号结尾是有典故的, 因为键盘上的分号正好在右手小拇指的位置, 比起句号之类有着得天独厚的地理优势. 当然也有不需要分号结尾的编程语言(比如Ruby还有Python), 刚用起来会因为没有分号结尾而格外纠结.



3. 程序员对”语言”的概念和普通人有差.

例: 问: “你都会哪些语言?” 普通人: “我会汉语和英语, 还会一点点法语.” 程序员: “我会C语言, C++ 和 Java, 还会一点点Ruby.”

因: 程序员的世界里没有母语和外语, 只有编程语言.

评: 说真的, 程序语言的语法学起来比外语更容易, 拿到一个用没学过的语言写的程序, 你多少可以看懂部分程序. 程序语言没有国界, 是各国程序员交流最好的桥梁.

4. 程序员格格外外的厌恶括号/引号不配对的情形.

例: 看到这样的内容 (举个简单的例子(我知道你懂的), 你能表示”我很淡定我不抓狂吗?

因: 各种不配对问题会导致编译错误.

评: 扫视代码, 对不配对的情况异常敏感, 瞥一眼就能发现哪里少了个右括号. 这种症状在使用那些带自动补全功能的开发环境时变得更为纠结.



5. 程序员认为 千(k) == 1024.

例: 程序员换算表: 1km == 1024m, 1kg == 1024g.

因: 成因很曲折 计算机是二进制的世界 -> 1024是2的10次方 -> 英语里用kilo一词来表示 -> kilo翻译成中文是”千”, 比如千米, 千克.

评: 也许一般人会认为500, 1000是很整的数, 但程序员会觉得512, 1024是很整的数. 不要奇怪, 如果128, 256, 512这种形式看着不够整, 帮你转换成二进制: 10000000, 100000000, 1000000000…



6. 程序员惯用 == 来表示相等的意思.

例: 见5.

因: 在程序语言中, “=” 是赋值, “==” 才用来判断二者是否相等.

评: 单等和双等的区别是程序入门必修课, 也是老师爱考的考点. 如果在C语言if语句的判定条件里写了个单等, 编译能通过, 结果却往往不对, 够一个新手查上一阵子的. 当然目前的语言大都考虑到这一点, 防止了这类的误写, 但是单等和双等的差异已经深入每个程序员的 内心.



7. 程序员使用”//”表示”请无视这一行文字”.

例: 餐厅中. 程序员A: “我吃鱼香肉丝盖饭, 你吃什么?”

程序员B: “宫保鸡丁盖饭.”

程序员A 在点菜单写上:

鱼香肉丝盖饭 1

宫保鸡丁盖饭 1

程序员B: “我还是要牛肉面吧!”

程序员A 更正点菜单:

鱼香肉丝盖饭 1

// 宫保鸡丁盖饭 1

牛肉面 1

因: 程序中用”//”为代码加上注释, 程序运行时会无视掉”//”开头的代码行.

评: 如果和一伙程序员在一起时被冷落了, 可以抱怨一句”喂喂喂我是被注释掉了吗?” 相信一向以幽默感丰富又有爱心著称的程序员们会关注你的.



8. 程序员有 中文标点恐惧症.

例: 如果你注意到了, 这篇文章自始至终都在使用英文标点, 这就是最好的例子.

因: 程序中的全部符号都严格需要是英文半角标点.

评: 这个坏习惯是有中国特色的, 中国程序员特 有的. 任何一名优秀的我国程序员都应该可以作到区别中文标点和英文标点. 比如, 和,还有 ’和 ‘. 真的, 当年初学编程的时候, 诸如 “error C2018: unknown character ’0xa3′” 的错误看得还不够多吗!


9. 我现在认为256这个数字非常完美。但非程序员不明白这个,有时候让我措手不及。
编者评:1024呢?


10. 我在看纸质书时,我就非常沮丧。为什么我不能用Ctrl + F来找想看的东西呢?

编者评:我在看电视时,一到广告,我也非常沮丧。为什么我不能往后拖呢?



11. 我Google一切。
编者评:忘了Google的地址怎么办?


12. 几年前,我去一家咖啡店吃午饭,柜台里边的MM问我吃哪种面包。我不假思索地说:“默认的。”
囧,她或许现在还在笑我……
编者评:如果该MM不懂编程,她应该不会发“酵”,只会发蒙。


13. 缺觉,我现在习惯了。
编者评:大熊猫应该不再是濒危动物了!缺觉有害健康。另外,正在看本文的朋友,不管你是否是程序员,都应该检测一下自己的睡眠是否达标了。如何检测,请参考伯乐在线的《你的睡眠时间和睡眠质量达标了么?》一文。


我喜欢优化每天的事情,尽可能多采用并行处理。比如,在启动电脑后,跑到厨房打开水壶、准备咖啡,然后跑回来输入密码登录系统;在打开火狐时,去倒开水冲咖啡,然后端着咖啡回来浏览新闻;另外,坐在马桶上刷牙,每天也能节省几分钟。
编者评:哥端的不是咖啡,是下巴!


就是这样一群人, 如果你慢吞吞的用电脑他们会急躁的抢过键盘熟练的使用各种快捷键, 他们会对着小孩子讲计算机的三原色是红绿蓝而不是红黄蓝, 他们描述大小距离更偏向于以像素作单位, 陪女朋友看电影看到电影院座位上稀稀落落的人就想做磁盘碎片整理…抱怨归抱怨, 这不也正是他们的可爱之处吗?
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
级别: 管理员
发帖
8532
金币
2762
威望
3231
贡献值
0
元宝
0
只看该作者 1106楼 发表于: 2014-10-21
程序员可以兼任项目经理吗?
本文作者Paul Glen是‘The Geek Leader’s Handbook and a principal of Leading Geeks’这本书的作者之一,作者的联系方式info@leadinggeeks.com.
人们的有些尝试从来没有成功过:接到一个小项目,项目小,完全不需要一个全职的项目经理。于是就决定让一个程序员兼任项目经理。毕竟,还能有谁比程序员更清楚应该写出一个什么样的程序?
的确,很多程序员能做好项目经理的职位。好的程序员和好的项目经理的之间没有本质的冲突。这两个职位都是面向细节和面向结果的。但是一个人不可能同时做好这两个工作。
为了理解这种不兼容性,必须认识程序员和项目经理工作任务的类型。
开发软件需要进入一种沉浸状态,为了更加有效率,程序员必须完全进入代码世界,来专注于操作算式和变量,预见到变化和随机事件,测试一些构想和跟随 着一些复杂思路。在这种工作模式下,需要长时间不间断的专注。当程序员被打断,可能会丢失刚才是思维轨迹。被打断后,能在15分钟内找回思路已经很幸运的 了,而很有可能到第二天也找不回刚才的思维点。
换句话说,软件开发的任务切换成本相当高。
而项目经理需要完全不同的思维基准和工作模式。与程序员的梦境模式相比,项目经理需要熟悉和快速地将事实、感情和外部环境属性联系起来。项目经理不 仅仅是创建一个抽象的项目计划、跟踪项目进度,还需要创建项目理论架构。 他们的工作主要是协调多个成员的活动,理解项目成员们的工作进展,遇到了哪些困难,需要哪些资源,成员间的工作进展如何影响其他人的进度。也可以说,项目 经理的工作几乎是间歇式的。他们需要随时处理危机,防止问题出现,并与客户群体沟通。
明显没有办法使这两种截然不同的工作模式融合。如果问某人能否同时兼任项目经理和开发工程师,他可能会说他优先履行程序员职务,再来做项目经理的任 务,但是他应该根本没空去管理项目和与客户沟通,这样的项目肯定缺乏领导力;或者回答者会说他优先履行项目经理的职责,再去做程序员的工作,这样,开发任 务要么被延期要么不会被很好地完成。
如果要改善项目产出效率,一定要将‘一人兼任项目经理和开发工程师的想法’抛在一边,选择一个开发工程师兼任经理会损害项目产出效率,而且这个兼任的工程师来说很残酷,因为你在要求这个人做不可能的任务。
QQ: 378890364 微信:wwtree(省短信费) 紧急事宜发短信到0061432027638  本站微博:http://t.qq.com/wwtree QQ群:122538123
描述
快速回复

您目前还是游客,请 登录注册
如果您在写长篇帖子又不马上发表,建议存为草稿