商用软件开发绝不同于学校作业

Abaqus CEL分析必备:Hypermesh网格导出与inp文件合并技巧 本文详细介绍了在Abaqus CEL分析中使用Hypermesh生成六面体网格并合并多组件inp文件的完整流程。从单元类型设置(EC3D8R)、网格质量优化到inp文件合并技巧,提供了一套解决流固耦合仿真前处理痛点的实战方案,帮助工程师高效完成复杂CEL分析任务。 阅读详情

商用产品开发不同于学校作业

 文/陈尚义

今闻优快云征文,讨论商用软件开发的话题。我对此非常感兴趣,也有很多感想。

我是一名老程序员,在国内外干过20多年,头15年是做产品开发工程师,2004年开始做商用产品开发的管理工作。现将我的一些心得体会贡献出来与大家分享。

商用软件,之所以叫商用,其最大的特点就在于它是用作商业目的的。商业目的就是有人花钱买你的软件。人家掏钱买你的软件而不买别人软件的原因无外乎两点,一是你的软件能帮他解决问题,二你的软件比别人的好。商用软件是讲究成本的,是要盈利的。公司不是学校,学校要看你的知识学懂没有,公司要看投入到软件开发中的钱能否赚回来,并且要盈利。

在你动手开发之前,即使需求已经确定,作为程序员,你必须考虑软件是否能用,是否好用。下面我举几个简单的例子。

例子一, XML数据系统,是我在美国公司开发的一款商用系统,它和我们经常使用的关系型数据有某些相同之处,里面都有用户和角色的概念,用户都可以向数据库中加入XML文档,加入XML文档的用户就是这个文档的拥有者(Owner)。

下面我问你,删除一个用户的操作应该是个很简单吧,要是你开发这个模块,你怎么做?(闭上眼睛,想想看:-))可是,你想到没有,当你把一个用户简单地删除之后,那么他以前加入的那些XML文档归谁所有呢?作为商用产品的开发者,你必须要处理类似这样的问题。

还比如,关闭数据库管理系统看起来也是个很简单的操作,但实际上,当数据库被很多人都在连接使用的时候,你去关闭数据库系统,必将造成很多用户的事务(Transaction)被中断,甚至导致数据的紊乱。“停止数据库服务”模块必须要考虑这个因素。我们当时的解决方法是,当“停止数据库服务”的命令下达后,数据库要等一段时间(如10S),看看是不是所有的用户都断开了连接,如果没有用户连接(使用)数据库,停止数据库是安全的;如果还有用户在使用数据库,数据库服务可以强行停止,但在下次数据库启动时,要将紊乱的数据恢复过来。

在数据库系统开发的两个例子中,我们看出,程序员不解决这些问题,系统将无法使用。

例子二,是关于系统好不好用的问题。一个初出茅庐的毕业生开发一个功能模块,该模块负责将一些文件从服务器推送到成百上千的计算机上去。该生开发出来的软件,用户只能一次推送到一台计算机,一千台计算机,用户需要推送一千次。从理论上讲,只要用户一次输入一台计算机的名字(或IP地址),也能完成所有计算机的推送任务。但我问你,这个软件好用吗?如果允许用户一次填写所有计算机的名字,然后发一个命令去推送呢?毫无疑问,用户的使用体验是完全不一样的。实际上,用户不会去使用前一种方式的。

例子三,我们一定有过这样的体会,将小批量的文件从硬盘(比如C盘)拷贝到U盘是轻而易举的事。但当我们拷贝大量文件的时候,总会遇到很多麻烦,比如U盘满,拷贝程序被迫中止;比如源文件是隐藏的,系统提问你:要不要拷贝这些文件?如果你不在现场,系统一直在那里等,直到你看到提示、并给出明确回答为止。

类似的,我们也有一个功能模块,要将服务器上大量的数据进行备份,以防止数据丢失。数据量少在几十G、几百G,多则几个T。服务器上的数据有文件系统里的文件,也有数据库里的表。一位工程师做完了程序,简单地用几十M数据做了测试,就准备交付。

到此,你也许已经看出,商用的软件的开发绝不同于学校作业。学校作业是老师为了考察学生对课堂上讲的语言知识是否都掌握了,如语法、概念、算法、数据结构之类的,出的题目都是一些简单功能的实现,答题的结果是独立的小程序,和外界根本没有关系。除了你的老师,没有其他人会使用你的程序。学校作业也不用考虑升级、补丁、数据迁移和系统参数设置、配置管理等等。

而商用软件呢?除了运用语言的基本知识实现需求中的功能之外,还有很多事情要考虑。比如事务(Transaction)、伸缩性(Scalability)、稳定性(Stability)、可靠性(Reliability)、可扩展性(Extensibility)、安全性(Security)等等。再举一个简单的例子,如果是基于数据库的应用系统,你还要考虑数据库不可能无限制地膨胀吧,在开发完功能之外,你不得不开发另一个相应的工具,用于数据库备份和恢复。如此等等,学校作业都不可能涉及到。

我发现很多同学刚参加工作的时候,都有一种担心,担心自己的“技术”不行。这个很自然,我也是从刚毕业的时候过来的,一开始生怕自己对语言的掌握不及老员工,心想只要掌握了语言的编程技能和技巧,也就能立住脚了。作为过来人,我发现技能问题并不是想象那样中的那么可怕,反倒是编程之外的其他问题,成为商用软件的关键。

 

 

 

SkillWeaver:自主进化的Web智能体框架,通过技能发现与组合实现能力迭代——让AI像人类一样“学习-实践-积累”,构建可扩展的技能库 SkillWeaver重新定义了Web智能体的“学习-实践”循环,使其从被动执行者进化为主动进化者。通过技能的持续积累与组合,智能体不仅能应对已知任务,更能探索未知场景,为自动化与AI的深度融合开辟了新路径。随着框架的成熟与社区的扩展,我们或许正见证着下一代智能体基础设施的诞生。传统Web机器人(Web Agents)依赖预设脚本或静态规则执行任务,但面对动态变化的网站结构、复杂交互逻辑时,其能力边界明显。的闭环机制,使智能体能像人类学习技能一样,不断扩展自身能力,适应新场景。 阅读详情

相关推荐

西门子S7-1200模拟量的使用

模块类型核心参数输入信号处理输出信号配置转换原理数值范围TIA Portal配置编程要点 转换公式: 输出模拟量: 五、校准与线性化 硬件校准非线性补偿抗干扰措施数字滤波温度控制压力监控流量调节信号异常精度不足实践操作参考文档项目案例借鉴博客

weixin_51020122的博客 4774

借助开源项目,学习软件开发——开始

借助开源项目,学习软件开发——开始 原文地址:点击打开链接  http://sbbs.me/view_article/506070b108158e166400001b 2. 开始 2.1. 学习软件开发的几条主要途径 一万小时的神话 前一阵子我在网上与人讨论一个一万小时的话题。有一本叫做《异类》的书中说到这样的观点:世上本没有绝对的天才。天才也需要超过1万小时的训

xiaowanggedege的专栏 3147

DDR4 IP的用户接口

DDR4 IP核用户接口

bowen_wener的博客 1927

软件开发培训学校四大培训标准,引领行业标杆

随着互联网IT行业的发展越来越迅速,市面上的软件开发培训也在不断的增添新的软件开发培训学校,就目前来说一线城市的软件开发培训学校就已经有上千家了,在这么多的培训学校中挑选一家足够专业的学习还是存在一定难度的,对于大家的培训学校小编建议选择在北上广的地方是比较好的。 就拿北上广深的软件开发培训学校(动力节点)Java培训来说,推荐理由:Java高薪课程四大金标准 1. 科学培训标准:Java实验班测评零基础适不适合学Java 2. 课研流程标准:68道工序,超千人参与3天即可完成最新技术到课堂的输送,保证学员

weixin_49543720的博客 884

【STM32Cube HAL】输入捕获(六)——脉宽测量

1

HAHAHA 4908

【学习笔记-QGIS】 QGIS从零快速上手

安装文章参考:https://zhuanlan.zhihu.com/p/370633306。

Xcong_Zhu的博客 1万+

如何画出一张合格的技术架构图?

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

weixin_33810302的博客 651

SAP Joule for Consultants 与 Joule for Developers 全面解读

SAP推出面向不同用户群体的Joule AI助手:开发者版(Joule for Developers)专注于编码提效,嵌入开发工具链辅助生成、重构和测试代码;顾问版(Joule for Consultants)聚焦业务场景,集成SAP云应用知识库,为咨询项目提供方案设计、差距分析和实施指引。两者共享AI底座但功能侧重点不同:开发者版优化技术开发流程,顾问版加速项目交付周期。典型应用场景包括制造业云转型方案制定和ABAP代码迁移,分别展示了两版本在业务决策支持和技术实施中的价值。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 547

从学校到企业:如何转换角色?

 从学校到企业:如何转换角色? 已迎来一年一度的招聘、应聘高峰,一连几天,我都在面试,这让我联想起成千上万的应届毕业生马上就要奔赴企业工作,经历由学校到企业,由学生到员工的转变。为帮助学生尽快适应工作环境,尽快完成角色转换,根据本人实践经验,谈点想法供即将参加工作的同学参考。 一、    尽快熟悉公司的开发流程相信刚刚入职的你,一定不会忘记:尽快熟悉你将开展的业务,软件的需

shangyichen的专栏 3139

运维系列【仅供参考】: Windos10和Windos11 配置intel网卡vlan的方法

Windos10和Windos11 配置intel网卡vlan的方法

weixin_54626591的博客 477

Leads、SDR、MQL、SQL、L2C术语概念,线索创建与清洗、线索分级模型、线索流转策略、线索的统计与分析

CRM中的“Leads”是什么?笔者在文中不仅较为全面地介绍了相关术语概念,还分析了线索的创建与清洗、线索的分级模型、线索流转策略以及线索的统计与分析。

盼盼学士 5960

PHP学校招生管理网站

[含文档+PPT+源码等]精品PHP学校招生管理网站[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!开发工具:phpstorm、Visual Studio Code/HbuildX。操作系统:Windows 10、Windows 7、Windows 8。前端技术:JavaScript、VUE.js(2.X)、css3。PHP版本:php7.1.9nts。服务器:Nginx1.15.11。

2301_79424183的博客 76

手把手教你学simulink(83.2)--分布式能源场景实例:使用Simulink构建一个典型的光伏发电分布式能源系统模型

*分布式能源系统(Distributed Energy System, DES)**是指由多个小型发电单元、储能装置和负载组成的电力系统,这些组件通常分布在不同的地理位置。DES包括太阳能光伏(PV)、风力发电、微型燃气轮机、储能电池等。这种系统能够提高能源利用效率、减少传输损耗,并增强电网的稳定性和可靠性。在DES中,各组件之间的协调与控制至关重要。通过使用Simulink,我们可以模拟和优化这些系统的运行情况,研究其动态行为,并设计有效的控制策略。

MHD0815的博客 1104

django项目源码学校科研得分管理系统项目评分713

计算机毕业设计项目定制|源码定做django学校科研得分管理系统_哔哩哔哩_bilibili计算机毕业设计项目定制|源码定做django学校科研得分管理系统共计2条视频,包括:I95 712-django学校科研得分管理系统-新版、毕业论文书写-网站-IT实战课堂等,UP主更多精彩视频,请关注UP账号。该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!开发语言:python使用框架:Flask。

m0_37775035的博客 1048

android 蓝牙通讯demo

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

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

基于django的学校科研得分管理系统

[含文档+PPT+源码等]精品基于django的学校科研得分管理系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!数据库管理工具:phpstudy/Navicat或者phpstudy/sqlyog。开发工具:pycharm、Visual Studio Code、HbuildX。前端技术:JavaScript、VUE.js(2.X)、css3。数据库:MySQL 5.7.26(版本号)

qq_51780320的博客 70

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

精品PHP学校招生管理网站

该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功!

weixin_60386968的博客 81

基于flask的Python学校失物招领系统设计与实现

[含文档+PPT+源码等]精品基于flask的学校失物招领系统设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!数据库管理工具:phpstudy/Navicat或者phpstudy/sqlyog。开发工具:pycharm、Visual Studio Code、HbuildX。前端技术:JavaScript、VUE.js(2.X)、css3。数据库:MySQL 5.7.26(版本号)

qq_51780320的博客 189

[精品毕设]Nodejs实现的舞蹈学校报名网站

该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功!

m0_73612711的博客 617

精品Nodejs实现的舞蹈学校报名网站

该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功!

weixin_60386968的博客 568

Nodejs实现的舞蹈学校报名网站

该系统主要完成了个人信息修改,对学生管理、教师管理、舞蹈类型管理、舞蹈课程管理、课程报名管理、课程预约管理、签到打卡管理、舞蹈交流、系统管理等功能进行管理。《[含文档+PPT+源码等]精品Nodejs实现的微信小程序的舞蹈学校报名网站[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!利用电脑网络的这些便利,开发一套舞蹈学校报名网站,将会给用户带来更大的效益,而在管理效能上,也必然会有很大的方便!

qq_51780320的博客 403

PHP学校招生管理网站-官网

[含文档+PPT+源码等]精品PHP学校招生管理网站[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!开发工具:phpstorm、Visual Studio Code/HbuildX。操作系统:Windows 10、Windows 7、Windows 8。前端技术:JavaScript、VUE.js(2.X)、css3。PHP版本:php7.1.9nts。服务器:Nginx1.15.11。

qq_51780320的博客 109
上一篇: 程序员是这样一群人
下一篇: 安全审计概述
shangyichen
博客等级 码龄17年 37粉丝 52原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值