如何成为更好的软件架构师?

成为软件架构师需要什么? 在我作为软件工程师和软件架构师的过去 20 年的职业生涯中,我与各个领域和学科的软件工程师进行了许多对话。他们中的一些人是拥有 8 年或 10 年经验的高级工程师。他们中的许多人在职业生涯的早期就拥有 3 到 5 年的经验。其中一些是我的同事。有些是求职者。在某些时候,他们都以我一遍又一遍听到的同一个问题告终:“我想成为一名解决方案架构师。有哪些资源可以进一步了解建筑?”— 许多软件工程师提出的... 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:机器之心编译(参与:王子嘉、魔王)

7e1f7f2aa38db120886323da448644dd.jpeg


几天前,高级架构师 Justin Miller 在 GitHub 上创建项目,介绍自己关于「如何成为更好的软件架构师」的想法。该项目发布一天即获得 1.4K star,现在已有 3.8K star 量。

几年前有人问我:「你是怎么成为一名软件架构师的?」我们就此探讨了必备技能、经验,以及储备相关知识所需的时间和精力。除此之外,我也回顾了自己走过的路、使用或尝试过的技术,以及我从那些五花八门的工作中学到的东西。

6129439a4e3d7e89ea959917db91f5f5.jpeg
架构师技术路线图

软件架构师是什么?

在进行深层次的探讨之前,我们先来看两个定义:

  • 软件架构师是指那些制定高级设计决策,并确定技术标准(包括软件编程标准、工具和平台)的软件专家。这之中的首席专家就是总架构师。(来源:Wikipedia: Software Architect)

  • 软件架构是系统的基本组织构成,这种组织主要体现在其组件、组件之间的关系、组件与环境之间的关系,以及决定系统设计与演化的原则。(来源:Wikipedia: Software Architecture)

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

架构的「层级」

架构主要可以抽象成以下几个「层级」。不同层级所需的技能也不同。尽管对层级的分类有很多种标准,但是我最喜欢把架构分成 3 个层级:

  • 应用级:最低层级的架构。只关注单一的应用。层级低,但是很详细。这方面的交流一般是在一个开发团队内展开;

  • 解决方案级:架构的中间层。关注一或多个满足业务需求的应用(也就是商业方案)。这之中有些设计是高层次的,但大部分还是低层次的设计。这种层级架构的交流就开始涉及多个团队了;

  • 企业级:架构的最高层级。关注多个方案。这种架构的设计层次高且抽象,因此也需要方案级和应用级的架构师对此进行细化。这种层次的架构就需要多个组织进行沟通了。如果你想了解更多,可以参阅这个链接:https://github.com/justinamiller/EnterpriseArchitecture。

有时候,架构师也被看做不同工作组之间的粘合剂。以下是三个例子:

  • 横向:在业务部和开发人员或是不同的开发团队之间架起沟通的桥梁;

  • 纵向:在管理者和开发人员之间架起桥梁;

  • 技术:将不同的技术或应用整合在一起。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

软件架构师的日常

要了解架构师的必备技能,我们得先知道架构师主要做什么。我认为架构师最重要的活动包括:

  • 定义和确定所需的开发技术与平台;

  • 定义开发标准,如编程标准、工具、审核流程、测试方法等;

  • 对确定和理解业务需求提供支持;

  • 设计系统并根据需求做出决策;

  • 对架构定义、设计和决策进行讨论记录;

  • 检查并审核架构与代码,比如检查前期确定的模式与编程标准是否被正确实施;

  • 与其他部门和架构师合作;

  • 对开发人员的引导及咨询;

  • 将高级设计细化,并转化为较低级的设计。

注意: 架构设计是一项持续性的工作,尤其是在敏捷软件开发过程中。 因此,我们会一遍又一遍地重复这些工作 。

软件架构师必备技能

为了完成上面说的那些工作,架构师需要具备一些特定的技能。从我的个人经验、相关书籍和讨论中,我们可以将其总结为以下 10 项技能:设计、决策、简化、编程、记录、沟通、估算、平衡、咨询、市场 。

接下来我将逐一介绍这些技能。

设计

首先最重要也最难回答的问题就是「什么是好的设计」。我将从理论和实践两个层面进行阐述。就我的经验来说,两者兼备才是最好的。那我们先说一下理论层面吧:

  • 了解基本的设计模式:模式是架构师开发可维护系统所需的最重要工具之一。基于这些模式,你可以把一些已经在其他问题上奏效的方案迁移到一些模式相同的新问题上。「Gang of Four」(GoF) 所著《Design Patterns: Elements of Reusable Object-Oriented Software》是所有从事软件开发的人的必读书。尽管这些模式发布于 20 多年前,它们仍是现代软件体系结构的基础。例如书中的模型-视图-控制器(Model-View-Controller,MVC)模式就被应用于许多领域,它同时也是一些新模式(如 MVVM)的基础;

  • 再挖深一点,研究一下模式与反模式(anti-pattern):如果你对 GoF 所写的模式具备全面的了解,那么你就可以学习更多的软件设计模式了,或者深挖你感兴趣的领域。在应用集成领域,我最喜欢的一本书是 Gregor Hohpe 编写的《企业集成模式》。当两个应用需要交换数据时,无论是来自一些遗留系统的老式文件交换还是现代微服务体系结构,这本书的内容都适用;

  • 了解质量度量:定义架构还不算完,还要解释为什么要定义、应用并控制这些准则和编程标准。这样做是因为需要控制质量,满足一些非功能需求。我们想要的是一个可维护、可靠、可适应、安全、可测试、可扩展、可用的系统。而实现所有这些要求的方法就是有一个好的架构设计方法。你可以在维基百科上了解更多关于质量度量的信息。理论很重要,但是如果你不想成为一名活在象牙塔里的架构师,实践也同样重要,甚至更加重要;

  • 尝试并理解不同的技术栈:我认为这是你成为更好架构师之路上最重要的一步。尝试新的技术栈,并了解其发展历程。这些不同的技术具有不同的设计理念和模式。只浏览 PPT 学不到太多东西,你需要自己去尝试并感受这项技术的喜与悲。架构师不仅要有广博的知识面,还要在一些领域有深厚的积累。重点不在于掌握所有的技术栈,而是对你所在领域最重要的技术有坚实的理解。你还可以尝试一些领域外的技术,例如,如果你对 SAP R/3 有很深的了解,你应该尝试一下 JavaScript,反之亦然。尽管如此,双方都会对 SAP S/4 Hana 的最新进展感到惊讶。例如,你可以自己尝试并免费参加 openSAP 的课程。保持好奇心,多尝试新事物,也可以尝试一些几年前不喜欢的东西;

  • 分析和理解应用模式:查看任意当前框架(如 Angular)。你可以在实践中学习到很多模式(如 Observables),你还应该试着理解它是如何在框架中应用的,为什么要这样做。如果你是真正的专业人士,你还需要更深入地研究代码并了解它是如何实现的;

  • 保持好奇心,关注用户群。

决策

架构师需要制定决策,指引项目甚至整个公司的正确方向。

  • 分清主次:不要在不重要的决策和工作上浪费时间,要学会分清主次。就我个人来说,我比较喜欢通过以下两个特征来判断一件事是否重要:

    • a. 概念完整性:如果你一开始决定了一个理念,坚持下去,即使有时候用不同的方法做会更好。这样整体概念就更清晰明确,提升了可理解性,也简化了维护过程。

    • b. 一致性:例如,如果你定义并应用了命名约定,那么它不是关于大写或小写的,而是以相同的方式应用于所有地方。

  • 优先级:有些决定非常关键,如果没有及早采取合适的解决方案,很有可能给日后造成无法解决的问题。这对维护人员来说来说是一场噩梦,或者更糟的,开发人员在这个决策制定之前无法继续工作。在这种情况下,先做一个「糟糕」的决定甚至比没有决定更好。但是在这种情况发生之前,你要知道哪些决定是应该被优先处理的。有很多方法可以做到这一点。我建议先看看加权最短作业优先(WSJF)模型,它在敏捷软件开发中被广泛使用。尤其是时间临界和风险降低,对这二者的度量是评估架构决策优先级的关键;

  • 认清自己的能力:不要在能力范围之外的事情上做决定。这很重要,因为如果不加以考虑,它可能会严重破坏你作为架构师的地位。为了避免这种情况,你应该和同事明确自己的职责和角色。如果有不止一个架构师,那么你应当只负责当前负责的架构层级。作为一个较低层级的架构师,你应该为更高层级的架构提出建议,而不是做出决策。此外,我建议你经常和同事一起检查重要的决定;

  • 评估多种选择:在做决定时,总是要列出多个选项。在我参与的大多数案例中,都有不止一个可能的(优秀)选择。不好的选择主要有这两个特点:(1)看起来你没有完成好自己的工作;(2)有碍于作出正确的决定。定义度量后,你就可以根据事实(如许可证成本或成熟度)来比较各种选择,而不是通过直觉。这通常会让你做出更好、更可持续的决策。此外,将该决策推广到其他部门也会更容易。但是如果你没有正确评估选项,在最终讨论时你可能会失去一个重要的论据。

简化

时刻记住奥卡姆剃刀原则,也就是简单即正义。我对这个原则的理解是这样的:如果你的解决方案是在做了很多假设的基础上提出来的,那么你的方案很可能是错的,也很可能会变得极其复杂。这个时候你就应该减少(简化)一些假设,以获得更好的解决方案。

  • 多方位观察解决方案:为了简化解决方案,经常需要你调整对解决方案的观察角度。比如,你可以尝试通过自顶向下和自底向上的思考来获取解决方案。如果你有一个数据流或流程,那么首先考虑从左到右,然后再考虑从右到左。在简化过程中询问自己:「在完美的世界里,你的解决方案需要做什么修正吗?」,或者「某公司/某人会怎么做?」。这两个问题都可以帮助你按照奥卡姆剃刀原则来简化假设;

  • 退一步:经过激烈而漫长的讨论后,常常会得到一些极其复杂的方案。永远不要把它们当做最终的结果。「退一步」的意思就是:再次从宏观角度看一下这个问题,当下的方案还说的通吗?然后再在抽象层面对方案进行重构。有时候暂停讨论第二天再继续是个不错的选择。至少对于我来说,我的大脑需要一些时间来处理信息,想出更好、更优雅和更简单的解决方案;

  • 分而治之:把大问题分解成更小的问题,然后分别解决小问题,并验证这些小方案是否匹配。最后再退一步来看一下总体情况;

  • 重构并非坏事:如果找不到更好的解决方案,那么修正一个复杂的解决方案也是不错的选择。如果某个解决方案问题很多,你可以稍后重新思考该方案,再将想到的新东西应用到该方案中。重构并非坏事,但是在你开始重构之前,请记住:(1)准备好足够的自动化测试,以确保系统的正常功能;(2)获得利益相关者的支持。要了解更多关于重构的知识,我建议阅读 Martin Fowler 写的《Refactoring. Improving the Design of Existing Code》。

编程

即使作为企业级架构师(最抽象的架构层级),你仍然应该了解开发人员的日常工作。如果你不了解开发如何完成的,那你可能会面临两个主要问题:

  1. 开发人员不接受你的说法;

  2. 你不了解开发人员的挑战和需求。

  • 开展副项目:做副项目的目的是尝试新技术和工具,从而发现目前和未来的开发方式。经验是观察、情感和假设的结合 (《Experience and Knowledge Management in Software Engineering》,Kurt Schneider 著)。阅读教程或对利弊的介绍当然好,但这只是「书本知识」。只有当你自己尝试时,你才能体验到开发人员的情绪,才能对事情好坏背后的原因做出假设。使用一种技术的时间越长,你做出的假设就会越好。这会帮助你在日常工作中做出更好的决定。我刚开始编程时,并没有代码补全功能,只有一些可以加速开发的实用程序库。显然,把那时候的背景知识用在今天,我会做出错误的决定。现在我们有大量的编程语言、框架、工具、流程和实践。只有当你有经验,对主要趋势有粗略的了解时,你才能参与到讨论中来,并将开发引向正确的方向;

  • 只尝试需要尝试的事情:你不可能尝试所有的事情,这根本是不可能的。你需要一个更结构化的方法。我最近发现了一个资源:ThoughtWorks 的技术雷达,他们将技术、工具、平台、语言和框架分为四类:采纳、试验、评估和暂缓。采纳表示「强烈建议业界采用这些技术」,试验表示「企业应当在风险可控的前提下在项目中尝试应用此项技术」,评估表示「它对企业的影响还需探索」,暂缓表示「谨慎行事」。有了这种分类方法,我们更容易获得新事物的概况,并更好地评估下一步要探索的趋势。

记录

架构文档有时很重要,有时却不那么重要。例如,架构决策或代码指南是重要文档。在开始编程之前,通常需要初始文档,并且对此不断细化。因为代码也可以作为文档(如 UML 类图),所以有些文档可以自动生成。

  • 代码整洁:好的代码本身就是最好的文档。好的架构师应该拥有辨别好坏代码的能力。Robert C. Martin 写的《Clean Code》就是这方面很好的学习资料。

  • 在可能的情况下生成文档:系统变化很快,因此文档很难及时更新。无论是 API 还是以 CMDB 形式出现的系统环境:底层信息的变化往往太快,因此无法手动更新相应的文档。例如:如果你的 API 是模型驱动的,你就可以根据定义文件自动生成文档,或者直接从源代码生成文档。有很多工具可以帮你完成这项工作,我认为 Swagger 和 RAML 是很好的起点。

  • 尽可能多记必需的东西,内容尽可能少:不管你需要记录什么(如决策文件),试着一次只关注一件事,只记录这件事的必要信息。丰富的文档很难阅读和理解,附加信息应保存在附录中。特别是决策文件,更重要的是要讲一个有说服力的故事,而不是抛出大量的论据。此外,这还能为你和你的同事节省大量时间,因为你们必须阅读这些文档。看看你过去做过的一些文档(源代码、模型、决策文件等),然后问自己以下问题:「用于理解该文件的所有必要信息都包括在内了吗?」、「哪些信息是真正需要的,哪些可以省略?」、「文档有红线吗?」

  • 更多地了解架构框架:这一点也适用于所有其他「技术」类建议。我之所以把它放在这里,是因为像 TOGAF 或 Zachmann 这样的框架提供了「工具」,这些工具在文档站点上很重要,尽管它们的附加价值并不局限于文档。深入了解此类框架将教会你更系统地处理架构。

参考链接:https://github.com/justinamiller/SoftwareArchitect



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

324b1b1529144ac85ef82339099b68e1.png

已在知识星球更新源码解析如下:

24c368a0d55e5437abda0952b9f14356.jpeg

6b1d59852a4d59eceb3df5f30909239f.jpeg

a27380666c8de4f46b108c00041af6cc.jpeg

3b800379286c8138fc8e13bd70298537.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
Pyside6实战:3种.ui文件加载方式对比(附完整代码示例) 本文深入解析Pyside6中3种.ui文件加载方式的优劣与性能优化策略,包括动态加载QUiLoader、预编译方案及混合策略。通过实测数据和完整代码示例,帮助开发者根据项目需求选择最优解,提升界面加载效率与内存管理。 阅读详情

相关推荐

Zotero+Obsidian+Bookxnote联动让文献阅读丝滑般体验

摘录文字或图片到Obsidian

weixin_43694742的博客 1万+

什么是WSJF – Weighted Shortest Job First

百度把Weighted Shortest Job First翻译成加权最短作业优先,听起来还是觉得翻译得不错。WSJF是一种敏捷用来排任务优先级的方法。 SAFe引入了敏捷火车ART(Agile Release Train),它把原本一个一个项目从开始到结束,又一个开始,又一个结束这样的模式,编程了一个流水线的工作模式。有项目就把项目往敏捷火车上扔,流水线式的工作方式,这样大大减少了原先

睡猫的博客 7186

从零到一:手把手教你用Python+LangChain搭建企业级RAG知识库(附避坑指南)

本文为开发者提供了一份详尽的实战指南,手把手教你使用Python和LangChain框架从零构建企业级RAG知识库。内容涵盖环境搭建、文档处理、向量化检索、提示工程及生产部署等核心环节,并重点分享了文档分割、检索优化等关键避坑经验,旨在帮助读者打造稳定、高效且易于维护的智能知识中枢。

weixin_29058331的博客 398

GitHub下载量从19暴涨到5W,这份架构师学习路线只用了一晚

现在Java内卷严重,由于正常面试无法快速地筛选出人才,就好比一个富豪需要招一个司机,结果来了1000人来应聘,要想快速招聘到合适的人选,那么面试官该怎么办?他只能去问一些比较高端的问题,比如不是本科的淘汰,30岁以上的淘汰,不知道齿轮传动原理的淘汰等等。但是有没有人真正的静下心来去思考,是哪个阶段的内卷严重?你觉得阿里P7内卷吗?不要总是杞人忧天,技术人就是以技术为主,把技术提上来一切都不用担心;如果想要摆脱内卷的束缚,那么这份P8修炼手册你或许该好好地阅读一下。文中资料领取。

架构大数据双料架构师的博客 512

unity shader 后处理实现水墨风格渲染「Low Poly 」变「水墨画 」

水墨风格渲染 这次学校的比赛打算做一个中国古代背景的游戏,所以尝试做了水墨风格的渲染。 主要按以下四步来实现的效果: 根据色调和饱和度调整饱和度。 对图像进行模糊 水墨风格的物体边缘 物体内画笔笔触的模拟 接下来我分别就这四步依次展开说明: 调整饱和度 这里我使用Post-Processing Stack 的Color Grading 来调节饱和度,通过使用Grading Curv...

九级铁甲蛹的博客 1万+

西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践

本文详细解析了西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践。通过实际案例和代码示例,介绍了状态机的基础认知、硬件配置、逻辑开发、调试技巧以及与MES系统集成的高级应用,帮助工程师高效实现设备自动化控制。

weixin_29255731的博客 531

排序算法有哪些_精打细算—敏捷中的排序算法(上)

“敏捷号”列车系列——《知识讲堂》文/冯思成前 言在软件开发需求管理领域,调度排序问题一直以来都是核心问题。哪些工作需要先做,哪些工作要排在后面,一直困扰着从业人员。如果只是简单地说重要的工作要优先做,虽然这个原则大家很容易达到一致,但是何谓“重要”,遇到具体的案例时往往公说公有理、婆说婆有理,经常出现无法精确判断的情况。因此我们不仅要有指导的原则,更需要有一个可以量化的方法,使我们能更...

weixin_39669701的博客 784

HOPE:基于强化学习的混合策略路径规划器,适用于多样化停车场景

本文提出了一种混合策略路径规划器(HOPE),用于解决自动停车中的路径规划问题。HOPE结合了强化学习(RL)和Reeds-Shepp(RS)曲线,通过动作掩码机制引导RL智能体的探索,并利用Transformer融合环境感知信息与掩码。该方法在多样且复杂的停车场景中实现了超过97%的成功率,并通过真实实验验证了其泛化能力。此外,本文还提出了基于空间与障碍物分布的停车场景难度分级标准,进一步提升了训练与评估的效率。实验结果表明,HOPE在规划成功率和跨场景泛化能力上均优于传统的基于规则算法和朴素强化学习方法

weixin_42783201的博客 1466

一线互联网互联网架构师自述:GitHub标星10w+(架构师必备技能)前言

现在新技术层出不穷,如果每次出新的技术,我们都深入的研究的话,很容易分散精力。新的技术可能很久之后我们才会在工作中用得上,当学的新技术无法学以致用,很容易被我们遗忘,到最后真的需要使用的时候,又要从头来过(虽然上手会更快)。我觉得身为技术人,针对新技术应该是持拥抱态度的,入了这一行你就应该知道这是一个活到老学到老的行业,所以面对新技术,不要抵触,拥抱变化就好了。Flutter 明显是一种全新的技术,而对于这个新技术在发布之初,花一个月的时间学习它,成本确实过高。

2401_84048179的博客 928

如何用 Python 实现自动化测试?详细步骤和代码示例

Python自动化测试实战指南 本文系统介绍了使用Python构建自动化测试体系的完整方案。主要内容包括: 环境搭建:Python 3.8+虚拟环境配置,安装pytest、Selenium等核心测试库 分层测试实现: 单元测试:通过计算器示例演示pytest断言和异常测试 API测试:使用requests库进行RESTful接口验证 UI测试:Selenium WebDriver实现网页交互测试 高级特性: 使用fixture管理测试依赖 参数化实现数据驱动测试 生成HTML和Allure测试报告 GitH

m0_64424835的博客 451

AD9361功能介绍和使用

AD9361使用分数分频锁相环(PLL)来产生发射机和接收机本地振荡器(LO)频率和BB PLL。BB PLL 可用于数据转换、数字滤波器和 |/O 端口。PLL的参考时钟可以由外部振荡器或外部晶体(XO)和数字可编程片内可变电容提供,电容微调产生参考时钟频率,XO和微调电容的组合统称为DCXO。有多个天线输入的分集系统。接收链数据首先经过低噪声放大器(LNA),然后是同相(1)和正交(Q)放大器,混频器和频带整形滤波器,可将接收到的信号下变频为基带以进行数字化。时分双工(TDD)和频分双工(FDD)。。。

wangjie36的博客 1万+

GitHub标星百万的程序员转架构之路,竟被阿里用作内部晋升参考

通过本书的系统学习,读者将在苔通开发人员的基础上向前跨出一大步,在思想、方法论、实践能力和综合素质等各个方面往一名合格的架构师方向发展,为后续的工作和学习铺平道路。学习不难,贵在自觉和坚持!

Park33的博客 276

2026年美赛数学建模竞赛 MCM B题:使用太空电梯系统建立月球殖民地 问题一 月球殖民地材料运输的三种场景建模 详细解题思路和代码

如果运输系统不能完美工作(例如,系绳摆动、火箭失败、电梯故障等),你的解决方案在多大程度上会发生变化?技术可行性:三种方案在技术上都是可行的,但挑战不同 经济性:混合方案在长期视角下最具成本效益 时间效率:并行运输可以显著缩短总建设时间环境影响:太空电梯的环境优势明显,混合方案可平衡需求风险分散:混合方案提供了天然的风险分散机制

YOLO 616

如何成为更好的软件架构师

如何成为软件架构师软件架构师定义软件架构层级应用级解决方案级企业级架构软件架构师职责软件架构师技能设计决策简化编程记录 软件架构师定义 软件架构师: 制定高级设计决策,并确定技术标准,包括编程标准,工具和平台的软件专家 软件架构: 系统的基本组织构成,这种组织主要体现在其组件,组件之间关系,组件与环境之间的关系,以及决定系统设计与演化原则 软件架构层级 应用级 最低层级的架构 ...

攻城狮Chova的博客 1787

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

深入业务成为更好的软件架构师——信息化建设图鉴一二例

软件开发实际上跟英语比较类似,都是一项工具,服务于各行各业。从程序员的个人修养上来讲,一是要研习好软件开发这门技艺,二是要深入到所服务的行业。说到底,软件的终极目标是模拟...

dotNET跨平台 382

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

系统架构师和软件架构师_如何成为更好的软件架构师?这篇3.8K star的文章值得一看...

几天前,高级架构师 Justin Miller 在 GitHub 上创建项目,介绍自己关于「如何成为更好的软件架构师」的想法。该项目发布一天即获得 1.4K star,现在已有 3.8K star 量。选自GitHub,作者:Justin Miller,机器之心编译,参与:王子嘉、魔王。几年前有人问我:「你是怎么成为一名软件架构师的?」我们就此探讨了必备技能、经验,以及储备相关知识所需的时间和精力...

weixin_39968309的博客 85

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java架构师_如何成为更好的软件架构师?Java架构师成长直通车132集教程送你

优秀工程师的成长之路就是一条不断打怪升级之路的“修仙之路”!而Java程序员一向比别人更难,如果说大家都在修仙的话,java程序员简直神似“剑修”,入行枯燥精通难,要想变得强大,需要能力也需要运气,更需要持之以恒。学习久了,难免会面临以下的困惑:具备有1年以上Java开发经验,不知道怎么快速提升竞争力缺乏Java整体认知,想要建立完善的知识体系梦想进入BATJ等名企,渴望掌握大厂核心技术跳槽屡屡碰...

weixin_39867200的博客 156

硬核干货:一位码农的架构师封神之路!

点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试文章转自机器之心几天前,高级架构师 Justin Miller 在 GitHub 上创建项目,介绍自己关于「如何成为更好的...

方志朋的博客 314

聊聊如何成为更好的架构师?

之前有小伙伴咨询架构方向需要学习什么,需要什么技术储备,今天就来深入聊聊这个话题。就此探讨下必备技能、经验,以及储备相关知识所需的时间和精力。除此之外,我也回顾了自己走过的路、使用或尝试过的技术,以及我从那些五花八门的工作中学到的东西。

20年码农 634

GitHub热门:程序员的架构师封神之路

转自:机器之心1 月 20 日,GitHub 趋势榜第一的项目来自架构师 Justin Miller,他分享了自己关于「如何成为更好的软件架构师」的想法。这个 repo 现在已有 5.3...

345

如何成为一名架构师

对于任何一个软件开发人员来说,架构师都是一个令人向往的角色。就连世界首富比尔盖茨在2000年卸任公司CEO的同时,也担任了微软公司的荣誉角色“首席软件架构师”,可见“架构师”这一称谓的吸引力。架构师是公司的“金领”,有着非常高的收入,很少需要考虑生存的问题,从而有更多的精力思考关键技术问题,形成“强者愈强”的良性循环。部分优秀的开发人员在工作了一定时间后,就要开始考虑自己的未来到底向哪个方向发展。

Java_小峰峰的专栏 2650

一级建筑师 系统分析师_“建筑师”应该扮演角色,而不是职位

一级建筑师 系统分析师 当高级开发人员变得…更高级时会发生什么? 他们经常被晋升为“建筑师”。 有时候,如果建筑师看到了“更大的图景”,那么他们不一定是开发人员。 最后,通常会有一个人担任“建筑师”的职位。 决定要开发的系统的体系结构的人。 在较大的公司中,有“建筑师委员会”,每个团队的指定建筑师在那里聚集并决定明智的事情…… 但是我认为拥有“建筑师”的职位是一个坏主意。 建筑师是建筑中的...

danpu0978的博客 182

android主题生成工具

为什么80%的码农都做不了架构师?>>> ...

weixin_34378969的博客 255

SOA--解决软件研发重复投资问题的法宝

“剪不断,理还乱。”8月29日,参加2006IBM软件技术应用研讨会的 I BM软件集团大中华区总架构师寇卫东接受了记者专访,开头便用这样一句话,形容了现代软件研发行业的困境。 从事 I T行业大半辈子的他,如今已是一位10多名硕士生、20多位博士生的导师,身兼纽约科学院、美国马里兰大学等诸多知名大学的院士、博导、兼职教授头衔。 “软件研发模式的混乱导致软件研发重复投资严重,这将抑制软件研发行...

数据库天地 140

从软件的价值体系开始向技术的反向分析

为什么80%的码农都做不了架构师?>>> ...

weixin_34029680的博客 116
上一篇: 分布式定时任务框架选型
下一篇: 5 款顶级 Docker 可视化管理工具,免费又好用!
公众号-芋道源码
博客等级 码龄10年 1631粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值