研发团队的角色和构成

software engineer

以下都来自我的经历,带有主观评价,但是尽量保持平直的论述。

在我工作的第一家公司的时候,一个典型的研发团队是这样组成的。我的经验也只是到4年前,现在也许早就不一样了呢。

项目经理,这个角色是不断在换的。项目经理当然是只跟着项目走,这和团队经理(Team Leader)是不一样的。当然,Team Leader也往往在不同的项目里面兼任项目经理。基层的项目经理也可能会编码,但是不管参与不参与编码,工作压力都不小。

SE(System Engineer,相当于现在大多数公司的产品经理)负责从市场部门等地方承接需求,然后做“系统性设计”,这个系统多数指的是业务系统,也指有时候软件系统。之前我在一篇文

[……]阅读全文

一道随机数题目的求解

random 有这样一道算法题:

给定一个能够生成均匀1~5随机枚举数的函数,请设计一个能够生成均匀1~7随机枚举数的函数。

就是说,有一个生成随机数的函数rand5,可能返回1、2、3、4、5这5个枚举值,其中每个值被返回的概率都是严格的1/5,现在需要设计一个类似的随机数函数rand7,可能返回1、2、3、4、5、6、7这几个枚举值,每个值被返回的概率都是严格的1/7。

先掩卷思考,脑海中浮现的思路包括:

  • 调用rand5的结果除以5,再乘以7,这样的结果范围为7/5~7,并非所希望的结果;
  • 反复调用rand5函数7次,结果再除以5,这样的结果范围为也为7/5 ~ 7,并非所

[……]阅读全文

Java多线程程序的测试

work

这个问题最初来自于一封公司内部的话题探讨邮件,再加上了一些我的理解。

首先,需要明确的是,用Java通常构建多线程安全的程序“非常”困难,如果还没有体会到“非常”的话,阅读《Java Concurrency in Practice》(中文名叫做《Java并发编程实战》,在我的书单里面,我认为它基本是最好的系统介绍Java并发的书了)可能可以改变你的看法。

多线程的基础

基础是王道。对于任何一门语言都是如此,有的基础部分是和语言无关的,也有一部分是和Java语言相关的。这里我不过多展开,但是我想提一提对于JSR规范的理解。通常我们认为Java是一门啰嗦、冗长,容易使用,而且不容易造成破坏的语言

[……]阅读全文

EasyMock、EasyMock Class Extension和PowerMock

EasyMock大多数同事都用JUnit做单元测试,JUnit中对方法调用打桩(Mock)是一个麻烦事。好在EasyMock可以帮我们完成。

比如有这样一个简单的User类:

public class User {  
    private String id;  
    private String name;  
        //get、set方法略  
}  

相应的,有这样一个被测类UserService:

public class UserService {  
    private UserDAO userDAO;  
  
    public void setU

[……]阅读全文

功能、模块质量和非功能性测试

prj 但凡面向终端用户的产品,产品做大了以后,几乎都要涉及到基线能力和定制能力的划分。任何一个优秀的产品,都要经历从相对无序到有序的逐步成熟的过程。产品的发展总是要经历不断的阵痛,可是时间长了,我还是总免不了思考:好吧,就算产品最初匆忙和艰辛的时期已经过去,就算现在基线能力的建设已经迈入正轨,可是为什么我们的直接客户,定制团队还是那么辛苦?

 

有多少功能是真正值得去完成、真正被用户所需要的?

据一位定制的兄弟说,其实这个比例只有8%,我相信数据也许是不准确的,但不管数据的有效性有多少,至少,大家都在问,产品的定位是一个厚实的门户,有太多的功能需要完成,可是真正给客户使

[……]阅读全文

back to top