经常有人找我给他们的软件项目做修改或维护,我对这些项目毫不了解,而他们只告诉一些很少的项目相关信息。必然的,需要在项目中增加一些新的功能,但在动手之前,我通常需要耗费大量的功夫来大幅度的重构它们。大概一个月前,一个公司老板给我来信“嗨,我有一个软件,需要做一些个性化的改动,有个大客户愿意花一大笔钱来买它,正等着呢,可我现在都没办法让它跑起来,最初的开发人员都找不到了。你能帮我搞定它吗?
在过去的一年半里,我学会了Java(用于开发Android),Python和Javascript(& HTML/CSS)(用于web开发),我慢慢认识到,这最好的从书本和教材上学习编程的方法是把它们读3遍!!用这种方式学习新的内容能更好的帮你理解新语言/新概念。我相信这种方式能帮助你最大限度的从书本中汲取知识——不论你看的是什么书。
上周,一位同事的一个观点让我深受启发,这个观点是如此的显而易见,以至于当他说出来时我惊奇于为什么以前没有意识到这点: 如果你为复用而设计,那你就做错了。你现在要写的代码的唯一目的就是服务于你目前手头上的需要解决的任务。不要为复用而设计。不要去考虑复用。不要为让代码复用而浪费一秒钟时间。
资深程序员对整个软件生命周期很了解,他们可以经过培训成为架构师,但他们不等同于架构师。一个软件架构师首要的和最重要的是他的远见。如果一个架构师拥有一些软件开发经验,那会更好,但大多时候,他们面对的是一个多语言的复杂环境。在第一行代码开始编写之前,架构师需要制定出业务需求如何转变成解决方案。
这是关于一个具有极高智商但却极端个人主义的程序员的故事,这种类型的程序员我们都知道,也都不喜欢。我们可以不用这样的人吗?
有一些我曾经共事过的程序员,他们极其的聪明,但也极端的古怪离奇。
“古怪离奇”也许用来形容一个事件或一个观点更合适。也许称这类型的人为书呆子更合适。但不管怎样,我的印象中,大多数时候,他们并不会带来太大的麻烦。
一些成熟的产品,比如Java或Adobe公司的几款软件,在过去的很长的时间里已经被无数人的手动过。“这些产品变得如此庞大,被如此多的程序员 维护过,导致这些软件的出品人基本上对这些软件里应该有的东西失去了控制。”Botezatu说。
Y Combinator天使投资公司的创始人Paul Graham最近写了一篇文章比较各种编程语言:看看它们各自都是来解决什么问题的。可问题是,像这样去描述,你可以罗列出无数的语言,而且你可以使用各种的角度来描述。而本文的作者也学着使用这种做法,他发现这种方法放在数据库上同样好用
我的同事朋友Chris Eargle写了一篇关于新年计划的有趣文章。他让我想到了,没有出现那场世界末日是我们多么大的幸运呀(还有其他我这45年中躲过的天灾),于是,我也有了一些我自己的以程序员为主题的新年计划。在你的职业生涯中,你能做的会给你带来最多麻烦的事就是成为屋里最聪明的人…..
软件需求会不断的发展、繁殖、变化,在其随后的设计和编码阶段统计出的数据,每月增加的量大概是1%到4%,基于这种现状,很显然,要想达到对需求的完全理解是十分困难的。
需求是软件开发的重要一环节,但由于掺杂着有毒的需求,缺失的需求和多余的需求,使得简单的诸如“品质的标准就是照需求完成”这样的定义成为了软件工业的毒药。
有些人行为怪癖,或知识经验不足,他们看起来会是团队的负担,但团队是有创造性的团体,不是一个死板的机器。下功夫将一些有特殊天赋和能力的人融入团队,回报通常会大于付出。
需要提醒的是,上面的这些考虑因素的前提是团队需要这样的人。当然,这样的人一定是通过了白痴测试,并且拥有团队需要的技能和特征。
神经科学告诉我们,要想达到更高的效率,更有创造力,我们需要经常的让大脑休息一会儿。是安静的大脑创造出最深远的洞察力。但是,在忙碌的一天中抽出这样的停止工作的时间并不是件容易的事。下面说的是三种特别有效的,快速的,容易的在日常工作中营造这样的休息时间的好方法。
Paul Graham不仅是Y Combinator天使投资公司的创始人,而且还是一名关系编程界的程序员,最近他的一位朋友Kevin Kelleher向他建议了一个比较各种编程语言的有趣方法:看看它们各自都是来解决什么问题的。可问题是,像这样去描述,你可以罗列出无数的语言,而且你可以使用各种的角度来描述。
你在兴奋的为你的客户实现一个新功能。这个功能在业务逻辑上超级的复杂,但页面上却是非常的简单。这需要做大量的工作。
在付出了巨大努力后,你刚好在用户要求的最后期限前完成了任务。开发出的新功能在业务逻辑上无懈可击,但界面没有来得急收拾,显得有些粗糙。这没什么,因为这是最容易处理的部分,也是最不容易出错的部分。
在我任职于雅虎期间(大约2001-2007),我学会了做很多事情,但同等重要的,我还学会了如何避免做某些事情。对于后者,主要就是如何避免不公的对待技术人员。雅虎,尽管做出了很多善意的努力和明显的例外举措,仍然没有在公司内带来技术人员地位的提高。
大约6个月前,我辞去了投资公司的工作,去和我的朋友Adrian一起做一个网站。我发现有必要把我的这点经验写一写,希望能给那些有跟我一样想法的人一点忠告和见解。