女主宣言

我们理想中的软件工程项目的开发,就应该像电影里盖房子似的按部就班,逐期交付。然而在现实中的项目,往往会遇到各种内外部的阻力或者变动,今天咱就来聊聊我们是如何优雅避开这些坑的。本文最先发布于 7rule,转载已获取作者授权。

PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!

The Jet Propulsion Laboratory by NASA Image of the Day

这些年做了很多项目,我从一个菜鸟开发不断成长,自己积累了一些方法,今天我就来和大家分享下我的项目开发心得。

我认为一个好项目,要做到如下几点:

  1. 要有好的传承性;

  2. 总体架构合理,分层清晰;

  3. 实现上能合理贯彻设计目标,选型恰当,代码清晰易懂;

  4. 部署合理,监控完备,数据统计恰当。

下面我就来逐一说明。

1

好的传承性

我把这一条放在第一位,因为我认为项目的传承性做的好,比任何东西都更加重要。

因为一个项目,通常需要很多人来共同完成,而且随着时间推移,会有老同学离开项目,新同学加入项目,甚至项目负责人也会更替。

我们通常在接手一个项目时,很多时候都有重构一版的需求,为什么?我总结大致如下:

  1. 项目现状混乱,文档很少,不了解设计;

  2. 代码有坑,不敢轻易修改;

  3. 开发模式混乱,都找不到最新代码;

  4. 没人知道里面的功能还有多少在用。

这些问题十分常见,我接手过的项目,也有上面这种情况的。不知道大家遇到这种情况是什么感觉,是不是很难受?重构吧,都不知道都有哪些功能,风险十分的大;继续维护吧,觉得越做坑越多。

也就因为这样,很多项目最终被抛弃,以失败告终。所以项目能否被传承,好的文档十分的重要,虽然会花很多时间,但如果你想让你的项目活的长,这一点非常的重要!

至于如何做好文档,我们向开源项目学习即可。我甚至觉得就算代码写的不好,但是文档写的好些,让别人明白你到底在干啥,都十分不错。

其实说白了,做好这件事情,更多的是为了别人能更好的理解你的项目,对自己来说,也能培养个好的习惯。

2

好的设计

好的设计,就好比一份好的作战计划,如果这个没有做好,那在执行的时候就会十分的混乱,问题层出不穷。

要做到这一点十分的不易,通常在评价一个人的技术能力时,级别越高也越看中这一点。因为我的能力有限,在这里我说下自己的体会,还望大家指正:

  1. 要养成勤于思考的好习惯,平时多积累, 俗话说,好记性不如烂笔头,所以多记录总没有坏处。;

  2. 遇事多问为什么,且得出答案时,建议再对这个答案问为什么,寻找更深层次的原因,这样不停的折磨自己,直至满意;

  3. 能够虚心向别人请教,也不要轻视别人对你的提问,你自己没什么了不起的;

  4. 做事情要专注,现在那么多新东西,找准自己的方向,理解的越深,对自己做出好的设计抉择越有帮助;

  5. 不断反思,永远不要满足,看如何能做到更好。

做设计的时候,通常就是在做各种抉择。比如webserver使用Apache还是Nginx;数据库使用Mysql还是MongoDB等等,只有自己对知识的理解越深,实践越丰富,才能做的越好!

3

好的实现

这个步骤就好比在打仗时,你如何完美的执行作战计划,我觉得需要做好如下这些事:

  1. 分工明确,接口合理;

  2. 要有很强的执行力;

  3. 和项目内成员保持良好沟通,敏捷开发是个好的选择;

  4. 项目的成败,很多还要依赖外部的合作,所以不要怕麻烦,维护好的合作关系这一点至关重要;

  5. 代码清晰,避免过于复杂,如果你觉得这一块逻辑有点复杂,那你应该考虑分层简化;

  6. log要详细,出问题时能做到快速排查。

借小说《亮剑》中,一个原来的国民党作战厅高级将领的一句话:在解放战争期间,国军的战术,都是天才制定的,但确是由蠢才执行的。

所以,好的实现非常重要,这一点做不好,再好的设计也是白搭。

4

部署监控及统计

先说部署,要做好如下几件事:

  1. 机房选择合理;

  2. 部署方法简单易用;

  3. 线上控制简单易用;

  4. 代码更新上线简单易用;

  5. 灾备实施简单。

接下来是监控方面:

  1. 核心服务监控点考虑周全;

  2. 监控服务可靠;

  3. 易于配置升级。

最后说下统计,产品的发展,离不开数据,通过数据分析来知道产品的发展,好过于拍脑袋做出的决定。

想要有个好的统计,至少也要有下面这些:

  1. 可靠的日志收集;

  2. 易于扩展的日志分析;

  3. 良好的界面展示。

6

结束语

上面这些,说实话,真是说起来容易做起来难啊!但也正因为这样,我们才需要不断努力,不停的锻炼提高自己。正所谓是活到老、学到老。

Fighting! Fighting! Fighting!

HULK一线技术杂谈

由360云平台团队打造的技术分享公众号,内容涉及云计算、数据库、大数据、监控、泛前端、自动化测试等众多技术领域,通过夯实的技术积累和丰富的一线实战经验,为你带来最有料的技术分享

我是如何开发一个项目的相关推荐

  1. 这是可用于下一个项目的React Native工具列表

    by Rajput Mehul 通过拉杰普特·梅胡尔(Rajput Mehul) 这是可用于下一个项目的React Native工具列表 (Here's a list of React Native ...

  2. java在线学习网站源码_我是怎么开发一个小型java在线学习网站的

    2016/1/27 11:55:14 我是怎么开发一个小型java在线学习网站的 一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,就萌发了开发一个在线ja ...

  3. 我是如何做软件测试项目的?

    最近公司刚完成了一个比较大的项目-单品页模块化,即使用现在比较流行的Twitter Bootstrap进行前端开发.说其大是因为工作量大,开发前期投入约80人日,包括前端开发及PHP开发,且不包括修复 ...

  4. 09_Android中ContentProvider和Sqllite混合操作,一个项目调用另外一个项目的ContentProvider

    1.  编写ContentPrivider提供者的Android应用 清单文件 <?xml version="1.0" encoding="utf-8"? ...

  5. 毕业一年,我是如何成为Apache项目的Committer

    | 作者:midnight2014 | 编辑:李明康 | 设计:苏子馨 [Apache ShenYu(incubating)新晋committer介绍] 1 了解开源 去年毕业后,觉得自己的技能还远远 ...

  6. Excel分类汇总后,我是这样提取汇总项目的!

    想必大家都用过Excel分类汇总这个功能吧,反正小编在学会数据透视表之前都是用这个功能的. 那么现在有一个问题:就是在做完分类汇总后,如何将汇总项复制粘贴提取出来呢? 如下图:选中数据,点击分类汇总, ...

  7. Eclipse 下如何引用另一个项目的Java文件

    有关联的2个项目,有些类是相同的.例如实体类. 如果你采用 Ctrl + C & Ctrl + V 的方式,以后再有改动,2个项目就都需要改动. 怎样才能只改动一个呢? 答案就是,在一个项目( ...

  8. 开发一个项目前应该要做的那些事

    很多前端新手在开发的时候总是显得效率不高,其实很大程度上是准备工作不到位,大部分新手一拿到设计稿就开始上手,等到快完工的时候才发现这没做好那没做好,常常导致返工不断,因此在正式开发敲第一行代码前不妨静 ...

  9. 我是如何做Web项目的

    啥都不说了先发个图片. 分层的优势: 1:可以相互协作.网页有美工负责,逻辑有程序员负责.数据库有数据库管理员负责.齐头并进,促进项目进度 2:对于大型系统可以蚂蚁吭大象,逐步解决(当然这是在全局控制 ...

最新文章

  1. ARTS打卡计划第一周-Share-系统字典模块的设计
  2. python读书报告_读书笔记 Python编程入门
  3. java Rserve测试
  4. springboot单例模式注入对象_springboot 请求流程简介
  5. 滴滴 Flink-1.10 升级之路
  6. 面向过程、面向函数、面向对象的区别浅谈
  7. 别去取悦,心里没你的人
  8. 东明县计算机学校,东明县职业中等专业学校2021年招生信息
  9. 【转载】一起聊天的wz132
  10. 1000道Python题库系列分享十二(9道编程题)
  11. 体验 Vista Speech Recognition,使梦想成为可能
  12. cygwin下各盘挂载点
  13. 知道为什么HTML页面在电脑上和手机上的布局不同吗?这篇文章带你走进Element UI的简单适配
  14. SUSE常见问题解决办法
  15. Editor编辑器操作
  16. 计算机组成原理 好学吗,计算机组成原理太难了(计算机编程解释)
  17. sass 转换为 css
  18. 图片处理或背景创建网站 + 在线ps(photopea)使用
  19. 常用的Eclipse 快捷键
  20. 解决在谷歌浏览器上倍速播放视频适用B站 慕课MOOC 百度网盘(弃用) 谷歌内置播放器最高16倍速

热门文章

  1. 又来Hello World了,Hello Python
  2. MyEclipse10下开发第一个Hibernate小程序
  3. Ranger-Hdfs插件安装
  4. Apache Kafka 2.7.0 稳定版发布
  5. win10修改时间同步服务器,解决win10时间服务器同步问题|重置win10时间服务配置...
  6. uni-app的列表搜索框_微信怎么搜索小程序?小程序能有什么用?
  7. DSF深搜入门全排列笔记nyoj366
  8. Vue——this.$nextTick()
  9. alook浏览器_alook浏览器下载-Alook浏览器iOS版下载 苹果版v10.8-PC6苹果网
  10. mysql 5.7.6 5.7.19_免编译安装mysql 5.7.19