忙与盲 – 写在二月底(其一)

春节前后,本应该是项目闲暇的时间。结果1月中旬的部门调整,整个节奏全被打乱了。

N项目的死掉

N项目的确值得我去写一篇文字来悼念,先不来评价这个项目成功与否。它是我2011年底加入这家公司以来一直在做的项目,而是是仅有的一个,所以它的好坏就是我的荣辱。

N项目首先值得肯定的地方是它是一个伟大的构想,没有vision的项目是没有前途的。(对公司来说也是,对人呢?)第二个值得赞许的地方,它是部门Director自己喜欢和力推的项目。所以和其他所有项目一样,刚开始的时候大家都积极乐观对它抱有极大希望。

那么这个衔着金钥匙出生的项目怎么样呢?来说说它的先天不足吧。

第一,项目的范围大。没有哪个老板不喜欢“大”的项目,项目(范围)大才可能入得了更高层老板的法眼,才有可能争取到更多的预算,更多的resource。这个大家都懂。可是懂软件的人应该都知道,一个有生命力的项目是在真正需求的土壤上生长出来的。

第二,涉及多个团队。跨越团队的合作,难。跨越太平洋的团队合作,难上加难。于是,各种开会,各种拖延。12年初还在美国开了一周的峰会,烧钱啊。为什么有的团队不太合作呢?原因有几个。一是因为“懒得变化”,这里没有批评的意思。其实每个人都不是那么喜欢变化,尤其是现状还过得去的时候;二是因为工作忙,自己的事情都忙不过来哪里会有意愿一起来推动创新,搞这种高大上的项目呢;三是因为觉得时间还早着呢。因为是“大”项目,规划的时间长达N年(大老板可以N年都拿到经费,何乐不为?)。下边有人觉得反正还早呢,于是拖延症变成恐怖的拖延症。

第三,没有一个强力的领袖。跨团队的项目,对领袖要求太高了。而悲催的情况是,N项目并没有一个官方的领袖,没有能够拍板的人。各个团队工作就靠自觉啦。我记得开始的时候,每次开会有很多人参加。后来有人找各种借口不参加了。再后来就直接消失了,连借口都不用了。很多人并不清楚自己的职责,开会没他什么事,会后也没有什么事需要他负责,这样当然大家都散漫稀松了。开始的时候,大家希望美国人B先生来领导这个项目,因为B先生已经工作了20多年,对业务非常熟悉。随着项目的推进,开发团队越来越讨厌B先生,因为B先生真的不懂软件开发,却总是对开发团队指手划脚,甚至于“指导”资深程序员做数据库设计。这几个程序员都有着10年的软件开发经验,一个外行人来指导数据库设计本质上就是侮辱。合作相当的不顺利,许多努力都无疾而终。Director意识到这个问题的时候已经过去了一年了,特意跑到中国的开发团队这里来安抚,承诺自己会亲自担任project lead。对于这样的承诺,敝人只能在心里冷笑了。Director怎么可能像项目经理一样整天盯着项目里的大事小事呢,时间精力都不允许啊。结果可想而知,Director先生只参加了第一周的周会,再也没有出现。后来他委派另一个同事Z先生来掌舵,依然无法让N项目驶上正轨。

第四,开发流程的问题。Z先生其实一直都在团队里边,而且他是清华毕业的华人,所以中国团队和他的沟通很频繁,效果也不错。但是Z先生一样犯了第一点所说的错误,N项目唯一的架构性设计是他做的。他将N项目中的数据访问层独立出来,成立B项目组。这样做分层本省没有大问题,可是小问题慢慢发展成大问题。一个是沟通的问题,B项目只有两个人做开发,一个在美国一个在中国,沟通也不太好。B项目和N项目组的沟通协调也不好,因为B项目梦想着做一个大而全的数据访问层,服务公司的多个内部项目。结果N项目需要得到B项目的支持的时候总是被各种理由推脱或拖延下来。N项目没办法,自己的特定数据总得找地方存储下来吧,于是自己建自己的数据库。Z先生对N项目组提出的问题,也没有合适的解答。对于建议也不予采纳,总是话里话外说N项目组成员太年轻,考虑的不周全。N项目成员是敏捷的粉丝,B项目走的是瀑布模型的路子。大家各自抱着自己的“哲学”不放,没办法匹配上。B项目和D项目的第一次整合,很少很少的几个API,居然花了一个多月,真让人泄气。到了13年的下半年,Z先生才同意将两个项目组合并起来一起跑Scrum。当然,这是不得已而为之啦。看看下一点你就知道了。

第五,资源的问题。N项目虽然有很大的vision, 却没有那么多的resource。开始的时候干活的只有中国的1.5个人。后来有了3.5个resource, 前台,服务层,后台数据库分工很明确,大家做的还是蛮开心的。可惜好景不长,这样的快乐时光跑了4个Sprint之后,12年年底公司因为效益问题进行大裁员,一个小同事被裁了。N项目组还需要支援其他的项目,所以resource只剩下2个了。要命的是QA也被裁掉了,本身那个QA就是像雇佣军一样的,要测试的时候才找人家老板去要的。而且QA经常换人,每次都要重新培训。开发这边要自己做更多测试,所以很不happy。裁员之后,我呼吁B项目组合并进来,进行敏捷开发,集中火力,做点实际的靠谱的事情。一个理由是:再不这样做就来不及了,如果还是瀑布模型走下去,等你做好需求分析,做好顶层设计,再来一次裁员,你就颗粒无收了。再漂亮的分析和设计,定屁用啊。可是Z先生没有采纳。一年之后的部门重组还是不可避免地将N项目彻底打垮,只留下一个人维护,其他的人都换到另外的部门了。

我不知道参与项目的同事(D, H, QA, DEV等等)以及一些关注者,除了我之外还有谁会去分析这里边的原因。也许时至今日,我的老板还是不认为项目失败吧。项目结果再差,只要有理由就好了,但求无过矣。可是千万不要以为项目的halt是因为部门重组造成的。

===========================================================================
无意吐槽,只为记录。独立博客http://brucejia.net


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
### 回答1: 这取决于您要实现什么样的功能。但是,下面是一个简单的H5盒商城代码示例:<!DOCTYPE html> <html> <head> <title>H5 Blind Box Mall</title> </head> <body> <h1>H5 Blind Box Mall</h1> <div class="container"> <div class="row"> <div class="item-container"> <div class="item"> <h3>Blind Box Item 1</h3> <p>Price: $25</p> <button>Purchase Now</button> </div> </div> <div class="item-container"> <div class="item"> <h3>Blind Box Item 2</h3> <p>Price: $30</p> <button>Purchase Now</button> </div> </div> <div class="item-container"> <div class="item"> <h3>Blind Box Item 3</h3> <p>Price: $35</p> <button>Purchase Now</button> </div> </div> </div> </div> </body> </html> ### 回答2: 盒商城的H5代码可以使用HTML、CSS和JavaScript来实现。 首先,我们需要创建一个HTML文件。在文件中,我们可以定义页面的结构和布局,如页面的标题、导航栏、内容区域等。可以使用HTML标签来创建这些元素。 接下来,我们使用CSS来设计网页的样式。可以使用CSS选择器来选择需要样式化的元素,并设置相应的样式,如背景颜色、字体大小、边框等。 然后,我们使用JavaScript来实现网页的交互功能。例如,当用户点击某个盒商品时,可以弹出商品的详细信息;用户选择购买盒时,可以添加商品到购物车等。 在JavaScript中,可以使用DOM操作来获取和修改HTML元素的内容和属性。可以使用事件处理函数来监听用户的操作,如点击事件、鼠标移动事件等。 当用户完成购物时,我们可以通过连接到后台服务器的API来实现支付功能。可以使用Ajax技术来发送异步请求,获取支付结果并更新页面上的信息。 在代码实现中,我们还可以使用一些框架和库来加快开发速度。例如,可以使用jQuery来简化DOM操作,使用Bootstrap来实现响应式布局等。 最后,需要将代码部署到服务器上,让用户可以通过浏览器访问到网页。可以选择使用云服务器、虚拟主机或者CDN服务等。 总的来说,编一个H5盒商城的代码需要使用HTML、CSS和JavaScript来创建网页的结构、样式和交互功能,并结合后台API实现支付功能,最后将代码部署到服务器上。 ### 回答3: HTML5盒商城代码主要包括HTML、CSS和JavaScript的代码。以下是一个简单的示例: HTML部分: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>H5盒商城</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="container"> <h1>盒商城</h1> <div class="products"> <div class="product"> <img src="product1.png" alt="产品1"> <h2>盒1</h2> <p>价格:100元</p> <button class="buy-btn">购买</button> </div> <div class="product"> <img src="product2.png" alt="产品2"> <h2>盒2</h2> <p>价格:200元</p> <button class="buy-btn">购买</button> </div> </div> </div> <script src="script.js"></script> </body> </html> ``` CSS部分(style.css): ```css .container { max-width: 800px; margin: 0 auto; padding: 20px; } .products { display: flex; flex-wrap: wrap; } .product { width: 200px; margin: 10px; padding: 10px; text-align: center; border: 1px solid #ccc; } .product img { width: 100%; max-height: 200px; object-fit: cover; } .buy-btn { width: 100%; margin-top: 10px; } ``` JavaScript部分(script.js): ```javascript const buyBtns = document.querySelectorAll('.buy-btn'); buyBtns.forEach(btn => { btn.addEventListener('click', () => { // 这里可以编点击购买按钮后的逻辑,比如发送请求购买盒或展示购买成功的提示信息等 console.log('购买按钮被点击'); }); }); ``` 以上代码实现了一个简单的H5盒商城页面,包括两个盒产品的展示、价格和购买按钮。点击购买按钮后,默认在控制台输出"购买按钮被点击"。你可以根据实际需求来修改和完善代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruce Jia(上海)

熬夜码字换酒钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值