彷徨中的成长-记一个文科生的IT成长过程
纠结了许久,要不要写这篇文章,然而最终还是写了。就权当总结与呻吟吧。。当然,呻吟最开始还是发在自己的站点的,忍不住手贱,还是想发博客园。
1 剧透
人算不如天算;时隔多年,我竟然搞起了前端。
2 发端
7年前,它进入SYSU学习档案管理。
2.1 UG1
大学一年级,上学期,完全是小白!没有任何的计算机专业知识。没有任何相关课程学习。只记得专业课叫机关文件管理,还有高数。前半年过的各种悠闲。
下学期,初识IT;第一门课是4个学分的大学计算机公共基础。
这门课只有第一章配得上基础。。第二章数字编码与字符编码,各种原码,反码,补码计算,第三章微机系统结构,各种总线。。第四章Javascript,说是最适合非专业人员的编程入门语言(当时是2009年),然而刚接触计算机的我根本编不出来程序。。为了应付期中考试,各种突击;当时还有一本书很火,叫“JavaScript王者归来”,然而我买了没看。。不管怎样期中考试考了96!然后还是不会编程,因为它考的都是程序填空,不过终于可以摆脱编程了,期中考试之后,第五章还是Javascript基于对象的部分,第六章Word和Excel,第七章多媒体,第八章忘了,第九章HTML,CSS。期末考试重点考这个,为了应付期末考试,当时把FrontPage玩儿的很溜。。好多标签都会背了。。最后98分。。然而我还是不会编程。但当时并不在意,只是把这门课作为高数和英语来学习的,毕竟档案管理专业。
2.2 UG2
大学二年级,上学期,专业课程序设计,4个学分。
用的是谭浩强教授的C程序设计,绿色封面的当时。由我系Happy Ball(学生戏称)执教。他讲的C语言通俗易懂,极易入门,感谢他把我们专业的很多人带入了程序设计的大门;在他的安利下,我也走上了IT从业人员的不归路。这门C程序设计,主要以解决各种问题的实践出发,上课先编程,后讲语法;我在这门课学习了大量的算法,也自命不凡地上去写了回笼数判断程序,然而上去发现有个问题没解决。。没写出来。。。期中考试99分,数数数错一位扣了1分,期末考试,60%编程题,最后97分。。这门课是我学习计算机以来学的最开心的一门课。当时对编程的喜爱远非现在所能比拟,毕竟都是算法的东西;约瑟夫环问题记忆犹新。Happy Ball所说的系统分析师,十年磨一剑,铭记至今。然而学了这门课之后,我以为C语言只能写控制台应用程序,对IT中的工程和算法一点儿概念都没有。
大学二年级,下学期,专业课数据库系统,4个学分,每周5-6个学时。
上的相当辛苦,前期各种不懂,用C语言的思维完全不能理解数据库的模型与应用;第一次有了应用系统的概念,但具体还是不清楚;上课老师提到了CSS+DIV,提到了ASP,PHP,JSP;然而我并不知道是什么。这门课学习了大量的数据库基础理论,比如关系代数,SQL,子查询,各种查询;曾经写过5-6行的SQL语句。。当时确实搞了好多东西,期末94分;
专业课计算机网络,4个学分,感觉并没有学到什么,上课左耳进,右耳出,经常睡着。。。以至于使我对网络留下了不好的印象,期末88分,考试考了子网划分。。总体评价没学好,全忘了。
选修课Access数据库应用,选修课。。一直在点鼠标,并没有学会什么,完全在考专业课混学分。。。
大二过后,没有写过一个图形界面程序。。。
大二第三学期(小学期),科研实践,进了技术组,选了一个小型数据库管理系统设计;
为了实现有图形界面的程序开始疯狂学习,那是认识了计算机321,如鹏网,当时好多资源在veryCD上下。。杨中科的C语言也能干大事系列令我受益匪浅,从此入门了应用级开发。最后看到了.net,下载了Visual Studio 2005,第一次编程,爽的飞到天上了!从此爱上了C#还有微软。。还有.net,最后用ADO.net连接SQL Server2005做了个winform程序交差,科研实践优秀。
2.3 UG3
大三上学期(2010年),爱上了winform,根本停不下来,又做了2个比赛用的小程序。专业课网络开发技术,主讲JSP。
这门课终于知道了之前数据库系统中好多没听懂的东西。JSP语法,JSP内置对象,JavaBean,文件操作,JDBC,Servlet,MVC模式,这门课使我学了不少Java和web开发模式,做了6次项目作业,struts几乎入门,然而由于当时被Visual Studio冲昏了头脑,并没有继续学Java,转向ASP.net,但并不开心。不喜欢在服务器端拖控件的开发方式。可能是JSP先入为主。
大三下学期,两门课选修课对我影响很大,一门是乔海燕老师的函数程序设计,Haskell.
这玩样儿给我累惨了,作业各种不会做,后来学了数据结构,才发现高阶函数这些东西里面有好多递归;期末考试要画分形树,没花出来,现在还不知道会不会画,然而现在我再来看Haskell,这觉得这门课使我宝贵的财富。函数式思想在这两年方兴未艾,当年的LINQ刚刚兴起,Scala也是那时候开始火,后来Java8(当时还是Java6)什么的就更多了,或许不久之后我还会重拾函数式程序设计这个大方向的吧。
另一门课是XML技术,讲了DTD,Schema,Workspace,XLink,XPath,DOM,JAXP,...反正讲了好多。
2.4 UG4
大四上学期,完全没有编程,前面学的几乎忘光。。
大四下学期,毕业设计选择了档案管理系统。
为了搞这个,当时接触了Delphi,真神!!PowerBuilder,不过最后还是用了.net,把ADO.net玩儿个遍,最后用了 Typed Dataset,感觉就是.net下的对象关系映射,不管怎样,毕业设计就用ADO.net给实现了,之后发觉.net并没有想象中那么好,转投Java,决定放弃微软。
考研期间,参加了软件学院的win8技术预览版以及VS2013预览版(当时叫VS11)推广活动,第一次看到了windows phone开发,感觉移动开发很神奇。重新回到微软。
3 发展
2年前,他进入HUST学习软件工程
3.1 G0
研究生入学前,由于当时好奇移动开发,看到windows phone开发实习兴奋不已,提前前往实验室实习,就搞一个windows phone项目,然而整天按XAML写界面,感觉好无聊,而且windows phone下很多界面实现不了,当时并不开心,每天并不想去。第一次听说Web Service,然而我还是不知道怎么调Web Service(Web Service是基于Java EE的),1个月后,罢工。。。
就在实习期间,认识了大牛付总!当时他是windows phone的资深开发人员,曾带领团队上线了好几个应用项目。对付总的能力敬佩不已。嘛,本篇只讲技术,不言其他,不具体讲团队的事了。
这次不开心实习经历使我再度放弃微软技术。现在再来看,windows phone技术确实也并没有得到太大的发展。(庆幸)
3.2 G1
研究生各种修课,设计模式,Java,。。。反正学了很多。然而具体技术并无太大长进。
上学期末尾,项目实训,儿童在线音乐平台,这是一个.net项目,再一次回归net阵营。当时高校实训还是以Java为主,Java又以SSH为主,.net当时使用WCF+EF,我当时开发了win8平板电脑的客户端,数据绑定各种犀利,一天时间实现客户端全部功能,也是醉的不行。(实训2.5个月。。。)
实训结束,又上了移动平台开发的课,用的也是微软技术,开发的也是win8平板程序,我又开发了2个类似的程序,并传到应用商店,混了个学分。。。此后告别移动开发。
2013年,node.js已经开始火了,当时我觉得这个东西很厉害,力荐我们团队学习,然而最后被无情的驳回了。。。
3.3 G2
前往日本留学,各种学习,然而技术转型也在悄无声息的进行着。
专业课Ruby on Rails,被Rails的思想给惊呆了,真正领略到了Web开发的魅力,彻底放弃了Java和.net,对大三学习的JSP和ASP.net产生了极大的怀疑。买了个MacBook,专心学习Rails,在此过程中接触到了Github,Cloud9,Heroku,LESS,SASS,NoSQL等一系列新概念,新平台。开发了不少demo,并传到了Heroku。
学习了形式化方法VDM++,感觉很多代码和Haskell很像,为自己曾经学习过函数式程序设计感到自豪。
毕业设计要实现一个移动应用的服务器端,开始研究各种解决方案,发现了Rest风格的Web Service,然后就是各种轻量级框架和全栈框架。
比如Ruby on Rails,Sinatra,Grape,尝试了一天Spring MVC后放弃,后转向Java下的Play framework,实现了原型1,之后接触了Node.js,使用node.js+Mysql实现了原型2,被Express框架惊呆了,开始从Ruby转向Node,当然用了coffeescript(至今仍然最爱coffee,其次typescript,不爱js),不过因图形库原因,项目最终迁移到.net,使用Nancy Framework.
几经辗转,我对Node的爱不断加深,Markdown,hexo什么的实在是用的太爽了!现在除了MEAN工具链和Ruby工具链,我已经不想在搞Java和.net了。
3.4 G3
现在的计划是,首先继续学习coffee(1),然后是HTML+CSS(2)的学习,之后是JQuery和Ajax(3). 1个月之后,我会看看MEAN里面的AngularJS(4),最后我准备看看JS的数据结构与设计模式。
一切尘埃落定之后,追究还要回归到Node,HAPI.js值得一看。
4 尾声
4.1 几年求学的遗憾
PHP一片空白,然而我知道PHP有很多出色的架构和框架。
F#,WinJS,ASP.net MVC,这些微软技术似懂非懂等于没学。。。
5 最后
不管怎么样吧,最终还是回到了起点,然而大一时候的JS与这个时候或许已经完全不同。没想到现在又搞起了前端。。
谨以此文与大家共勉。不忘初心,向架构师的理想努力奋斗。十年磨一剑,至今时间已过7年,不知道此剑磨的如何。
El Psy Congroo. 临表涕零,不知所云。
写于留学归国前
彷徨中的成长-记一个文科生的IT成长过程的更多相关文章
- 记一个奇怪的python异常处理过程
我的一个程序, 总是在退出时报异常, Exception TypeError: "'NoneType' object is not callable" in <functio ...
- 记一个centos分区大小调整过程
1. 备份 /home 目录 [root@centos ~]# cp -r /home /home_backup 2. 查看目前磁盘使用的情况, 需要将 /dev/mapper/centos-home ...
- 你好,C++(38)从问题描述中发现对象的属性和行为 6.4 工资程序成长记:类与对象(上)
6.4 工资程序成长记:类与对象 “夜半三更哟,盼天明:寒冬腊月哟,盼春风.若要盼得哟,涨工资,岭上……”自从上次老板许诺给小陈涨工资以后,一转眼又过去几个月了,可是涨工资的事一点动静都没有.小陈只 ...
- 你好,C++(30)“大事化小,小事化了”5.4.3 工资程序成长记:函数
5.4.3 工资程序成长记:函数 自从上次小陈“程序员”的工资程序得到老板的夸奖,口头许诺给他涨工资以后,老板再也没有找过他,涨工资的事自然也就没有下文了.这天,老板又突然召他去办公室.这下可把小陈高 ...
- 你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作
4.4 从语句到程序 了解了各种表达式和语句之后,就相当于掌握了写作文要用到的词语和句子,但是,仅有词语和句子是无法构成一篇有意义的文章的.要完成一篇文章,先需要确定这篇文章的结构,是先分述再总述, ...
- 蓝的成长记——追逐DBA(6): 做事与做人:小技术,大为人
***********************************************声明*************************************************** ...
- 蓝的成长记——追逐DBA(5):不谈技术谈业务,恼人的应用系统
***************************************声明*************************************** 个人在oracle路上的成长记录,当中 ...
- 蓝的成长记——追逐DBA(18):小机上WAS集群故障,由一次更换IP引起
原创作品.出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处.否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong ...
- 蓝的成长记——追逐DBA(10):飞刀防身,熟络而非专长:摆弄中间件Websphere
原创作品,出自 "深蓝的blog" 博客.欢迎转载,转载时请务必注明出处.否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong ...
随机推荐
- js生成 1-100 不重复随机数
var count=100; var a=new Array(); for(var i=0;i<100;i++){ a[i]=i+1; } a.sort(function(){ return 0 ...
- 三角函数计算,Cordic 算法入门
[-] 三角函数计算Cordic 算法入门 从二分查找法说起 减少乘法运算 消除乘法运算 三角函数计算,Cordic 算法入门 三角函数的计算是个复杂的主题,有计算机之前,人们通常通过查找三角函数表来 ...
- ASP.NET MVC 应用程序的安全性,看一眼你就会了
1.使用Authorize特性登陆对于我们开发程序而言,基本上都是要求角色成员使用Authorize特性,比如,对于管理员而言角色是Admin,对于登陆注册登陆用户而言是User那么我们在用户登陆的时 ...
- PHP运行方式对比
文章内容来自以下站点http://www.cnblogs.com/xia520pi/p/3914964.html 关于PHP目前比较常见的五大运行模式: 1.CGI(通用网关接口 / Common G ...
- silverlight 生成二维码
MainPage.xaml <Grid x:Name="LayoutRoot" Background="White"> <Border Bor ...
- .net(c#) winform文本框只能输入数字,不能其他非法字符
private void textBox3_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { //阻止从键盘输入键 ...
- 封装getElementsByClassName
function getElementsByClassName(oEle,sClass,sEle){ if(oEle.getElementsByClassName){ return oEle.getE ...
- JPG各种输入框样式
输入框景背景透明:<input style="background:transparent;border:1px solid #ffffff"> 鼠标划过输入框,输入框 ...
- Spark菜鸟学习营Day3 RDD编程进阶
Spark菜鸟学习营Day3 RDD编程进阶 RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lambda表示式来替换对象写 ...
- mysql简单操作一
MySQL的一些简单管理: 启动MySQL服务: sudo start mysql 停止MySQL服务: sudo stop mysql 修改 MySQL 的管理员密码: sudo mysqladmi ...