作为一名开发人员,我大部分时间都在思考代码、UI、数据结构等等,但是(我勇敢地承认)我不会考虑我的应用程序对系统管理员和 DBA 的影响,直到部署应用程序的时候。
首先,我很抱歉。其次,你希望我和你打交道的其他开发人员能做些什么不同的事情?什么事情会让你的生活更轻松,减少问题,鼓励合作,减少崩溃、性能问题和配置噩梦?
答案1
- 从第 0 天起就思考并建立安全性。
- 对所有内容使用版本控制:源代码、文档、配置等。
- 文档、文档、文档。
- 使用平台原生打包,进行干净的安装和卸载
- 将配置数据与库和可执行文件分开
- 支持并行运行不同版本以进行测试和迁移
- 强大且可配置的日志记录
- 轻量、精准、安全的监控
- 应用程序检查点和备份
- 您的应用程序如何对问题做出反应:内存不足、文件系统已满、网络故障、配置文件丢失/损坏、时间偏差?
- 始终拥有独立的开发、测试和生产环境。有了所有免费的 VM 软件,就没有借口了!
请记住,您的应用程序可能具有比启动或关闭更多的状态。绘制状态图。大多数应用程序具有以下状态:
- 向下
- 初始化
- 恢复
- 但不接受工作
- 等待
- 检查点
- 加工
- 整理起来
- 关闭
- 向下
想想如果系统在每个状态期间崩溃会发生什么。系统管理员如何监视和控制状态转换?
答案2
将“用户”与 SA 区分开来。
“用户”需要知道如何使用你的软件。用户并不关心如何安装你的软件。
SA 并不关心如何使用您的软件,但需要知道如何安装软件的一些关键细节。
为每个角色分别编写文档,包括与每个角色相关的信息。
答案3
我的愿望之一是在异常和错误代码中包含适当的消息。对于没有开发过应用程序的人来说,这完全不透明JimmyNotAtHomeException: it's late!
。
但这样的信息Unable to find jimmy - initial manual call_mother procedure
非常有帮助。
答案4
在项目早期就让我们参与进来。非常非常早,在功能规范阶段。
其他人提到必须在每台电脑上手动安装,但配置和配置更改也是如此。如果您选择在客户端存储诸如连接字符串之类的内容,并且需要定期更新它们,我们可能会想杀了你。
出于同样的原因,选择能够正确集中管理和配置的技术。确保它能够与我们使用的任何中央管理工具很好地集成。
始终使用最低标准进行测试。这意味着,作为非管理员,使用最原始的操作系统、应用程序套件和常用的浏览器平台。我们不喜欢在最后一刻要求所有用户升级浏览器。
出现问题时,不要急于责怪我们。在我以前的工作中,每次应用程序出现问题,开发人员都会立即指责我们。“你们安装了新补丁,你们不会升级浏览器,你们的安全措施太严格”之类的。这会产生一种破坏性的氛围。我们其实是站在同一边的,我们想和你们一起解决问题,但在那种情况下我们做不到。