关于项目技术选型的思考

2014年12月加入了一个新的项目,这是一个游戏的辅助项目,其实可以认为是一个典型的互联网产品。这个综合使用了c/s和b/s两种结构。因为游戏相关的项目采用c/s是自然而然的事情,同时运用b/s结构就值得玩味了。在接手该项目b/s相关部份工作的过程中促使我开始认真思考关于一个技术团队在开发一个产品的过程中应该如何选择技术和工具的问题。

这个问题完全没有标准答案,但实际上在纷乱无章的表象背后其实还是有据可循的。首先从程度员的角度来看。毎个人其实都有尝试新技术的冲动(我所说的新技术包括新产生的技术和已经久负盛名但却从来没有机会使用的技术),对程序员来说掌握新技术就是保持竞争力,同时还容易得到认可和赏识。所以不论是开始新的项目还是重构维护老项目,我们都要面对新技术的诱惑。

那么在面对新技术时,我主张的态度如下:

## 对于新产生的技术应该持非常谨慎的态度

新产生的技术往往有非常酷的feather, 但往往存在以下几种坑:

* 存在大量未知的BUG

* 可能存在一些没有考虑到的设计缺陷

* 版本变化频繁,而且API不兼容

* 缺少文档和说明

* 中断开发和维护

如果实在要应用这些技术应该考虑使用桥接模式将它的接口封装起来,以应对接口变化,甚至是不得以的整体替换。

## 对于行业内已经广泛使用的成熟技术也应该量力而为

对于已经较成熟但没有应用过的技术来说,主要的风险在于团队成员的学习速度。成熟的技术往往有一整套相关的配置和一些背景知识需要了解。在熟悉这些内容之前如果碰到问题的话,解决起来的时间往往很难掌握。所以面对这些相对比较成熟的技术时除了它的feather,性能之外,还应该将它的文档,资料的丰富程度考虑进来。万一发生意外的情况能否快速的找到解决方案。

我听说过的一个真实案例:由于不了解如何配置linux服务的最大连接数,导致nginx服务器无法应对几千个并发请求最终导致整个系统的吞吐量下降。技术人员当时只好暂时放弃linux+nginx的方案临时转向windows+apache。

## 新技术(知识)应该在团队内传播开来

如果经过权衡,已经决定要引入一些新技术到项目中来。那么接下来就应该要将这些新知识在团队内传播开来。首先前期调研的人在整理和分享的过程中能进一步加深对新技术的认识。其他的团队成员在学习的过程中也能从不同的角度完善整个团队对这一技术的掌握。最重要的是,如果团队中发生人事变动时,这个新技术不会成为交接后的隐在风险。

来自为知笔记(Wiz)

时间: 2024-08-29 01:07:37

关于项目技术选型的思考的相关文章

(转).net项目技术选型总结

原文作者:mcgrady 原文地址:.net项目技术选型总结 做.net开发已经几年了,也参与开发了很多大大小小的项目,所以现在希望总结出一套开发.net项目的常用技术,也为以后做项目技术选型的时候作为参考. 数据库 小型项目:SQLite 中大型项目:MS SQL Server(国内) / Mysql(国外) 数据访问技术 SqlHelper(ADO.NET) 轻型ORM:Dapper / PetaPoco 大型ORM:EF / NHibernet 服务端技术 ASP.NET MVC WCF

关于团体项目技术选型的补充

上次提到技术选型的框架,我们觉得还有些不足,所以进行了些许补充.关于中间层框架的看法:一般的程序员可能都不习惯用中间层的框架,所以通常情况下源代码中不会出现中间管理.我个人觉得,如果不用中间层的话,我们的项目完全可以用NEW来代替,因为项目比较小,用到的类的类别也少.当然,上述所说成立的前提是在用JAVA语言开发的条件下,程序员编写一个单例模式的简单容器也应该可行.如果是在C语言开发的环境下,那我就不能妄下定论了. 现在很多管理化信息软件都反对一些免费的数据库软件,因为从技术上来看,实现对多个品

微服务架构案例(01):项目技术选型简介,架构图解说明

本文源码:GitHub·点这里 || GitEE·点这里 一.单体架构 单体架构在中等偏小的业务中比较常见,场景模式就是单个应用.单个数据库.一个程序包(例如war格式或者Jar格式)包含所有业务需求功能,这是一种比较传统的架构风格. 单体架构的缺陷 复杂性高,整个项目包含的模块多,依赖模糊,修改程序容易触发不可知问题. 扩展能力受限,单体应用只能整体进行扩展,无法针对业务模块的特性进行伸缩. 稳定性差,任何微小的问题,都可能导致整个应用服务直接挂掉. 二.微服务架构 微服务架构是一种架构概念,

.net项目技术选型总结

数据库 小型项目:SQLite 中大型项目:MS SQL Server(国内) / Mysql(国外) 数据访问技术 SqlHelper(ADO.NET) 轻型ORM:Dapper / PetaPoco 大型ORM:EF / NHibernet 服务端技术 ASP.NET MVC WCF ASP.NET WebAPI 前端技术 JavaScript jQuery+jQuery UI 前端框架:Easy UI(轻型),ExtJs(大型),BootStrap 图表:FushionCharts,Hig

关于此次团队项目中技术选型问题

关于此次软件项目的开发,我们设计了一个软件应用型的项目.显然,我们的项目跟市场上的主力军项目来比,就像一个刚出蛋壳的小鸡,很多地方都有可能出现纰漏.但是,在信息技术多元化发展的今天,我们必须给予项目技术层面足够多的关注,不然的话,吃亏的只能更加是自己.下面是此次项目开发中的关于技术选型方面的历程: 最初我们打算的项目是网站型的项目,因为网站性的项目访问量可能会比较大,而且还总是受到网络速度的影响,所以我们在选择框架时在前端WEB层中选择了Model View Controller(MVB).之所

从零开始搭建django前后端分离项目 系列一(技术选型)

前言 最近公司要求基于公司的hadoop平台做一个关于电信移动网络的数据分析平台,整个项目需求大体分为四大功能模块:数据挖掘分析.报表数据查询.GIS地理化展示.任务监控管理.由于页面功能较复杂,所以采用前后端分离方式开发.前端采用webpack+vue+vue-router+axios技术栈,后端用django进行开发.从搭建到上线,整个项目前前后后花了差不多一个月时间,中途也遇到一些问题,不过还好都解决了.由于是个人项目,所以我打算把源码贡献出来大家一起讨论学习. 源代码 https://g

国家科技重大项目投标失败的思考与总结

以下仅是个人的一些看法,有不足或建议还请大家补充指正. 个人信息: 一个出入职场的小生,只是听吩咐干活的,但是心里总是对事情有个看法和思考,习惯做个总结. 投标项目信息: 项目名:ZGKG 费用:1000万  性质:直属国家某门户 结果:投标失败 首先项目投标写标书的时间也就半月多.费用较高大领导比较重视,小领导重视和紧迫自不必说.项目投的是一个技术性方案,而非科研类项目方案,所以对整个参与写标书的的技术功底有很高要求,除了行业背景以外,尤其对大型门户和安全性要求高. 失败原因分析: 原因一:公

关于大型网站技术演进的思考(十六)--网站静态化处理—前后端分离—下(8)

我第一次听说nodejs技术大概是在2009年年末,不过我真正认真在网络上进一步了解nodejs还是在2010年年中,当时对nodejs的认识和我现在对nodejs的认识有着天壤的区别,开始想了解nodejs我只是为了感慨谷歌公司开发的V8引擎居然如此强大,它不仅仅可以作为chrome浏览器的javascript内核运行平台,居然还能为服务端使用javascript语言作为平台,通过对nodejs的了解让我认识到chrome浏览器是如此的优秀,但是如此相对的是我并不认为javascript作为服

【转】关于大型网站技术演进的思考(十六)--网站静态化处理—前后端分离—下(8)

我第一次听说nodejs技术大概是在2009年年末,不过我真正认真在网络上进一步了解nodejs还是在2010年年中,当时对nodejs的认识和我现在对nodejs的认识有着天壤的区别,开始想了解nodejs我只是为了感慨谷歌公司开发的V8引擎居然如此强大,它不仅仅可以作为chrome浏览器的javascript内核运行平台,居然还能为服务端使用javascript语言作为平台,通过对nodejs的了解让我认识到chrome浏览器是如此的优秀,但是如此相对的是我并不认为javascript作为服