回顾我的开发经历(1)

news/2025/1/22 14:32:01/文章来源:https://www.cnblogs.com/Rong-/p/18685820

二十多年前,刚从大学毕业,对软件开发认识非常有限,掌握的技能也不多。

第一份工作

第一份工作是搭建一个BBS论坛,模仿当时流行的三夫户外论坛。

那时,对知识如饥似渴。由于买不起书,我常常去书店找到相关的ASP书籍,用钢笔将代码抄写在笔记本上,第二天再输入到电脑中。结合手头的书籍,认真学习ASP,虽然辛苦,但那段时光充实而愉快。

在这份工作中,我设计了一个不限层级的论坛帖子浏览树结构,这成为我职业生涯中引以为豪的成果之一。采用添加层级号和动态分级的方法来实现。同时,这也是我第一次接触**.NET和C#**,并学会了安装和初步使用,为后续的技术发展奠定了基础。

第二份工作

第二份工作是开发一个综合钻井平台,也是第一次在真正的项目中从事客户端开发。

印象最深的是我们团队曾在大山里进行封闭开发。

在这段时间里,重新阅读了数据库相关的书籍,加深了对数据库的理解。

后来,参与了对日外包项目。外包软件的要求非常严格,甚至包括Excel的格式。在这期间,我的Excel水平逐渐提高。

对日开发的流程非常正规和严格,我用心学习和体会,对计划、量化和评审有了深刻的理解。例如,做计划时要有计划时间、实际时间以及两者的差距;写代码时,错误率是可以量化的;评审时,要先了解上下文,按照上下文进行评审,评审后要有跟进;如果出现问题,除了解决当前问题外,还要排查是否有类似问题存在,找出来并解决,不要留到以后。这些经验在后来的CMMI3认证中起到了很好的作用。详见博客CMM的感想和对CMM的理解。

在做对日外包期间,对Excel和Word的使用更加熟练。印象比较深的是,对日外包要求写详细设计,并且要求写单元测试。

当时对单元测试不太理解,甚至对私有函数都进行测试,想尽各种办法测试。现在回想起来,虽然有些脸红,但这是我成长的必经之路。后来,对单元测试有了深入的理解,并将其视为开发人员的“登山杖”。在多个公司中,即使我不是唯一的单元测试倡导者,也是少有的实践和推进者。

面向对象编程的启蒙

在此之前,对面向对象编程的理解还很浅薄,写代码时往往是想到哪写到哪。接下来的几年中,我逐渐对面向对象编程有了深入的了解,并开始关注软件开发过程和业务。

代码生成器

工作几年后,第一次接触到了代码生成器。当时的工作主要是使用C#进行增删改查操作,代码生成器非常有用。于是,主动维护这个工具。在此后的十几年中,我逐步完善和丰富这个代码生成器,从中学习到很多技术,也得到了很多感悟。我将这段经历整理在回顾我的软件开发经历:我与代码生成器的涅槃之路。

编写代码生成器时,《C# Primer Plus》这本书让我受益匪浅。边读边用边思考,有时想法走在前面,再通过阅读寻找技术支撑;有时阅读走在前面,再从代码生成器中找到合适的使用点。这种阅读体验非常奇妙。

通过编写代码生成器,对重构有了深入的理解和实践,并在此后的工作中成为重构的积极实践者和倡导者。

在这段时间里,还有几个让印象深刻的事情:1. 试图理解和编写详细设计,这是当时的理解和感悟对详细设计的理解,后续还会对详细设计有新的理解和感悟。2. 试图理解和编写概要设计对概要设计的初步理解。

敏捷开发的实践

这段时间,正在阅读《敏捷软件开发:原则、模式与实践》,结合工作中的感悟,感觉这本书说得太好了,很多问题与我们的现实非常相似。推荐同事们一起阅读,并尝试在工作中应用。我们先实现无逻辑的前端页面,实现跳转。通过前端页面的演示,我们对业务有了深入的理解,再实现功能,取得了很好的效果。

这段时间,也尝试带领团队做业务,感触最深的是接触客户、抓住业务重点,这是驱动团队的有效手段。坐在办公室研究竞品,也需要用心,带着想法去研究,多交流,否则会流于表面,团队也会很被动,没有动力。这是当时的一些思考软件开发中的一些想法。

书籍的影响

开始阅读一本对我影响很大的书——《程序员修炼之道--从小工到专家》。当时看这本书时并没有太多收获,但在未来的几年里,会反复阅读这本书。在工作中,书中的很多观点会不自觉地浮现在脑海中,例如:石头汤与青蛙、DRY原则、正交性、不找借口等。

这段时间,我还阅读了另一本书《.NET框架设计:深入理解公共语言运行时(CLR)》。通过阅读,我对.NET有了深入的理解,掌握了MIL、垃圾回收机制、.NET内存布局、反射、程序集和元数据、异常处理等。现在想来,这本书对我的ORM框架帮助很大。

此外,我还阅读了《数据仓库》,感觉写得很好,很有收获。虽然在后续工作中并没有实际应用,但它的很多思想在我设计数据库时不知不觉地用上了。我还为自己写了一个记录花销、分析花销记录的程序,很多设计思路就来自《数据仓库》。

国家级预研项目

接下来的工作是一个国家级预研项目,类似于现在的高德地图导航。通过综合道路、交通、天气、施工等各种信息,为出行者提供精确的出行指导。

那个时候还没有滴滴和高德。系统非常复杂,各类数据也很多,最初搞得我焦头烂额。

后来,想起大学时学到的管理信息系统中有类似的部分,于是重新阅读了管理信息系统的课本,发现其中的数据流图特别适合梳理系统。

尝试为这个系统画数据流图,虽然现在想来画得并不好,但当时我用这个图理清了业务,也设计了系统,感觉非常明了。

同事们对此也非常肯定,认为我前一阵工作进度不明显,用了数据流图后,效果显著,能够清楚地跟别人讲解做什么、怎么做。这是一次非常好的体验。

C++的初次尝试

在做这个项目的过程中,我需要编写一个导航程序,这是我第一次使用C++。导航程序是用C++写的Windows程序,有界面,但没有使用MFC。

我根据自己编写代码生成器的经验,使用面向对象的方法,写成了一个类似MFC的程序,通过配置文件配置界面,通过继承和观察者模式处理事件。在当时看来,还是比较满意的。由于初次使用C++,很多技术不太懂,经常请教其他同事,也拿这个程序与同事交流,得到了同事的肯定。

在这个程序中,面向对象编程发挥了它的效力,但也有一些问题我当时没有理解到。记得聊天时,有同事说他现在喜欢写类似的C程序,感觉看起来流畅,不喜欢C++的跳来跳去。当时我不理解,现在有了新的感悟,虽然不完全赞同,但不过度使用面向对象观点是正确的。在后来的工作中,我会有意进行尝试:使用面向对象;不使用面向对象;接口不使用面向对象,实现不刻意回避面向对象等。

这段经历让我深刻体会到,技术的学习和应用是一个不断探索和调整的过程,每一次尝试都为未来的成长奠定了基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/873240.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenWrt 挂载 SMB

通过OpenWrt挂载smb存储,并再通过smb分享(实现分布分享统一入口?)添加用户 依赖 opkg install shadow-common opkg install shadow-useradd添加 smb 专用用户 useradd YOUR_SMB_USER_NAME将用户与 smb 服务关联 smbpasswd -a YOUR_SMB_USER_NAMEOpenWrt 设置 挂载 SMB 网络共…

高效批量工作流导入及脚本上线,利用DolphinScheduler接口轻松实现

实现了批量生成DolphinScheduler的任务,当导入时发现只能逐个导入,因此通过接口实现会更方便。 DolphinScheduler接口文档 DolphinScheduler是有接口文档的,地址是 http://IP:12345/dolphinscheduler/swagger-ui/index.html?language=zh_CN&lang=cn不过这文档写的比较简…

IDEA如何打开每日提示?

前言 大家好,我是小徐啊。我们在使用IDEA开发Java应用的时候,经常需要使用IDEA的各种各样的技巧,提示。这个在每次IDEA打开的时候,会自动弹出来。但有时候,我们可能不小心把这个提示设置成关闭了,导致后面打开IDEA的时候,再也不弹出这个提示了。这样我们可能就不能很全面…

如何用vscode打开obj、glb文件,查看3D文件

方案1:安装插件 3D Viewer for VSCode,安装完可以查看obj 但是不懂为啥是白色的 glTF Tools,安装完可以查看gltf 启动位置在右上角:白色小山的图标 这个效果不错,看起来比较舒服。 但是gltf从哪里来呢? 首先我们有一个glb文件,右键它,点击倒数第二行的“glTF: import …

时间序列平稳性的双重假设检验:KPSS与ADF方法比较研究

在进行时间序列分析之前,确定序列的平稳性是一个关键步骤。平稳性指的是时间序列的统计特性(如均值和方差)在时间维度上保持不变。本文将详细介绍如何运用 KPSS 检验和 Dickey-Fuller 检验来验证序列的平稳性。这两种检验方法基于不同的统计假设:KPSS 检验的原假设是数据非…

Svelte 最新中文文档翻译(4)—— 符文(Runes)下

前言 Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

固定测斜探头 土体位移变化数据支持 助力工程监测 无线传输

固定测斜探头 土体位移变化数据支持 助力工程监测 无线传输FI系列固定测斜探头是一款专为土体内部位移变化监测而设计的高精度测量仪器。无论是深基坑开挖、地铁地基、公路地基、挡土墙、坝体、尾矿库还是山体滑坡等工程项目,我们的测斜探头都能提供准确可靠的数据支持。该测斜…

研发效率低下?试试这些改进方法

最近这段时间,互联网上发生了很多大事:极越汽车突然宣布破产解散;养乐多上海工厂关闭;网传海信大规模裁员;……2024年即将结束,如果给2024年打个标签,有人说是“愈加魔幻”的一年,有人说是“挑战激增”的一年,也有人说是“生存指数飙升”的一年。 根据裁员追踪机构lay…

复现一下最近的湘岚杯的pwn部分

前言 pwn萌新一枚,这次湘岚杯pwn题只出了两道,后面orw写了exp但是一直打不通,后来发现思路错了。宇宙射线这题很新颖,虽然比赛期间没有做出来,但是赛后复现时学到了很多东西,还是很开兴的。题解过程 ret2text签到 解题思路: ​ 这题是pwn题中的签到题,题目描述也很清晰…

Nature Methods|可解释机器学习在计算生物学中的应用与陷阱

在计算生物学和生物信息学领域,机器学习技术正迅速改变着我们对生物系统的研究方式。然而,随着模型复杂度的增加,如何解释这些模型的行为并从中提取生物学意义,成为了一个亟待解决的问题。 最近,卡内基梅隆大学的Jian Ma和Ameet Talwalkar团队在《Nature Methods》杂志上发…

manim边做边学--淡入淡出变换

今天介绍Manim中用于淡入淡出变换的3个动画类:FadeToColor:聚焦于对象颜色的平滑转换,通过渐变增强视觉效果 FadeTransform:实现不同对象之间的渐变替换,让元素转换更加连贯 FadeTransformPieces:突出将对象碎片化并对各部分单独变换,适用于复杂物体的分解重组这三者都在…

抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞

抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞 代码链接不说废话,上代码!!! get.py # get.py import urllib.request import urllib.error import urllib.parse import json# 抓取网易云音乐指…