2013-04-18

【转】浅谈:国内软件公司为何无法做大做强?

浅谈:国内软件公司为何无法做大做强?

纵览,国内比较大的软件公司(以下统一简称"国软"),清一色都是做政府项目的(他们能做大的原因我就不用说了吧),真正能做大的 国软又有几家呢?这是为什么呢?
今天风吹就给大家简单分析下:

 

1."作坊"式管理
  "作坊"往往是效率最高的,国软几乎都是从作坊走过来的,
   但把作坊式的管理模式套用到一个不断壮大的公司中显然是不行的.
   组织架构到达一定程度后就必然要进行分工的细化,依靠作坊式的"暴力开发"是行不通的.

 

2."法制社会"
   上班必须打卡,迟到要扣钱,还一次比一次多,加班没有加班费,反正算下来就是,只有扣钱的项目,没有加钱的项目.
   比起外企,人家上班不打卡,迟到不扣钱,加班有加班费,这样宽松点的环境不好吗?
 
3.自生自灭
   国软一般没有师徒制,有的话也只是形式上的,公司基本没人管你,你也不用去管别人,
   新进的员工,不管会不会,先丢个东西给你做,自己研究,不懂的google去.
   这也是为什么国软喜欢招有经验的人,因为没经验的人熬不住,跑了几个以后,国软就不招了.

 

4.销售-开发-维护脱节
   这点是非常严重的,会直接导致项目流产的.国软的典型的做法是,销售为了业绩,在没有调研的情况下就签了合同(这里主要是指项目型的,产品型的一般可以控 制),而且合同的范围也非常模糊,可大可小,接下来就是调研人员上场,调研后发现,10w块钱的合同,调研出来了100w的需求,接 下来就是和客户扯皮, 最后直接导致项目流产,甚至打上官司.项目或产品上线后,维护人员对系统不了解(一方面是没有文档,另外一方面维护人员一般没有参与 到开发中),接下来往 往就会发生两种情况:

   a.维护人员在不了解系统的情况下擅自修改,结果导致系统越改问题越多.

   b.维护人员一不做二不休,所有客户反馈的问题全部打回给开发人员,于是开发人员就生不如死,在做别的项目的同时还要维护以前的项目,结果就是导致几个项 目都失败.

 

5.缺乏规划
   今天要用这个,明天想用那个(笔者就经历了公司在半年的时间内对框架进行了两次大的变动,导致开发人员都必须重新学习框架)
   产品也接,项目也接,大的也接,小的也接.

   今天领导说往左走,明天说往右走,也不能怪领导,他也没经验,我们就是他的DEMO.
   公司没有一个明确的目标,要做成什么样,只是一味的提出做大做强,但是没有规划出如何做大做强.(和我的标题一样哦)

 

6.三无-无需求,无设计,无测试.
   a.没有文档是国软的通病,曾几何时,产品经理丢过来的那一句话:"喂,**,给我做一个**模块来",然后开发人员就开始埋头苦写了.
   b.当然如果你天资聪慧,可以轻易理解出产品经理的意思,那有没有设计都无所谓了,但是,当有一天别人要维护你的程序的时候问题就出现了,
   没有文档,代码又那么天马行空,怎么维护?改了这个地方,又影响了那个地方...
   c.其实程序员都懂得测试的意义,可以工时安排的那么紧,哪来的时间测试?测试又没有算工时.所以几乎所有的程序员的做法就是,直接丢给用户测试
   这时候有人肯定要问:那项目经理呢?他不是可以测试吗?请记住这是国软,刚才写代码的那个人就是项目经理,还是售前,还是设计 人员,还是维护,还是...
   归结还是成本问题,在外资软件公司中,做文档的工时是比做开发的工时更多的,国软为了节省成本,这块当然要CUT掉了.不必去追去文档有多么详细多么美 观,需要做的就是找到一个平衡点,一份适合自己的文档.

 

7.员工都是"十项全能"
  在国软里面的员工各个都是十项全能(笔者就是一个鲜明的例子,从系统调研分析设计,到进度管理,开发,测试,验收,实施,维护,甚至拉给客户拉网线都需要 我去.)
  直接导致的结果就是这些员工每过多久就直接出来自己开公司了...嘿嘿又一家作坊诞生了...
  这样做对员工个人其实是有好处的,但是对于企业本上来说是没有好处的,并不是说员工成立了作坊,成为了你的竞争对手,而是让员工各个都是十项全能的结果就 是
  a.员工都是"十项全不能".
  b.员工一旦离职,他手头的项目必定流产.
  c.对公司的发展是不利的(细化分工).

 

8.莫不关心
  老板并不知道员工在做什么,员工也不知道老板在做什么.
  上级很少去关心下级的工作,更别说去关心下级的生活,一个东西丢给你,一个月后交差,中间不管你任何事情,交不了差就唯你是问.
  下级也不知道能为上级分担什么,只有等着上级分配任务.
  甚至还有些老板都不不知道员工的名字,在这样的国软的,每个人都是孤立的,又怎么能做大做强呢?

 

9.企业文化
  所谓十年树木,百年树人.
  国软的企业文化表面功夫算是做的很好的了,什么"为客户创造价值","做最好的行业解决方案","软件公司的最大资源就是人才"等等,要多华丽有多华丽,
  重复体现了"口号文化".真正做到企业文化又有多少呢?有多少仅仅是为了做给客户看的呢?

 

10.盲目跟风
  很多国软看到人家外企软件公司最近在搞什么推进活动,就跟风,效仿外企做,可是无法领悟精髓,纯粹只是在模仿.
  (外企集体笑:"一直被模仿,从未被超越")
  做完了也不知道这么做的意义,劳民伤财.

 

11.缺乏"执行力"
  国软的通病,就是"执行力",国软的学习劲头很足,今天提出要完善测试标准,明天提出要每周写工作报告,可是又有哪些东西能真正的去执行呢?
  导致这个问题的主要原因有两个:

  a.提出来的东西到底有没必要做,还是只是应付领导走个过场.
  b.谁来跟踪这些东西?员工写了工作报告,领导没有去查看,去反馈,员工觉得写的也没意义,自然不会继续执行下去.

 

12.管理混乱
    没有划分清楚员工的归属组织,员工并不明确他的上级领导是谁,导致有的员工处于游离状态,有的是员工又是多个领导,不懂要听谁的,有些人忙的要死,有些人 又闲的要命,最后搞的最痛苦的就是员工,导致员工离职.

 

13.缺乏团队精神
   为什么会缺乏团队精神呢?并不是国软没有这方面的概念,国软也很希望培养员工的团队观念和精神,
   无奈因为国软,一般都是一个人负责一个或者多个项目,连团队都没有,何来的团队精神?

 

14.无法做到补足
   一个项目一旦中途有人辞职,这个项目就会流产.
   一个员工一旦辞职,会有N个项目没人维护.
   A组的员工无法胜任B组的工作,归根结底就是组织上根本没有考虑过组织变动对项目的影响,没有提前培养人员.

 

15.一成不变和随心所欲
   有两类人一种是把前辈的东西COPY过来,不作任何修改,因为他深信,前辈的一定是对的,
   还有一类是不管前人怎么做的,一律不要,全凭自己的"经验",随心所欲,天马行空的进行自主研发,

   造成的结果就是错的还是错的,乱的更乱了.

 

16.人才育成
   成本,还是成本,培养一个人要多少成本?
   这就是国软做不大的原因,永远只能停留在"作坊"的原因.

 

17.向心力.
     老板做的是事业,员工做的是事情,这是国软员工的一致观点.

 

18.恶性循环
     a.人员力量不足 -> 接不了项目 -> 收入少 -> 人员流失.
     b.人员力量不足 -> 强行接项目 -> 亏本    -> 破产.

 

最后我想说一句的是:成也国软,败也国软.

说的不对的地方请大家指出,或者补充下没说到的地方.

P.s:没想到我在博客园的第一篇帖子能能收到这么多评论,我并不是在抱怨,而是提出现在企业中有存在这些问题,目的是想给大家一 些提醒和帮助,让大家能够更好的发现问题,认清问题,才能去改善这些问题.

     有人问说有什么解决方法,其实我并没有希望有什么方法能够彻底解决这些问题,这里的每一个问题都深入下去都是很大很复杂的问题,只能考虑如何一步一步的去 改善和减少这些问题,这也是一个企业壮大的必经之路.
     要想做好做大一个企业固然是十分困难的,需要的是管理层的意识和员工的响应.管理层多为员工考虑一点,员工多为管理层分担一些.一个企业有了向心力,大家 都是在做事业的话,又有什么事情是做不成的呢?


2012-11-29

【转】VirtualBox 4.0 收缩 vdi镜像文件

VirtualBox guest os用久了vdi文件就会越来越大,就算在guest os中删除了一些文件,vdi也不会变小。

如果guest os 是windows:

1、先在guest os上运行磁盘碎片管理器,将各个磁盘的磁盘碎片减少;

2、下载sdelete(http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx);

3、运行sdelete -c -z ;

4、关闭guest os 和 VirtualBox

5、在host os上运行VBoxManage modifyhd --compact yourImage.vdi

如果guest os 是Linux:

1、进入su

2、$ dd if=/dev/zero of=test.file

3、$ rm test.file

4、关闭guest os 和 VirtualBox

5、在host os上 运行 $ VBoxManage modifyhd --compact yourImage.vdi

这 样在guest上看到占用的空间就和host上看到的空间就一样了。

作业环境:host os :Scientific Linux 6.1(X64)

                 guest os:Windows xp ,Scientific Linux 6.1(X64)

2012-11-23

Android各个版本的代号

Android作业系统曾有两个内部版本,分别是原子小金刚(Astro)和发条机器人 (Bender),在这两个版本之后,Google为了避免商标问题,将Android作业系统的代号由机器人系列转变为了 现在的甜点系列。而现时Android系统以差不多每半年一次的步伐进行升级,比如1.5版叫做Cupcake(纸杯蛋 糕)、1.6版为Donut(甜甜圈)、2.0/2.1版为éclair(闪电泡芙,一种法式奶油夹心甜点)、2.2版为 Froyo(冻酸奶)、2.3版为Gingerbread(姜饼)、3.0版为Honeycomb(蜂窝)、4.0版为 IceCreamSandwich(冰淇淋三明治)及4.1/4.2版称为JellyBean(里根糖)。这些是以A、B、 C、D、E、F、G、H、I、J字头顺序来排列的。Donut将把社交网络功能作为升级重点,在"智能型手机的各种体验中" 都增加社交网络元素。

版本名稱 API level 用戶分佈
1.5 Cup Cake 紙杯蛋糕 3 0.1%
1.6 Donut 甜甜圈 4 0.3%
2.1 Eclair 閃電泡芙 7 3.1%
2.2 Froyo 凍酸奶 8 12%
2.3.x Ginger Bread 薑餅人 9-10 54.2%
3.x.x Honey Comb 蜂巢 11-13 1.8%
4.0.x Ice Cream Sandwich 冰淇淋三明治 14-15 25.8%
4.1.x Jelly Bean 雷根糖 16 2.7%
4.2 Jelly Bean 雷根糖 17

2012-10-24

Thinkpad X60待机后自动唤醒的解决办法

解决方法,如下:

在命令行下可以使用如下命令来查看相关设备

命令行中输入:
powercfg /devicequery wake_programmable
显示可以唤醒的设备

输入:
powercfg -devicequery wake_armed
显示已经设置为可以唤醒的设备

解决:
在设备管理器的设备中选择设备,再选择高级标签页,取消"允许这台设备使计算机脱离待机状态"的选择。

2012-08-19

tomcat 7在comodo firewall环境下执行shutdown.bat报错

配置tomcat 7集群时突然发现shutdown.bat执行后报错。
tomcat 7主dos窗口报如下错误,每次执行
shutdown.bat就报:
StandardServer.await: Invalid command 'S' received
StandardServer.await: Invalid command 'SH' received
StandardServer.await: Invalid command 'SHU' received
之类的错误信息。如下图:


将相同的程序部署在Linux下,执行shutdown.sh却无此类错误。

查tomcat源码是需要发送SHUTDOWN命令才能结束,似乎在Window平台下被某种原因截断了SHUTDOWN字符串。
通过telnet localhost 8005,直接发送SHUTDOWN命令,tomcat能正常停止。
经瞎摆弄,发现是由于开启comodo firewall导致,禁用comodo firewall,shutdown.bat则能正常发送SHUTDOWN字符串。






2012-06-20

【转】Linux Shell删除两个文件相同部分

Linux Shell删除两个文件相同部分

因为在面试中遇到一个这样的问题,当时模模糊糊的,没有很确定的回答出来,后来上网查了一下结果,这里总结一下。

首先描述一下这个问题:比如两个文件file1和file2,删除两个文件中共同的部分,留下两个文件中独自有的部分。在网上找到一篇解决 的答案,地址在这里http://hi.baidu.com/robertoyuan/blog/item/559483c4946ed5a78226acac.html。 这里提到三种方法,但是没有给具体的解释。

 

  1. 方法一:使用grep
grep -v -f file1 file2 && grep -v -f file2 file1 

grep命令的详细使用方法,可以参考man,这里有一个简单实用的介绍:http://linux.ccidnet.com/art/3067/20070313/1035613_1.html。 在方法一中,用到了两个参数。参数-v,表示invert match,即反向匹配,输出没有匹配上的项。参数-f,表示从文件中读取匹配模板(pattern)。方法一中的前一部分,在文件file1中匹配模 板,来反向匹配文件file2中的内容,即输出文件file2中,在file1中没有的内容。后面的一部分同理可得,输出文件file1中, 在file2 中没有的内容。

  1. 方法二:实用comm 
comm -3 file1 file2

这个方法看起来最简单。命令comm的功能就是,逐行比较两个排好序的文件,默认输出有三列:只在file1中有的行、只在file2中有 的行、在 file1和file2中共有的行。有参数-1 -2 -3,分别来抑制输出对应的列。例如在我们的方法二中,实用-3参数,不输出file1和file2中共有的部分。即能达到我们本文的目的。
但是注意到,comm比较排好序的两个文件,comm在处理文件的时候,首先要查看文件是否有序,例如file1和file2的内容如下:

$cat file1
line1
line2
line3 

$cat file2
line0
line1
line3
line2

调用前面方法二的命令的时候,就会提示file2文件时无序的,输出的结果如下:

$ comm -3 file1 file2
        line0
line2
comm: file 
2 is not in sorted order
        line2

如果使用--nocheck-order参数,不进行有序性检测,结果如下:

$ comm -3 --nocheck-order file1 file2

        line0
line2

        line2

 从这个结果中我们可以看到,这还是不是我们真正想要的结果。这里可体现comm的另一个特征,就是逐行比较。它是对file1和 file2进行逐行往下的比较,检测是否相同。所以,在用comm的时候,要根据具体的情况进行分析了。 

  1. 方法三:使用awk
awk '{print NR, $0}' file1 file2 |sort -k2|uniq -u -f 1|sort -k1|awk '{print $2}'
或者:
awk '{
print $0}' file1 file2 |sort|uniq -u

awk命令的使用,听牛人说可谓博大精深,我也没有太搞清楚。这里只是使用了一些简单的功能。下面以我自己的理解来解释一下上面的 shell代码。 awk就是文本的解释器和过滤器。awk把每一行看成是一个记录(record),每个记录使用分隔符(默认是空格)把每条记录分成若干域。 awk内置参 数$0表示整行,$1、$2...分别表示各域,内置参数NR,表示记录的计数,awk '{print NR, $0}' file1 file2 表示依次读取file1 file2,打印出每行,并且在前面添加行号。

 命令sort,就是对行进行排序,参数-k表示根据各行的第几个参数关键字开进行排序,这里的-k2表示根据第二个关键字开始进行排序。

命令uniq,进行报告或者忽略重复的行,参数-u,表示只是打印出唯一的行(unique lines),-f表示忽略的每行的前n个域的比较。

 

【转】Linux系统下比较两个文件并删除相同部分

Linux系统下比较两个文件并删除相同部分

方法一:

  comm -23 file1 file2

  方法二:

  grep -v -f file1 file2

  /*注::此法在对比数字时候比较凑效果,文本对比不建议使用*/

  方法三:

  awk '{print NR,$0}' file1 file2 |sort -k2|uniq -u -f 1|sort -k1|awk '{print $2}'

  或者:

  awk '{print $0}' file1 file2 |sort|uniq -u