原文: http://blog.csdn.net/csfreebird/article/details/7561189

这篇文章介绍的经验心得不错,故转载之。

三年前,我写了 JavaWeb项目管理得失谈,文章地址:http://blog.csdn.net/sheismylife/article/details/4154325

这三年,自己经历了SOHO,北京互联网公司和现在的ESRI研发中心,技术能力又有了很大的提升,管理上也历练了不少。

重新阅读我过去的文章,又有了新的认识。

过去那篇文章总结了项目结果不如预期的几个主要原因:只挑选其中几个再说明。

1)程序员技术能力弱
问题出在公司层面,小的外包公司招不到优秀的程序员。如果人不行,无论多强的技术领导和流程都没用。

现在我招聘首要看人的智商,如果不聪明,坚决不会要。有那功夫为了一点技术细节解释半天还弄不明白,我不如自己做了。

招聘,说白了就是花钱雇佣聪明的脑袋。所以没有经济实力的小公司,我再也不会去那里带队伍了。自虐啊!

 

2)对JSF技术不熟悉

3)JSF框架有Bug,并且可用tag较少,不足以应付项目,还需要额外开发自定义tag

JSF1.x版本升级到JSF2.x后,我又深入运用了PrimeFaces。现在已经彻底废弃JSF,这是一个不中用的东西。为什么所有页面上的html标记,css和JavaScript都要通过后端的JSF对象来渲染,如今的web页面设计如此的复杂,这种工作根本就不应该用Java语言来表达。即便是PrimeFaces,也不过就是将很多javascript库包装一下,好了,你这么一封装,我要定制一下都要费老大力气,而且很多人都搞不定一些莫名其妙的bug.

如果你做web开发,无论是Java,C#,C++,PHP或者其他,掌握JavaScript和CSS都是必要的,通过JSF渲染只会把事情搞复杂,增加成本。而且运行起来慢的像老牛,Google也吃过这个亏,然后废弃不用了。

后端只要能够基本的渲染初始页面,就行了,别管不该自己管的事情。其他的后端应该提供REST API来处理Ajax请求。我现在用C++和Java做后端渲染,都感觉很好。因为页面上的事情,我切换到更合适的语言JavaScript和CSS上去了。

JSF还是比较适合日本人的企业级开发,那种应用是如果你用了彩色他都跟你急,都是最原始的html标记。外包公司比较合适。肯定不适合互联网企业。

 

6)管理人员对代码审查把关较弱

现在自己的眼界开阔多了。通过Scrum管理任务和进度,通过Review board管理代码评审,通过持续集成实现尽早集成和冒烟测试。通过自动测试来实现压力测试。产品的质量是通过严密的过程控制来保证的。有了过程控制,人就可以尽情的发挥自己的创造力。

不过这种玩法也只能在好公司来做,构建过程控制系统是需要成本的,而且要持续的演化,同时必须有很熟悉各种开源产品,能够将系统架构起来的高手。很多挣扎在温饱线上的公司难以做到这点。

【转】三年后再反思我的" Java Web项目管理得失谈"的更多相关文章

  1. java web Cookie浅谈

    1.会话控制 > Http协议 Http协议两个缺陷: 1.HTTP协议是纯文本的 2.HTTP协议是无状态的 服务器不能简单的通过HTTP协议来区分多次请求是否发自同一个用户 虽然通过HTTP ...

  2. Java EE 学习(2):使用 IDEA 开发 最简java web

    参考:http://www.cnblogs.com/carsonzhu/p/5468223.html 使用IntelliJ IDEA开发java web 前言:由于本人以前简略的学习过 java 语言 ...

  3. Java Web项目实战第1篇之环境搭建

    写在前面的话 从今天开始一个Java Web实战项目,参考自 http://blog.csdn.net/eson_15/article/details/51277324 这个博客(非常感谢博主的分享精 ...

  4. 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用

    准备 JDK       (配置JDK_HOME\bin   和 CLASSPATH)   注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本)     对于我们新手来说,JD ...

  5. [经验] Java Web 项目怎么部署到 Linux 系统上

    废话少说, 直奔主题 第一步: 将 web 项目打成 war 包 1: 打开项目的 pom.xml 文件 如果是迭代后的项目, 记得修改项目的版本号, 这里我的是第二版所有就把 1 改成了 2 2: ...

  6. Java Web项目在Mac系统上启动时提示nodename nor servname provided的解决办法

    今天在Mac系统上启动Java Web项目的时候,提示了Java.net.UnknownHostException: yangxiaomindeMacBook-Pro.local nodename n ...

  7. Web/Java Web项目如何模块化?没有正文,别点

    事情是这样的,两三年前做了几个Java Web项目,由于薪资原因,原主程都离开了. 由于公司不规范,也没有留下正规的开发文档,只有一个源程序在手里.后面的很多系统维护都很被动. 领导就觉得说,这样不好 ...

  8. 重拾Java Web应用的基础体系结构

    目录 一.背景 二.Web应用 2.1 HTML 2.2 HTTP 2.3 URL 2.4 Servlet 2.4.1 编写第一个Servlet程序 2.5 JSP 2.6 容器 2.7 URL映射到 ...

  9. .net基础学java系列(三)徘徊反思

    .net基础学java系列(三)徘徊反思 上一篇文章:.net基础学java系列(二)IDE 之 插件 这两天晚上看完了IDEA的教学视频:https://edu.51cto.com/course/1 ...

随机推荐

  1. yii的criteria的用法

    Yii的Active Recorder包装了很多. 特别是把SQL中 把where,order,limit,IN/not IN,like等常用短句都包含进CDbCriteria这个类中去,这样整个代码 ...

  2. Appium + python - online-install-apk

    import osfrom appium import webdriver# 安装app,为了方便,把app放到当前脚本同一目录os.system("adb install sina.apk ...

  3. 一个能让cin和scanf 一样快的方法:

    cin慢是有原因的,其实默认的时候,cin与stdin总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输出顺序错乱.正因为这个兼容性的 ...

  4. Jenkins构建项目,JAVA_HOME is not defined correctly

    好久都没有更新了,由于职位调整,开始捣鼓持续集成的东西了.jenkins的基本安装配置网上有很多教程,不用多讲了,就记录下我在使用过程中遇到的一些问题.话说这个jenkins环境以及安装好了有一段时间 ...

  5. OpenCV:OpenCV目标检测Boost方法训练

    在古老的CNN方法出现以后,并不能适用于图像中目标检测.20世纪60年代,Hubel和Wiesel( 百度百科 )在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈 ...

  6. SLAM:(编译ORB)fatal error LNK1181: 无法打开输入文件“libboost_mpi-vc110-mt-1_57.lib”

    对于使用MD版本编译的ORB_SLAM,会用到MPI版本的Boost,需要自己编译,比较麻烦. 因此使用MT版本进行生成,暂时无法完成. 工程配置 发现添加库文件使用了:从父级或项目默认继承,默认包含 ...

  7. 【sqli-labs】 less5 GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)

    双注入查询可以查看这两篇介绍 https://www.2cto.com/article/201302/190763.html https://www.2cto.com/article/201303/1 ...

  8. 浅谈Overload和Override的区别

    如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding).如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Over ...

  9. Tomcat Eclipse Debug出现异常

    1.可能是java类没有及时更新成class文件2.本地程序没有同步到Tommcat服务器里面3.Servlet类里面加了版本号private static final long serialVers ...

  10. List分组的两种方式

    java8之前List分组 假设有个student类,有id.name.score属性,list集合中存放所有学生信息,现在要根据学生姓名进行分组. public Map<String, Lis ...