面向需求编程才是常态,聊聊我的经历

AI+生物医学交叉研究:计算药物设计、生物信息学与课题组申请指南 人工智能与生物医学的交叉融合正成为前沿科技热点,其核心原理是利用机器学习、深度学习等算法处理复杂的生物医学数据。这一交叉领域的技术价值在于能够显著提升新药研发效率、加速疾病靶点发现,并推动精准医疗的发展。在应用场景上,计算药物设计、生物信息学与化学信息学是典型代表,它们通过分子表征学习、性质预测和生成式模型等技术解决实际问题。本文聚焦于这一交叉领域的研究实践,特别介绍了课题组在计算药物设计、生物信息学与化学信息学方向的具体工作,为有志于从事相关研究的同学提供了从研究方向理解到博士申请的全方位指南,其中涉及生 阅读详情

这篇文章中的内容在几年前曾经发过,之所以今天整理一下再发一次,是因为最近不少有人问我类似的问题:

工作无聊,主要是增删改查。

现有项目很烂,在上面修修补补

没有从事过高并发,大流量的项目,简历没有亮点

......

想想我自己这10多年的开发经历,主要做企业应用开发,业务复杂,业务逻辑都不讲逻辑,要求稳定性,很少有机会去设计高并发,大流量的项目。连从头开始一个项目的机会都不多,大部分时间都是在现有项目的基础上面向业务,面向需求做开发。

我想这才是中国软件业的常态吧!在这种情况下,抱怨没用,跳个槽估计业差不多,还不如自己多思考,看看在工作中怎么搞点事情,提升自己的价值,我举几个我自己的案例。

01

我原来做过一段税务系统的开发,公司有一个自研的平台,包括了表单设计和工作流设计,把底层的Java EE都给封装起来了,在上面做开发,让人很绝望,什么底层都接触不到。

实现了一些税务的具体操作以后,我就慢慢的发现了这些操作的共性,但就是不知道该怎么描述出来, 思考了很久也没有头绪。

有一天骑自行车回家的路上, 突然间就“顿悟”了:奥,这些税务操作其实就是点(x,y)在二维坐标系下的移动 !

第二天回去就把这个东西整理成文档, 并且把代码也做了改写,因为有理论指导,代码变的特别简单,很健壮--- 之后这就成为我简历中的亮点了。

一个月后有个老外来北京, 看到了我抽象出来的关于税务的操作,吃惊不已, 一直在问:这是你搞出来的吗?

02

使用那个自研平台的工作流开发出来的程序,必须得部署到app server中才能测试,并且只能手工测试,费时费力,我当时就想能不能像Junit那样写好脚本,然后自动化地去测试啊,把这个想法给Leader说了,他非常支持,就按照这个想法去实现, 后来发现和数据库紧密耦合,难以完整实现。虽然如此,这也是我工作中的亮点了。 

值得一提的是,这些亮点最终都指向了业务目标:更好更快地实现需求,而不仅仅是show 技术。技术是为业务服务的,仔细想想公司的业务,流程,用的工具,从技术角度好好想想,是能发掘出东西来的。

03

我曾经在一个研究所工作过几年,虽然有开发任务,但是很少有进度的压力, 在那里是很清闲的。

当时在做一个小数据集成项目,需求明确, 系统也不复杂 ,开发着也挺无趣的, 我就琢磨着能不能搞点别的事情, 后来就发现了敏捷软件开发, 对里边的实践非常认同,于是就学习了单元测试,TDD(测试驱动开发),结对编程,用户故事 等实践,  在项目中也尝试着做了应用, 尤其是TDD, 的确不错。

再后来就进了IBM, 没想到几年前种下的种子开花结果了。IBM 也开始提倡敏捷转型,于是我几年前的积累就用上了, 不仅仅帮助本团队做了敏捷转型, 还走出去帮助工行、农行、华为、鼎桥等公司做了敏捷咨询, 不但进一步提升了水平, 也为自己的简历增光不少。

04

刚进IBM的时候做了一个极其简单的小项目, 就是用户登录, 然后显示一个Applet (没错,就是上古时代的Applet), 这个Applet 基于IBM 的Samtime , 实现了让用户和公司的客服实时通信功能, 类似于QQ, 但是只能发文本消息。

后来由于Sametime升级, Applet也要更新, 我就接触了Applet的源码,做了改动, 一切看起来没什么大不了的, 很正常。

唯一的不同是我多做了一点工作, 深入的研究了Sametime 的SDK, 带来了两个重要的好处:

(1) 在developerWorks上发表了第一篇中文的sametime sdk文章,后来形成了一个系列。

这一系列文章被很多人看到, 并且直到6,7年以后,我都离开IBM了,还有人发信问我相关的问题, 影响力应该是很深远的。

(2) 彻底理解了基于事件的编程模型 , 因为Sametime SDK的编程就是基于事件的, 等到几年后Node.js 开始出现并且流行开来时, 我发现它和当年的Sametime 编程模型几乎是一样的,都是异步的、事件驱动的, 就像喝凉水一样轻松掌握了, 后来写了一篇文章《Node.js:我只需要一个店小二》

看完了我的故事,也许你有所触动,像那些高并发、大流量的项目不是每个人都能接触到的,面向需求编程才是常态。

在开发过程中,建立对整个系统端到端的理解,在业务、流程、工具等领域多想一想,肯定能发现让自己闪光的、有价值的点。

(完)

我是刘欣,15年以上开发经验,前IBM架构师,擅长用故事讲解技术。我建了一个知识星球,除了公众号文章以外,平时的所思所想都会发在其中,交流技术,分享资料,聊聊职场的经验和教训,欢迎加入,和4000多人一起学习进步。

Unity、Unreal Engine、Godot三大游戏引擎深度对比与实战选型指南 游戏引擎是现代游戏开发的核心框架,它封装了底层图形渲染、物理模拟、音频处理等复杂系统,为开发者提供了高效的创作工具。其工作原理在于通过编辑器、脚本系统和资源管线,将代码逻辑与美术资源整合成可交互的应用程序。在技术价值上,引擎的选型直接决定了项目的开发效率、最终表现力及跨平台能力。对于独立游戏、移动应用或AAA级大作等不同应用场景,选择合适的引擎是项目成功的基石。本文聚焦于Unity、Unreal Engine和Godot这三大主流引擎,从开发体验、2D/3D支持、渲染能力等维度进行深度对比,并结合移动端开发 阅读详情

相关推荐

AI Agent 从玩具到生产力:开源框架如何解决真实业务自动化难题

最近在尝试把 AI Agent 从“玩具”变成“生产力工具”时,我遇到了一个很有意思的现象:当我把市面上那些宣传得天花乱坠的商业 AI Agent 平台一个个拿来,试图解决一个具体的业务自动化需求时,要么是流程卡在某个奇怪的节点,要么是成本高得离谱,要么是灵活性差到让人想砸键盘。折腾一圈下来,最后真正能让业务逻辑稳定跑起来、并且能让我按自己想法深度定制的,竟然是一个开源项目。 这听起来有点反直觉。商业平台不是应该更成熟、更稳定、服务更好吗?但现实是,很多商业 AI Agent 平台为了追求通用性和易用性,把

weixin_30911451的博客 628

C++入门实战:从Hello World到指针、内存管理与面向对象编程

编程语言是构建软件系统的核心工具,其设计哲学直接影响着程序的性能、控制力与可维护性。C++作为一门支持多范式编程的系统级语言,其核心价值在于提供了对硬件资源的直接操控能力与零成本抽象。通过理解内存模型、指针机制及面向对象等底层原理,开发者能够编写出高性能、高可靠性的关键系统。这一技术特性使其在游戏引擎、高频交易、嵌入式开发等对性能有极致要求的场景中不可替代。本文以**指针**和**内存管理**这两个核心概念为切入点,系统拆解了C++的学习路径与常见陷阱,旨在帮助初学者建立正确的系统思维,避开‘段错误’、‘内

weixin_30753873的博客 394

Java开发者进阶架构师:从核心基础到分布式系统实战

Java作为企业级应用开发的核心语言,其技术体系的构建始于对语言本质和计算机原理的深刻理解。深入掌握面向对象编程思想、集合框架源码及并发编程模型,是理解现代高并发应用的基础。在此基础上,JVM的内存模型与垃圾回收机制构成了应用性能与稳定性的底层支柱。这些核心技术原理共同支撑起分布式系统架构,为解决数据一致性、高并发访问和系统可用性等工程挑战提供了理论依据。在实际开发中,诸如缓存穿透、雪崩等典型问题,以及线程池配置不当引发的OOM故障,都是检验开发者对原理掌握程度的试金石。本文聚焦于Java开发者如何通过夯实

weixin_34267123的博客 345

从C到Python:七代编程语言性能与应用场景深度解析

编程语言作为开发者与计算机沟通的核心工具,其发展历程体现了抽象层次的不断提升。从直接操作硬件的机器语言,到面向过程、面向对象的高级语言,再到如今动态类型的脚本语言,每一次演进都旨在降低开发者的认知负担,提升编码效率。在底层原理上,编译型语言通过编译器将源代码一次性转换为机器码,实现近乎零运行时开销的高性能执行;而解释型语言则通过解释器逐行解析执行,牺牲部分性能换取跨平台和快速迭代的灵活性。这种性能与效率的博弈,直接决定了不同语言的技术价值与应用边界。例如,C语言凭借其接近硬件的控制力和极致性能,在操作系统、

anchang7456的博客 370

【PADS-开发指南】

馒头破戒大师

sinat_23896491的博客 3215

Ventoy引导自定义菜单配置详解:手把手教你用ventoy_grub.cfg启动硬盘里的Manjaro

本文详细解析了Ventoy引导自定义菜单配置方法,重点介绍如何通过ventoy_grub.cfg文件启动硬盘中的Manjaro系统。从Ventoy与GRUB2的协作原理到具体配置步骤,包括分区布局设计、关键参数解析及常见问题解决方案,帮助用户实现多系统引导的灵活管理。

weixin_28738165的博客 299

面向老板编程 No.117

我:这需求没法做。老板:能做。我:好嘞。场景一A项目里有一个非常紧急的线上问题,需要你立刻实时响应,但是这个项目并不是你老板的,你们是作为资源进去支持的。这时候你老板过来...

u010459192的博客 944

c++11 无锁队列

/************************************************************************* > File Name: lockfreequeue.cpp > Author: > Mail: > Created Time: Wed 08 Aug 2018 11:38:08 AM CST ********...

qq_35728402的博客 5021

面向领导编程,一年连升三级!

< END >

程序员小灰的博客 788

【数据挖掘】心跳信号分类预测 之 特征工程 —— 学习笔记(三)

三、特征工程 3.1 看书 常言道,“巧妇难为无米之炊”。在 ML 中,数据和特征将作“米”,模型和算法则为“妇”。若无数量充足的数据、良好表示的特征,再强大的模型也难以得到满意的结果 (garbage in,garbage out)。对于 ML 问题,数据和特征往往决定了结果的上限,而模型、算法的选择及优化则是在逐步接近该上限。 特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。在本质上,特征工程是一个表示和展现数据的过程。在实际中,特征工程旨在去除...

闻韶 3358

WPS JS宏智能识别代码段并设置样式(完整可用版)

之前,我们已经经历了多次迭代,解决了许多问题,比如识别代码块、处理多行导入、调整样式等。现在他们需要一份全面的文档来解释整个代码的结构和工作原理。(5)智能行分析(含URL和注解检测优化)function analyzeLineEnhanced(rawText,trimmedText,codeSymbols,codePatterns, singleLinePatterns)该解决方案在保持高性能的同时,提供了良好的可扩展性,能够适应不同组织的代码规范需求,是WPS生态中专业文档处理的创新实践。

搏博的专栏 1822

以热爱为前提写代码-读码农翻身有感

阅读码农翻身有感

abjtxf的博客 486

渗透测试之哥斯拉实战

可以直接在这里使用meterpreter命令进行对服务端的控制。选择目标 - 添加,配置连接信息,之后测试连接成功!php的shell功能如图。先要进行数据库的配置信息。可以直接在这里打包全站。

大河之犬的博客 2488

《码农翻身》第二章 Java帝国 思维导图

小伙伴们大家好,我把曾经做的《码农翻身》第二章 Java帝国 思维导图放上来了。 使用软件是MindMaster,这个软件的好处是, 非RMB用户可以插入图片(另一款思维导图软件XMind,要成为会员之后才可以插入图片), 文件链接已经放上来啦 emmx格式的: 链接:https://pan.baidu.com/s/1YXQfKj0qaZt7pO97QF03wA 提取码:prta 复制这段内容后打开百度网盘手机App,操作更方便哦 ——————————————————————————————————————

weixin_44857476的博客 1043

SI案例分享--FPC(柔性电路板)信号仿真

设计高性能的柔性PCB时,由于采用了网格地的参考面构造,因此,需要按照特定的结构进行布局,才可以保证所需目标阻抗的稳定性,该结构的配置过程称为“Hatch Configuration”,合理的参数配置将有助于得到满意的设计效果。

一只豌豆象的博客 2826

【AUTOSAR-CanNM】-3.1-如何让ECU发出的首帧是NM帧(Tx Nm报文先于Tx App应用报文发出)

如何让ECU发出的首帧是NM帧(Tx Nm报文先于Tx App应用报文发出)

「汽车电子助手」的博客 4723

从入门到热爱:聊聊陪伴无数程序员成长的Java

本文探讨了Java语言的特点与学习方法。Java作为一门严谨规范的编程语言,其优势在于面向对象设计、跨平台兼容性和企业级开发生态。文章指出,学习Java的关键在于培养面向对象思维,重视编程规范而非简单语法记忆,并通过实践积累解决问题能力。文中提供了学习建议:夯实基础概念、理解设计原理、坚持动手实践、接受调试过程,强调Java培养的工程化思维是程序员的核心竞争力。尽管入门容易精通难,但Java的稳定性与规范性使其成为值得长期投入的"常青树"语言。

2601_95470093的博客 236

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

编程语言选择指南:从场景需求到学习路径的理性决策

编程语言作为软件开发的基石,其本质是解决特定问题的工具。从底层原理来看,不同语言的设计哲学源于对特定时代技术痛点的回应:C语言提供了贴近硬件的高级抽象,Java通过虚拟机实现跨平台部署,Python以简洁语法降低编程门槛,Go内置并发模型应对云计算需求。这些设计差异决定了各自的技术价值:Python在数据科学和快速原型开发中占据优势,Go擅长构建高并发后端服务,Java则以其稳定生态支撑企业级应用。在实际应用场景中,选择编程语言应遵循四步决策框架:首先明确开发目标与场景,其次评估语言生态系统与就业市场,接着

weixin_30457465的博客 439

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

《嵌入式工程师防秃指南:当你在迷茫时该做的10件事》

今天我们不聊寄存器配置,不聊RTOS调度,我们来聊聊每个嵌入式工程师都会经历的**"迷茫期"**——学51单片机 → 学STM32 → 学RTOS → 学Linux驱动 → 学AI加速 →。(本文由一位曾经因为焊反芯片而怀疑人生的工程师撰写,祝大家少掉头发,多调通代码!大家好,我是那个曾经对着示波器发呆3小时,最后发现是电源没打开的嵌入式老司机。硬件问题比软件问题多,先检查最简单的部分(电源、接线、焊接)软件说:"我代码没问题,硬件有问题!硬件说:"我电路没问题,软件有问题!

2403_88016485的博客 867

计算机专业选择指南:从行业现状到个人发展路径

计算机科学作为一门基础学科,其核心在于培养计算思维和解决问题的能力。这种思维模式通过分解、抽象和算法设计,能够应用于解决商业、管理等复杂问题。随着技术快速迭代,行业对人才的需求从基础编码转向系统思维和工程实践能力。当前计算机教育面临理论与实践脱节的挑战,导致毕业生项目经验和工程能力不足。掌握Git版本控制、Linux命令行、调试部署等工程技能,成为从学生向工程师转变的关键。对于具备逻辑思维、持续学习能力和技术热情的人,计算机专业仍能提供跨界融合、创业开发等多元发展路径。

weixin_30800987的博客 474

太酷辣!程序员的技术测评利器免费用!

最近市场行情众所周知的差,追求降本增效已经是企业常态,企业希望不花太多成本就能快速招到“好用”的人才。这对计划招人的技术 Leader 来说也是不小的挑战:招聘过程要低成本,还要快,而且能精准识别合适的人才,这不是一件容易的事儿;传统面试用八股文、算法题,没法实际测试代码能力,招进来的人可能代码基础不牢、开发习惯不好;面试过程中想出一些实际工作中会遇到的技术问题,但出题太费时间,测评过程中也没有好...

程序员小灰的博客 139

2025年面试软件推荐:三款工具实测,谁才是真正的“面试外挂”?

面试紧张导致明明准备过的问题却答不上来?推荐三类面试辅助工具,根据需求选择合适工具,让真实能力不被紧张掩盖。

li313546的博客 678

开发、运维、测试、实施四大IT岗位深度解析:如何选择最适合你的技术职业路径

在软件工程领域,开发、运维、测试和实施是支撑产品生命周期的四大核心职能。开发聚焦于通过编程语言和算法构建功能,其价值在于创造与逻辑实现;运维的核心原理是保障系统稳定性与自动化,通过监控、容器化和可观测性技术确保服务高可用;测试则基于质量保障理论,运用自动化框架和测试用例设计来验证功能与性能,守护产品质量。这些技术岗位共同构成了现代DevOps与持续交付体系,其技术价值体现在提升交付效率、保障系统可靠性和优化用户体验上。当前,随着云原生和AI技术的普及,运维岗位需掌握Kubernetes和AIOps,开发岗位

weixin_28836875的博客 280

构建弹性基因(genflex):现代软件系统的弹性设计原则与工程实践

在分布式系统与微服务架构中,系统的弹性和容错能力是保障高可用性的核心。其基本原理在于通过设计模式与工程实践,使系统能够自动应对流量波动、依赖故障等不确定性。这一技术价值体现在提升系统韧性、降低维护成本与保障业务连续性上,广泛应用于电商、金融、云计算等对稳定性要求极高的场景。本文聚焦于“弹性基因”(genflex)理念,深入探讨了如何通过配置与代码分离、面向失败的设计等原则,结合熔断器、服务发现、容器化等具体技术,构建具备内在适应性的现代软件系统。文中将具体分析熔断器与配置管理的典型陷阱,并提供可观测性建设的

444

嵌入式开发自学指南:从C语言到RTOS与Rust的实战路径

嵌入式开发是计算机系统与物理世界交互的核心技术领域,其本质在于通过微控制器或微处理器执行特定任务,实现对硬件设备的直接控制。其技术原理建立在底层硬件认知、高效的编程语言以及实时操作系统之上,通过直接操作寄存器、管理内存和处理中断来确保系统的可靠性与实时性。这一技术价值在于能够构建高可靠性、低功耗且响应迅速的系统,广泛应用于物联网、汽车电子、工业控制及消费电子等场景。对于初学者而言,掌握以C语言为核心的编程基础、理解ARM Cortex-M系列微控制器架构,并熟练使用如VSCode配合GCC和OpenOCD的

weixin_30482383的博客 528
上一篇: 三个视频教你如何找到另一半
下一篇: 曾经废寝忘食学到的技术,现在都没用了......
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值