写点什么

从“野路子”到“正规军”的软件开发之路

  • 2019-02-21
  • 本文字数:1166 字

    阅读完需:约 4 分钟

从“野路子”到“正规军”的软件开发之路

大家好,我是宝玉。我的专栏《软件工程之美》刚刚上线,很开心看到了很多同学对软件工程的理解和期待。



有同学说是从自学编程出身的,碰到过很多的问题,和很多人一样,我也是野路子出身的,2000 年自学 Asp 编程,大学期间兼职给别人做了不少网站。但那时候拿到一个项目,上手就是写代码,没有对需求进行梳理分析,也没有设计,直接就是想到哪写到哪。


这种边写边改的模式看起来开发速度很快,但是后面遇到了不少问题。比如说因为没有分析需求,所以做出来的东西不是客户想要的结果,就得要多次返工重写,浪费不少时间;写之前也没有设计,逻辑都混在一起。最夸张的一个代码文件有上万行代码,最大的函数有一千多行的逻辑。可以想像维护这样一个项目是多么的痛苦!因为很多逻辑也没有抽象,都是重复的,修改的时候得一个个查找替换,一不小心漏了就出 bug 了。


有一件事我一直没好意思提起,就是大二暑假还给别人山寨过一个“金领办公系统”,如果你搜索一下“金领办公系统 asp 源码”估计还能找到下载,可以看看我当年作为一个野路子程序员是什么水平了,各种拼音+英文混合的命名、意大利面条式代码、重复代码到处复制……


幸运的是,我大三转到了软件工程专业,重新学习了软件工程、数据结构、面向对象这些基础课程,毕业也顺利的成为一个程序员。


经过专业学习后,对我后面成长还是帮助很大的,这个帮助主要体现在两个方面。


第一个,就是学习新技术的时候,很快能领悟和融会贯通。比如说我学过瀑布模型,后来去看微软的 MSF,去看敏捷开发,就能根据以前的理论基础,去看它们共通的地方、不一样的地方、各自的优缺点,这样很快就能掌握。


第二个呢就是做事的时候,会更有章法,有理论指导。写程序前会先注意对需求进行梳理,搞清楚产品经理想要的是什么,这样就不用有太多的反复。写代码之前我会先做设计,思考有哪些共同的模块,应该怎么抽象。


后来到飞信的时候,因为表现出色,我开始有机会去管项目。


我还记得第一次作为项目经理去管一个小项目,我一时之间还真有点懵,不知道该怎么做。好在学过软件工程,尤其对瀑布模型、软件生命周期特别熟悉,于是就尝试着按照生命周期模型,先把项目拆分成几个阶段,然后在每个阶段里面,按照模块再去细分,再去制定项目计划。


幸运的是,我还找到了当初的项目计划表,分享给大家看看。



在制定计划的过程中,也帮助我做了一个很重要的转变,那就是不再是像以前只盯着一个小模块,不是再只想着技术实现,而是站在项目的整体去思考。


这个项目后来按照我当时制定的计划进展的很顺利。如果之前没有软件工程的这些理论基础,也许我后来还会转型做管理,但是一定没有当时那么顺利,要多走很多弯路。


所以我其实一直在微博上、微信上,很多地方都说过,软件工程是大学里最重要的一门课程。


我希望《软件工程之美》专栏能帮大家重新理解软件工程,从苦钻技术不得法变得行有章法。


2019-02-21 16:265488

评论

发布
暂无评论
发现更多内容

FLStudio水果2024中文免费版下载

茶色酒

FL Studio FL Studio21

流处理基础概念-延迟和吞吐

穿过生命散发芬芳

流处理 12月月更

易观分析苏筱芮:数字科技创新场景应用为王,驱动金融与实体经济同频发展

易观分析

金融

使用声网 SDK 构建 Piloteer 助盲服务平台的最佳实践

声网

音视频 人工智能’ SDK 教程

还在用Jenkins?试试这款面向DevOps的自动化部署工具吧,贼带劲!

架构师之道

开源 编程

CleanMyMac2024值不值的下载安装?

茶色酒

CleanMyMac X CleanMyMac X2023

不掌握这些坑,你敢用BigDecimal吗?

钟奕礼

Java 程序员 java面试 java编程

深入理解RBAC

俞凡

架构 网络安全 rbac

在 Ubuntu 上安装 Discourse 开发环境

HoneyMoose

【工具使用】eclipse来回切换项目的JDK版本的方法(最全的)

No8g攻城狮

eclipse jdk jdk8 JDK7

easyrecovery2024永久免费版数据恢复软件

茶色酒

EasyRecovery15 easyrecovery2023

CleanMyMac2023mac电脑清理磁盘软件

茶色酒

CleanMyMac CleanMyMacX CleanMyMac X

同事跳槽拿下阿里P6Offer,程序员:会点基础还真不行

钟奕礼

Java 程序员 java面试 java编程

纯干货,不愧是阿里顶配版Spring Security笔记,面面俱到太全了!

架构师之道

Java spring 架构师

【Java难点攻克】「NIO和内存映射性能提升系列」彻底透析NIO底层的内存映射机制原理与Direct Memory的关系

洛神灬殇

内存映射 用户态 内核态 12 月 PK 榜 直接内存

第十届MTSC上 OpenHarmony与开发者共话开源操作系统发展新格局

Geek_2d6073

爱了!阿里巴巴JAVA岗发布,最新内部面试题(含P5-P7)

钟奕礼

Java 程序员 java面试 java编程

太卷了!5年Java程序员竟然答不出应届生字节二面?

小小怪下士

Java 程序员 字节跳动 面试

三年Crud,一周学会MySQL,助我拿到阿里研发Offer

钟奕礼

程序员 java面试 java编程 #java

模块二作业

Ryan

高性能 构架

SpringBoot+Mybatis+Mysql项目构建

@下一站

程序设计 12月日更 12月月更 springbootdemo

我不写单元测试,被批了

钟奕礼

Java 程序员 java面试 java编程

作者推荐 | 【分布式技术专题】「架构设计方案」图解学习法总结集群模式下的各种软负载均衡策略实现及原理分析

洛神灬殇

分布式架构 负载均衡算法 12月日更 12 月 PK 榜

分布式计算MapReduce究竟是怎么一回事?

JAVA旭阳

Java 大数据

Python抓取B站"卡塔尔 世界杯"的视频数据

勇士

Python 爬虫 B站 世界杯

线性表→顺序表→链表 逐个击破

C++后台开发

数据结构 linux开发 Linux服务器开发 顺序表 C++开发

没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

钟奕礼

Java 程序员 java面试 java编程

理解Java的强引用、软引用、弱引用和虚引用

钟奕礼

Java 程序员 java面试 java编程

基于ANTLR的Mysql语法解析

AiDaddy

MySQL ANTLR 语法解析

发布!第五届“强网”拟态防御国际精英挑战赛精彩抢先看!

科技热闻

易观分析《中国智能客服供应商实力矩阵2023》研究报告正式启动

易观分析

智能客服 易观分析

从“野路子”到“正规军”的软件开发之路_技术管理_宝玉_InfoQ精选文章