Architecture “a”应该是什么;“开始开发”;了解架构和规划 我和C和C一直在一起工作,我认为自己是一个“相当不错”的程序员,但正如很多时候指出的,编程只是软件工程和开发的一个小方面。我是我部门唯一的编码员,但看起来这将开始改变,我想从Stackoverflow社区了解以下内容 从程序员到开发人员需要做些什么?我已经阅读了完整的代码,所以我想我已经准备好冒险了。在某种程度上,我已经是了 制作软件模型时应使用哪些工具# 在制定硬代码和快速代码之前,我应该对架构进行多深的建模?-我意识到这个问题有多主观,我更喜欢经验法则而不是“视情况而定”。假设我正在编写旨在“持续5-10年”的内部工具 对于从编码转向工程的人,您愿意给出什么建议?

Architecture “a”应该是什么;“开始开发”;了解架构和规划 我和C和C一直在一起工作,我认为自己是一个“相当不错”的程序员,但正如很多时候指出的,编程只是软件工程和开发的一个小方面。我是我部门唯一的编码员,但看起来这将开始改变,我想从Stackoverflow社区了解以下内容 从程序员到开发人员需要做些什么?我已经阅读了完整的代码,所以我想我已经准备好冒险了。在某种程度上,我已经是了 制作软件模型时应使用哪些工具# 在制定硬代码和快速代码之前,我应该对架构进行多深的建模?-我意识到这个问题有多主观,我更喜欢经验法则而不是“视情况而定”。假设我正在编写旨在“持续5-10年”的内部工具 对于从编码转向工程的人,您愿意给出什么建议?,architecture,Architecture,提前谢谢大家!祝你有一个伟大的阵亡将士纪念日 在我看来,阅读书籍、文章或博客是非常必要的。但这还不够。试着找一位经验丰富的开发人员/架构师来指导您。从程序员到架构师的转变需要很长时间,经验是最重要的 试着找一个可以研究新技术的项目。但是,真的,试着找一位导师。记住以下几点: 抽象-干净、简单且易于理解 重点 避免重复, 认真地 依赖项-分层 架构,接口在哪里 挂钩 不变性 处理易变性越多 (特别是在同时发生的情况下) 环境)你开始做的越多 感激没有状态 假设——不要做出假设,不要让责任泄露出去

提前谢谢大家!祝你有一个伟大的阵亡将士纪念日

在我看来,阅读书籍、文章或博客是非常必要的。但这还不够。试着找一位经验丰富的开发人员/架构师来指导您。从程序员到架构师的转变需要很长时间,经验是最重要的


试着找一个可以研究新技术的项目。但是,真的,试着找一位导师。

记住以下几点:

  • 抽象-干净、简单且易于理解 重点
  • 避免重复, 认真地
  • 依赖项-分层 架构,接口在哪里 挂钩
  • 不变性 处理易变性越多 (特别是在同时发生的情况下) 环境)你开始做的越多 感激没有状态
  • 假设——不要做出假设,不要让责任泄露出去。这很有帮助
反复设计和编码,让别人回顾或分享你的想法是非常重要的。你会有盲点。甚至可以尝试成对编程


从长远来看,测试至关重要。他们保护你的后背,让你在没有恐惧的情况下自由改变。恐惧是导致重复、膨胀和不清洁的力量。

首先,一般答案是:

  • 要明白,任何给定的工具都不是解决所有问题的灵丹妙药。所以当你读到关于MVC或者函数式编程或者有人说LISP可以解决你所有的问题时,他们不会。他们可能会解决你的一大堆问题,但不会解决所有问题。在许多情况下,除了解决一些问题外,他们还会引入一大堆其他问题
  • 了解不同组件/技术/工具在为任何给定问题提供解决方案方面的局限性和优势。在评估所有优点和缺点的基础上做出决定——不要盲目地做出决定
  • 为工作选择合适的工具,包括语言、开发、集成技术
  • 谁来维护代码?将代码发送给预期的受众。如果是你,不要期望六个月后,当你被期望提供一个修复方案时,你会记得今天你的思维过程是什么。。。编写简单易读的代码并记录您的思维过程。不是“如何”——代码是这样做的,而是“为什么”。无论代码多么容易阅读,它都无法告诉您为什么要这样做。代码注释用于说明为什么,而不是说明如何
  • 了解你的用户,他们是如何工作的,他们对工具的态度,他们的工作是什么,他们对软件学习曲线的态度是什么
  • 了解支持您的应用程序的人员/团队的心态-这也意味着安装
  • 理解并使用源代码管理的需要
  • 备份,总是假设和准备最坏的情况,如果你不这样做,你会希望你这样做
  • 学习如何编写软件规范、技术规范、测试文档和用户文档
  • FAT/SAT/UAT测试和签核程序
  • 设定低于你能力范围的期望值,不要承诺给客户一辆兰博基尼(Lambourghini)和一辆大众汽车甲虫(Bug)。向甲虫(臭虫)承诺并交付一辆梅赛德斯(Mercedes)要好得多
  • 不要使任何事情过于复杂——包括架构、编程或其他方面。文档应易于阅读,界面应易于使用
现在,具体内容如下:

  • 了解您必须先研究问题并了解问题域,然后才能提供任何类型的解决方案,无论是体系结构解决方案还是其他解决方案
  • 了解用户期望交付的内容、交付方式以及他们将如何与之交互
  • 找一个技术最不熟练的人来使用你的解决方案,如果他们能理解,其他人也会理解
  • 为用户和金融家设计软件。如果你交付给的人不能/不会使用它,你永远不会听到它的结束——即使你的金融家最初感到满意,他们也会很快放弃
计划失败就是计划失败

您的环境、软件需求、目标受众、网络支持人员、预算和任何其他因素都将极大地影响您提供的解决方案。例如,在我编写代码的环境类型中,我倾向于使用一组有限的工具来交付产品,它们可能会因您的环境而异:

  • 网络浏览器-IE/Firefox/Opera/Safari
  • 应用程序/文件服务器-Windows服务器、Linux、Unix
  • Web服务器-IIS/Apache
  • Web应用程序开发-ASP.NET/C#/V