架构师给程序员的一封信

架构师给程序员的一封信

下面的邮件是某Architect发给他的Engineering团队的(来源),我觉得挺不错的,翻译过来,我相信我们所有的程序员都能从中学到很多东西。下面是这封邮件——

每次当我开始做新的东西是我就会很兴奋。就算在软件圈里做了20年以后,每当开始新的旅程里,我都觉得我心中有一些东西不吐不快。这是我们大家一起的旅程。我强烈地相信我们详细规划的过程是很有乐趣的,富有挑战的和丰富多彩的。我想让这个旅程让你们难忘,并且能增添你们所有人的阅历。

这看起来有些唯心主义,不过,我想制订我的工作日程,我们的技术策略,以及你们密切合作的进度。这样一来,当你们做了什么相当不错的事,我们所有人都可以受益。我相当的尊重第一个工程师和他们的代码。

1. 代码是王。文档仅随其后 。所以,代码一定要和文档一致,并可以正确执行。

2. 测试,测试,测试。

3. 单元测试非常关键 。每一个在单元测试之后发现的bug需要开发人员双倍的开销。记住,我宁可增加你的薪水,也不愿意把这些钱发给另一个QA团队然后你再修正bug。因此,如果你的代码满是bug的话,我不得不把钱付给更多的人,而你也只能分得很小的一块饼。

4. 写下有效率的代码,不但是让人读得有效率,而且也是让CPU执行 地有效率。对于坏代码永远不会善罢甘休。

5. 多了解今天工作需要之外的事情。你不仅仅要知道今天干什么,还要知道明天需要什么。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (14 人打了分,平均分: 4.50 )
Loading...
C++的字符串格式化库

C++的字符串格式化库

这里向大家介绍一个C++的字符串格式化库,叫cpptempl,这个库支持对字符串格式的条件,循环,变量插入。看上去很不错,只不过其是基于boost库的。

下面是一个例子:

// The text template
wstring text = L"I heart {$place}!" ;
// Data to feed the template engine
cpptempl::data_map data ;
// {$place} => Okinawa
data[L"place"] = cpptempl::make_data(L"Okinawa");
// parse the template with the supplied data dictionary
wstring result = cpptempl::parse(text, data) ;

输出结果是:

I heart Okinawa!

是不是很方便?让我们看一个更复杂的例子:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 4.86 )
Loading...
给老婆普及计算机知识

给老婆普及计算机知识

我们知道计算机的计算数据需要从磁盘调度到内存,然后再调度到L2 Cache,再到L1 Cache,最后进CPU寄存器进行计算。

给老婆在电脑城买本本的时候向电脑推销人员问到这些参数,老婆听不懂,让我给她解释,解释完后,老婆说,“原来电脑内部这么麻烦,怪不得电脑总是那么慢,直接操作内存不就快啦”。我是那个汗啊。

我只得向她解释,这样做是为了更快速的处理,她不解,于是我打了下面这个比喻——这就像我们喂宝宝吃奶一样,

  • CPU就像是已经在宝宝嘴里的奶一样,直接可以咽下去了。需要1秒钟
  • L1缓存就像是已冲好的放在奶瓶里的奶一样,只要把孩子抱起来才能喂到嘴里。需要5秒钟。
  • L2缓存就像是家里的奶粉一样,还需要先热水冲奶,然后把孩子抱起来喂进去。需要2分钟。
  • 内存RAM就像是各个超市里的奶粉一样,这些超市在城市的各个角落,有的远,有的近,你先要寻址,然后还要去商店上门才能得到。需要1-2小时。
  • 硬盘DISK就像是仓库,可能在很远的郊区甚至工厂仓库。需要大卡车走高速公路才能运到城市里。需要2-10天。

所以,在这样的情况下——

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (30 人打了分,平均分: 5.00 )
Loading...
你和你的工作

你和你的工作

源文:http://youtheuser.com/2010/10/04/you-and-your-job/,有人说下面的这个文章太过Crazy,有人说下面的这个文章是猎头的软文,你换工作换得越多,他们才能越挣钱。我的观点的,先别否定他的观点,试着去理解一下为什么他要这么说,你会发现还有一些道理的。然后,想一想,自己需要的是什么?一份工作?还是一份经历?还是不断的自我挑战?相信你会有知道该怎么去做的。当然,“离职”是最后一步棋,在此前,我更希望你能尝试地在你现在工作环境下去改变去影响。

“The role of a manager should be to ensure that those that work for him/her eventually leave and go onto bigger and better things” —  Mark Plant

如果你对你的工作不高兴——离开,如果每天早上你对你的工作没有激情——无论你在干什么你都要停下来。

因为这就是我们赖以生存的东西。

  1. 如果你的工作没有挑战性 – leave.
  2. 如果你在混你的工作 – leave.
  3. 如果你觉得现在不辛苦而又感到压力大 – leave.
  4. 如果你完全知道你现在正在做的所有一切的事 – leave.
  5. 如果你没有得到足够多的失败– leave 并到找一个地方可以让你获得成功前的失败。而当你发现你天天都在成功 – leave again.
  6. 如果你觉得你很成功 – leave 然后去找某个事或某个地方你不会那么成功,而当你又觉得你又很成功了 – leave again.
  7. 如果所有的人都喜欢你并喜欢和你一起工作 – leave 然后去某个地方,那里的人并不喜欢你(然后你让他们喜欢你)。
  8. 如果你的工作就像是赢奖品一样,并且你总是能赢 – leave 然后找个地儿,那里的人总是赢不了什么。帮他们扭转局面。
  9. 如果你认为你知道产品的所有的内在的东西 – leave 然后找一个你不知道的产品。
  10. 阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 4.71 )
Loading...
在线作图编辑服务

在线作图编辑服务

以前向大家介绍过在线的IDE,还有在线的编译器,还有 在线的画UML图的网站,在这篇文章里还介绍了一个在线的CSS制作服务,今天给大家介绍两个在线的作图编辑服务。

一个看似就是Web版的Photoshop:http://pixlr.com/editor/ (用Flash做的)

Photo Editor Online 在线服务

—–

一个是作矢量图的,叫SVG Editor:

http://svg-edit.googlecode.com/svn-history/r1771/trunk/editor/svg-editor.html

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (6 人打了分,平均分: 5.00 )
Loading...
开发时间估计

开发时间估计

项目管理中,项目任务时间估计是其中一个重要的环节。各种管理员人都觉得时间估计很重要,都希望时间估计能准确一些,但是,事实却并不如此。事实上,会下面这样的结果。

目前状态 完成进展 剩余任务估计
任务刚被分配,还没有做调查 完成0% 大约2周
完成需求分析和调查,攻克了难点 完成50% 大约2周多一点
我几乎做完了。只有出了点我事先没有想到的岔子。
不过,我已找到解决方法了。只是还需要一些时间
完成90% 大约2周多一点
我全部做完了,只是还要写文档,做Code Review,
单元测试和错误处理
完成99% 还需要2周

呵呵,这是怪我们的项目管理的方法论呢?还是怪我们太过草率的程序员呢?

好烂啊有点差凑合看看还不错很精彩 (8 人打了分,平均分: 4.25 )
Loading...