预测未来的技术发展方向是件有趣又有意义的事情,正确的判断技术发展方向对于技术选型,业务发展和职业规划都起着至关重要的作用。日常的需求沟通,项目管理,设计编码,运维部署工作能带给我们满足感和安全感,但是在脚踩大地之外偶尔也需要仰望一下星空,看看未来是什么样子,这里就神棍一把,说一下我对未来技术发展趋势的一些看法。

困难与挑战

在预测未来之前,首先分析一下程序员的日常工作中遇到哪些困难与挑战。

需求和设计

在需求沟通阶段,程序员需要准确的获取PRD上的需求信息,并对业务的价值和发展有一定的预判。根据以上的信息进行技术选型,数据建模,设计抽象。在这个过程中主要的挑战有:

  • 高效的需求沟通
  • 合理的技术方案选择
  • 对现实世界的逻辑抽象

开发和测试

在编码和测试阶段,程序员需要选择适合的数据结构并编写算法,合理的运用设计模式高效的实现功能,并且保证尽可能少的存在bug。在这个过程中主要的挑战有:

  • 高效的编码
  • 避免语言的陷阱
  • 尽量少的bug
  • 代码有可读性和机器执行效率

部署和运维

在部署和运维阶段涉及到测试环境和生产环境2个方面,程序员分别需要在测试环境和生产环境部署代码和定位问题。在这个过程中主要的挑战有:

  • 方便的提供多套隔离的测试环境
  • 方便的在多集群多机器的生产环境部署和回滚代码
  • 方便的部署和升级基础设施(例如mysql)
  • 生产环境和测试环境的一致
  • 生产环境可以弹性伸缩
  • 有工具能辅助发现定位问题

系统内部

系统内部的主要挑战来自代码腐烂和功能复用2个方面。

  • 代码腐烂:如何在系统复杂度不断增加,几千几万次迭代之后依然可以高效的进行功能开发,而不是系统变成谁都不敢动的层层叠,开发效率越来越慢。
  • 功能复用:代码和系统的复用往往意味着更高的开发效率,更少的系统风险,一次修改就可以解决问题,而不是满世界的查找相同功能的代码进行修改。

系统外部

系统外部的主要挑战来自高并发,高并发带来3个问题,抗压,竞态条件,热点数据

  • 抗压 高并发意味着系统需要支撑更高的吞吐量,如果存在比较严重的性能瓶颈往往导致服务的不可用,无状态的节点可以比较容易的水平扩展,有状态的节点通常会成为系统的瓶颈。比较常见的解决方案是分库分表+缓存,但是同样带来开发难度提升,数据不一致,数据迁移等问题。
  • 竞态条件 高并发也会导致小概率的竞态条件不断出现,导致不能得到正确的结果。例如cache aside模式中读缓存为空并且DB读耗时>DB写耗时会导致缓存脏数据问题。
  • 热点数据 高并发在秒杀等场景中也会导致热点数据问题,在DB中会导致严重的锁冲突性能急剧下降,在cache中会导致缓存穿透,击穿,雪崩等问题。

业务约束

不同业务的特点也会带来不一样的挑战,例如很多金融业务会要求强一致而非最终一致,计费等业务的错误容忍度也远低于社区,微博突发热点话题的业务特点也会带来更大的技术挑战。

趋势:一切皆代码,无处不AI

分析了软件开发过程中面临的困难与挑战之后,终于来到了激动人心的未来技术趋势部分。无论是大到工业革命还是小到技术微创新,本质上都会发展生产力,解放生产力,未来技术的发展肯定也会极大的改变软件开发行业,和其他的行业一样,分化成标准化,规划化,规模化的大规模工业制成品模式和少部分知识密集型的研发模式。对于未来的技术趋势我认为是--一切皆代码,无处不AI,软件开发的整个生命周期都通过代码的形式进行组织和编排,同时有AI参与到需求,设计,编码,测试,运维的每个阶段,软件开发变的非常容易,极大的降低门槛。 针对上述遇到的困难与挑战,具体看一下已经出现的和可能出现的解决方案。

需求与设计

在需求和设计阶段我认为未来的趋势是SaaS的繁荣+专家系统+更快的原型构建工具。随着云计算的发展,数据的积累和SaaS自身发展,SaaS会逐步取代外包软件研发和自建研发团队,直接购买SaaS服务将会是中小型公司的第一选择。AI+SaaS会改变SaaS千篇一律的缺点,专家系统根据企业的业务特点生成个性化,定制化,智能化的解决方案。在原型构建领域会出现类Sql的语言,程序员不必再告诉计算机怎么做,只需要声明式编程即可。

编码和测试

在编码和测试阶段我认为未来的趋势是更简单的并发编程+所见即所得编程+AI辅助编程+持续集成。在未来TDD会成为主流,写单元测试不再是一项增加成本的额外工作,而且真正成为提高生产力的工具,在所见即所得的编程模式中写的每写一行代码都能直接看到单元测试的运行过程和当前结果,AI辅助编程会使得未来实现一个模块就如同当前调用一个类库一样简单,每次的commmit都会触发独立的持续集成流程,软件的开发难度会有大幅下降,开发效率会有极大的提升。

部署和运维

在部署和运维领域我认为未来的趋势是容器+AI+故障自动定位+故障转移/恢复。在高可用架构下人往往成为最大的瓶颈,从故障发生到故障发现到故障定位到故障止损到根因分析,即使有着最强大的监控工具和最高效的处理流程大部分故障依然需要人的介入,故障恢复时间也存在极大的不确定性,同时7✖24的oncall也给人带来极大的精神压力。故障的定位本质上是一个封闭的领域,非常适合机器学习在故障定位中发挥作用,在未来代码部署之后AI就开始学习,当故障发生时可以自动扩容+限流+降级+定位根因+故障转移,甚至可以自动的打一段代码补丁快速止损。

架构

在架构领域我认为未来的趋势是更丰富更强大更智能的基础设施+更强大更智能程序运行时。软件开发生命周期中技术发展带来的生产力提升将使代码实现更加的简单,风格更加的统一,大幅减少了代码腐烂的速度,提高代码了代码复用率。也一定会出现更强大更智能的runtime环境,使得程序的并发控制更加的简单出错的可能性更小,非功能需求更加容易解决,同时基础设施也会更丰富更强大更智能,更好的解决系统内部,系统外部,业务约束带来的挑战。例如同时满足高性能+高吞吐+事务+扩展性的数据库(关系型并不是OLTP的核心需求)会取代mysql分库分表+缓存的模式。

未来的分化

虽然完全的自动编程并不现实(准确的告诉机器想要什么并不比告诉机器如何做更容易),但是生产力的不断发展必然影响这个行业,上述的改变很有可能发生,在未来初级程序员工作会大幅的减少,偏重业务与偏重基础技术的工作也会出现明显的分化,偏业务方向的程序员工作会变成行业解决方案架构师和技术咨询,偏基础技术的程序员则会成为某个领域的专家。

第一只猴子开始仰望星空时,人类诞生。

我对未来技术趋势的一些看法相关推荐

  1. 2021年度COMPUTEX论坛汇聚科技巨头,共同解锁未来技术新趋势

    台湾台北--(美国商业资讯)--COMPUTEX论坛是全球极为重要的技术峰会之一,其所讨论的议题一向备受关注.为便于探讨未来技术趋势,将于6月2日和3日举行的COMPUTEX论坛将围绕"开创 ...

  2. 视频会议系统的主流解决方案与技术趋势

    视频会议系统的主流解决方案与技术趋势 类型:转载 作者: 最后更新:2005-5-2 10:11:39 推荐指数: 12050 视频会议系统传输的是多媒体数据,声音和动态图像的源信号的数据量较大,无法 ...

  3. 致茂并购ESS扩大半导体测试应用市场;思特沃克发布未来技术趋势分析报告《科技棱镜》 | 全球TMT...

    国内市场 致茂电子并购ESS Inc. (Environmental Stress Systems, Inc.) 100%股份.ESS主要提供Thermal Forcing System,其核心技术的 ...

  4. Gartner 2020 战略技术趋势- Hyper 自动化

    Gartner副总裁兼院士级分析师David Cearley表示:"以人为中心的智能空间(people-centric smart spaces)是用来组织Gartner 2020年重要战略 ...

  5. 阿里巴巴计算平台资深技术专家“一浪”对大数据领域近几年的技术趋势和变化的看法【强烈推荐数据岗细细品!】

    导读:计算和存储分离是近几年大数据架构领域颇受关注的一个技术风向.在对刚刚过去的 2019 天猫双 11 技术进行总结时,阿里巴巴 CTO 行癫也特别提到了阿里在计算存储分离上的进展.大数据最初兴起之 ...

  6. 未来今日研究所:2019技术趋势报告

    来源:资本实验家 摘要:近期,著名研究机构未来今日研究所(Future Today Institute)发布了<2019技术趋势报告>. 该报告涉及人工智能.网络安全.隐私与数据.交通.先 ...

  7. 云计算物联网Hold住未来十大技术趋势

    本文讲的是云计算物联网Hold住未来十大技术趋势,据国外媒体报道,思科首席未来学家.首席技术学家戴夫-埃万斯(Dave Evans)称,在未来十年内,物联网.云服务和虚拟人类等十大技术发展趋势,将深刻 ...

  8. 【白皮书分享】技术重构社会供应链:未来科技趋势白皮书.pdf(附下载链接)...

    今天给大家分享京东于2021年1月发布的白皮书<技术重构社会供应链:未来科技趋势白皮书.pdf>,关注科技及技术的伙伴们别错过了呀! 本白皮书选取了人工智能.物联网.区块链.自主系统.下一 ...

  9. 凯文·凯利:流动、共享、颠覆,未来20年的 12大技术趋势

    形成(Becoming) 所有的东西都在不断升级 下雨时每一滴水会如何进入到山谷,这个路线是肯定无从了解的.但是你一定知道方向--因为有重力,所以必然向下.而类似于必然发生的"重力" ...

  10. 【观察】从新华三2022十大技术趋势,看数字化如何重塑未来社会

    众所周知,"数字经济"自2017年政府工作报告首次提及至今,已多次被写入政府工作报告,意味着数字经济已成为当下经济发展中的核心主线. 不仅如此,今年年初,<"十四五 ...

最新文章

  1. windows下安装python
  2. Android的NDK开发(3)————JNI数据类型的详解
  3. Chrome控制台使用详解
  4. 每日一问:你了解 Java 虚拟机结构么?
  5. Android --- Binary XML file line2 Binary XML file line 2 Error inflating class unknown
  6. 01丨数据结构:快速的Redis有哪些慢操作
  7. 河南科技大学c语言网络教学平台,计算机基础教学部
  8. IntelliJ IDEA 使用 LiveEdit 插件实现实时可视化前端开发
  9. 分类变量如何设置变量值的显示顺序
  10. Android之ListView优化(使用Lrucache,图片滑动时使用默认图片,停止时加载)
  11. Hive表生命周期管理
  12. 微信公众号自动回复及多客服功能实现
  13. 浅谈GOF设计模式之建造者模式(五)
  14. 从一个远程服务器的mysql数据库表的数据复制到本地电脑mysql数据库表,两张表结构一样就是复制数据...
  15. 程序猿头头(this的绑定)
  16. 从个人网站到泛生活化平台 百货之家背后的故事
  17. 为什么单例模式中的Double Check要加volatile
  18. 密西根大学-安娜堡分校计算机科学与技术,密歇根大学安娜堡分校研究生计算机系统专业排名...
  19. Android 自动化埋点:基于AspectJ的沪江SDK的使用整理
  20. 2022年海康威视实习面试 IC验证

热门文章

  1. Python---基础-运算符int和range函数
  2. HttpClient详解
  3. Android Studio真机调试,数据库sqllite时,Multiple dex files define Landroid/support/v4/R 问题...
  4. Data Warehouse
  5. [转]刚成为程序员的你需要什么技能
  6. 深入理解函数中分配内存的问题
  7. Linux/Aix日常报错整理
  8. android中bundle的使用
  9. K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》
  10. IMPORT MULTIPLE JS