软件工程师的角色-专业咨询的明确内容

在我担任软件工程师的整个过程中,尤其是在过去的一年中,我遇到了许多想法,概念,良好实践,设计模式,体系结构,思想流等等。 对于任何专业开发人员来说,自然都对如何制作更好的软件产生了兴趣。 经过大量的讨论,研究和更多的经验,直到最近才让我想到,所有这些都可以用几个简单的词来概括:“您必须明确”。

建筑

让我们从所有人一直以来最喜欢的架构开始。 在软件开发方面,软件体系结构显然是极其重要的主题。 在整个编程历史中,出现了许多旨在帮助您拥有最佳架构的原理和设计模式。 但是,无论您的信念或偏好是什么,它们都倾向于相同的目标: 明确 。 无论我们谈论的是Clean ArchitectureVIPERMVVMMVC还是任何其他形式,它们的唯一目标是帮助您弄清自己在做什么和如何做。

在一些会议上,我从罗伯特·C·马丁(Robert C. Martin)(鲍勃叔叔)那里看到了他的例子,此刻一直困扰着我。 让我问你一件事,向你证明这一点。 你能告诉我下图是什么吗?

好吧,这不是很明显吗? 您可以告诉我,“ 这是大教堂的蓝图! ”。 我假设您不是我还是建筑建筑师或房地产专业人士,但是,我们所有人仍然能够马上说出那些是大教堂的建筑计划。 当我们看到它时,它尖叫起来就是为了建造一座大教堂。

那么,在软件体系结构方面,为什么要有所不同呢? 如果您的体系结构很棒,那么对任何打开您的项目的人来说,它应该立即变得显而易见。

哦! 这显然是银行帐户管理应用程序!

哦,很明显,这是一个在线书店应用程序! ”。

如前所述,无论您最喜欢的概念或设计模式是什么,在拥有良好的软件体系结构时,都可以用以下几句话来概括:“ 您必须明确 ”。

行为驱动的发展

BDD是一种软件开发过程,其灵感来自于测试驱动开发(TDD)和其他来自面向对象编程的设计概念。 在Dan Dan的带领下,这一过程在过去几年中越来越受欢迎,而我有机会在上一个项目中进行实践。

BDD的目标是通过一起指定业务需求来帮助项目的开发人员和业务人员进行协作,并编写测试以验证软件中的那些业务需求。 这样做有助于在项目的业务和技术方面都清楚应用程序应该做什么以及应用程序是否正常工作。

这可以用几句话来概括:“ 您必须明确 ”。

域驱动设计

DDD是由Eric Evans创建或至少明确定义的软件开发方法。 它的目的是将项目的重点放在领域及其逻辑上。 这样,它允许程序员,项目经理,利益相关者和项目中涉及的任何其他人共享使用普遍存在的语言讨论的领域的相同愿景,从而彼此理解。 这有助于更好地表达业务需求,并使软件与项目的核心领域保持一致。

再者,所有这些都朝着与前面提到的所有目标相同的目标,可以用几句话总结:“ 您必须明确 ”。

SOLID原则

由Robert C. Martin提倡,SOLID原则是面向对象的编程设计原则。 这五项原则是许多思想或方法论的核心基础。 它们只是一组好的惯例或规则,已被定义以帮助制作干净的功能软件。

无论我们是谈论单一职责,接口隔离还是任何其他原理,都可以用几句话总结:“ 您必须明确 ”。

项目管理

我在这里进行项目管理的想法是,作为开发人员团队,除了编写源代码外,您还应如何处理项目。

在编程之外,您应该在项目中处理很多事情。 像如何以及在何处部署您的应用程序,文档,通信,入门以及许多其他主题。

但是同样,无论您是考虑提供哪些文档有用还是如何改善我们的入职流程,所有这些都与一个关注点有关 ,您现在可能已经猜到了这一点:“ 您必须明确 ”。

明确的

以上所有只是更多示例中的几个。 在我还很年轻的整个职业生涯中,我一直在问自己自己,并问很多其他开发人员,试图始终寻找更好的解决方案。 我认为我们都在某个时候坚信我们拥有最好的架构或最好的测试,甚至是实现功能的最聪明的方法。 但是,无论我们有什么论点,我们似乎都无法就这些问题达成协议。 这没关系! 我们所有的信念和主张都来自经验,我们自己或他人的经验,在我们的背景下,所有这些信念和主张通常都是有意义的。 我们不必就一种最佳架构或一些最佳原则或设计模式达成一致。 而且我们不应该! 但是我越看越发现,我发现总是一回事:“ 我们必须明确 ”。

如果一个人接管了您的项目,但没有清楚地看到您在做什么,那么您可能就没有正确地做这件事。