今天给大家说说小崔的事儿,说说小崔做软件开发这一行的事儿。
小崔现在的本职工作是在软件公司做管理,核心开发语言是Java。
年入行,先用ASP语言开发网站、Delphi开发PC软件、后用C#做Web开发,07年开始接触Java,到现在10年了。今天把这些旧事翻出来,其实也没有什么经验可言,只是由来已久的想把这些经历记下来,却一直没有认真整理,今天算是一个灵光一现,既然动笔了,便写成了一篇文章。
车床
大学期间,我的专业是机械,画过图纸、打过铁、铸造过模型飞机、造过小榔头。就是没有正经八百的学过编程,我这人其实很喜欢研究一些神奇的知识,对于死板的东西就没有什么兴趣。因此我对机械这些东西完全没有兴趣,却一门心思喜欢软件开发。
大学期间就总泡在图书馆看计算机方面的书,那时候身边没有做软件开发的朋友,老师们都是专业做机械的,对计算机编程也是不懂的。因此学习起来是完全没有头绪,根本不知道应该如何入门,每次去图书馆都是随便找一本书就看,看了半天也不知道到底说了点儿什么,也不知道那里面的知识怎么用于实践。
大学图书馆
其实现在想想,我们大学图书馆的藏书量还是很大的,书的质量也是非常高的,但作为一个IT菜鸟,没有一点儿的基础,这么看书完全摸不到门径的。可以想象这样的学习效率也是非常的低的,基本就是保持了读书的兴趣,但对知识的摄入其实是少的可怜。
在这个过程中,靠着小车不倒只管推的精神,我软件硬件的书都看了些。让我最感兴趣的还是编程语言类的图书,当时自己还是挺明确自己以后想做软件开发的。但是具体用何种语言就不知道了,也不知道外面公司都用什么开发语言。当时已经知道的语言有Basic、C/C++、Dephi,还有Java,由于Basic是最简单的,其实那会儿自己练习的时候更多的是学习Basic。当时记得自己写过简单的计算器,还练习做过简单的画布类的程序。
语言无所谓
现在想想,学习这种事儿都是在犹豫中让时间错过了,当时每本书拿到手里都只看前两章,后面就难了,或者需要上机练习了,就懒得继续学习。给自己的借口是到底哪种语言好呢?当时看不起Basic语言,觉得这个太low了。就总想学C,但C又太难了,根本学不进去。其实真正培养自己编程的感觉语言,还就是Basic那几个特别简单的小练习,让自己知道了逻辑数学的核心就是判断,编程只有顺序、分叉和循环三种流程。
所以,如果有新人看到这篇文的话,奉劝一句,别犹豫应该学习哪个语言,无论是入门还是精通,语言都无所谓,所谓触类旁通,学会一种再学别的是很容易的。
入行
大学毕业后,我没有做机械这行,直接去找的软件开发的工作。
但是这时候才发现,自己真是对软件开发一窍不通,面试都通过不了。
这时候才痛下决心得认真学门语言了。这时候也不挑了,就找简单容易上手的语言。
当时选的是Delphi,觉得这个语法简单,Delphi的IDE也好用,做windows应用开发很方便。
这时候还学习了SQL语言,其实自己根本不知道主动学习数据库,在面试的时候被问到会SQL吗?答曰不会。被拒。然后才开始学习SQL的。
当时学习条件很艰苦,我舍不得买书,就每天骑自行车跑图书大厦,白看书,一看就是一天,中午楼下买个烧饼吃。晚上回家后在电脑上试验,写点儿小练习。做练习也很困难,年初的网络环境很差,拨号上网,网速也就是3K/秒,相当于2G时代的手机上网速度,并且网上资源很少。
就这么学了1个多月吧,面试到一家公司,是本地一家电脑城的网站部,做网站。
总结这段时间自学,基本来说大学时期看了好多的书还是有用的,对计算机编程多少有点儿感觉,所以一个月的自学就入门了。
只是入门后也很尴尬,学的是Delphi,尽管靠这个找到了工作,但工作了十几年了,几乎没怎么用Delphi写过软件。
ASP做网站
在第一家公司做网站,发现与自己想想的差别很大,以为有个网站部,10来个开发人员,咱可以跟前辈们学习学习。
实际这家公司网站部就空有其名,以前的技术人员辞职走了,我去了就是唯一的程序员。
然后一看人家的网站,发现是我从来没见过的语言--ASP。这是微软早期为了简单的小网站开发的一种Basic语法的脚本语言,可以非常快速的建站。可以理解为PHP的简化版,也不准确,应该是PHP的超级简化版,简化到最简单。
这真是一个非常简陋的网站,用一种非常简陋的语言。我当时却不懂,因为从来学软件开发都是打算做windows应用程序,这是第一次接触web应用程序。
之前我仅仅接触过web相关的HTML,那时候看了一本介绍HTML的书,也就读了1个小时,感觉这种标签式的语言很简单。
这时候算是从头学习ASP,当时感觉压力山大啊。
当时办公室有一本介绍ASP的书,我就看那边书,然后读网站的源代码。硬着头皮搞了3天左右,居然感觉通透了,可以修改网站的bug了,网站有新功能要增加,我也可以自己开发了。
就这样,开始了我ASP开发的两年生涯。
凭借ASP开发的技能,两年内又换了两家公司,做了好几个网站。
在第三家公司的时候,对于编程语言已经很娴熟了,尽管还是主要用ASP,但偶尔也用Delphi和Asp.net做开发。那个时候,开始接触.net开发框架了。
.NET阶段
第三年,我跳到了所在城市最大的科技公司,这家公司是移动公司的全资子公司。
说真的,现在看看这家公司真是卧虎藏龙,我能进去纯粹凭着我这人嘴皮子还算不错,面试做的还不错。
当时在这家公司我还是负责做网站,不过那个网站的体量就不同了,是全省范围使用的营业厅网站。而开发语言也采用C#了,那是微软的.NET开发框架里的一种开发语言。
现在想想,我也不知道怎么就学会这门语言了,在我的印象中,我后来再学各种语言似乎都挺简单的,公司需要或者个人兴趣要用到新的语言,拿过来手册看看,然后把开发工具装好写几个练习,这门语言就入门了。基本也就两三天的功夫。
其实真不用觉得快,我后来跟同行们聊天,基本对于新语言的理解都是这样,学习一门语言很容易。
这个阶段我成长比较快,负责过省里的项目、参与过集团的的项目,跟IBM、惠普,还有国内的各大厂家都有过合作,逐渐开始负责项目,担任项目经理了。
Java生涯
07年的时候,公司要求技术转型,全体员工一条线,全部改用JAVA。当时正好有一个新项目要开始,与IBM合作开发,IBM的牛人帮我们搭建了Struts+Spring+Hibernate的框架。大家学了1星期,就开始了JAVA开发之路了。
当时都是使用Struts2+Spring3+Hibernate3这样的架构。用了1年后,逐渐发现Struts这个架构实在有问题,性能、安全性都不好,开发还不友好。
当时不太懂得软件行的思想--不重复造轮子,结果自己摸索着基于Servlet做了一个封装,自己写了一个简单的MVC框架。现在想想有点儿无知者无畏,不过也确实把Java的东西摸熟悉了。
后来发现SpringMVC框架是如此优秀,再看自己写的框架,太Low了,就改行用SpringMVC+Spring+HIbernate。
后来带项目的时候,发现手下的新人用Hibernate的时候,经常会写出性能很低下的代码,感觉这是Hibernate天生决定的,适合有经验的人使用,新人使用开发效率是高了,但执行效率太低了。
因此开发框架又改为SpringMVC+Spring+MyBatis,最早用的时候还是iBatis,后来才是MyBatis。
现在看看,Hibernate的那些问题完全可以通过加缓存来解决的。
最新推荐的架构
这两年,在Java的开发框架上,采用的SpringBoot提供底层微服务,向上暴露出RestFul接口。表现层采用Nodejs。结构巨优雅。
结束语
今年41岁了,在30岁的时候就经常听到有人说快干不动了,以后不写程序了,要做管理、要做市场。
我觉得也没错,现在主要是做管理,市场方面也离不开我,不过编程这么好玩儿的事儿,为什么要丢弃呢?这是我这样一个老程序员的最喜欢的游戏,爱好是一辈子的事儿,怎能放弃。
写下来,也不是说介绍经验,我始终觉得自己不是个成功人士,但是在技术方面还是挺自豪的。只是希望有兴趣做软件这行的新人,看了我的经历,得到一些鼓励,只要坚持就一定能学好软件开发的,入了门其实这行很简单。