我于2007年参加高考,顺利考入一所男女比例严重失调的师范大学,主修计算机科学与技术。其实高中的时候本来想选生物的,可惜报生物的人太少,就没有开班,后面选修了化学。原计划是想学高分子材料相关专业的,怎奈高考分数太低,没有考上相关的大学。第二志愿填写的是计算机相关的学校,当初并不知道这个专业是编程,以为是修理电脑的。因为自家电脑老是这个那个的问题,所以就义无反顾的报考了计算机专业。填志愿的时候没有什么伟大的理想,也没有什么周密的计划,就是随意的这么一填,没想到现在就靠这个吃饭了。
## 一、课程
**1)疑惑**
  本校的这门计算机科学与技术是偏向综合的,既要学软件相关的知识,又要学硬件相关的知识。刚进入大一的时候,对一些课程感到疑惑,例如数学、物理、英语、模拟电路等课程,修电脑怎么要学这些课程,后来才知道,其实我们学的不是修电脑,而是编程。
**2)为分数而学习**
  由于对编程并不热爱,因此上课其实也不是很上心,刚开始就是为了分数而学习,完全领会不到这些课程的意义。比较上心的就是C语言了,谭浩强出的那本。一开始完全没有基础,写代码很吃力,而且那时候笔记本电脑还没普及,也很少有机会上机调试。虽然学校有机房,但离的比较远,基本是不会去的。后面练习的多了,慢慢也就会了,应付考试是没问题的,但写的代码不够有灵性。大二学了数据结构,比较难理解,也是靠课后练习,当时纯粹是应试,所以过段时间就都忘了。包括后面的网络、离散数学、排列组合等等,都是为了考个好成绩才学的。
**3)学习氛围**
  大一和大二被安排在远离繁华都市的偏僻海边的新校区,在这里没有量贩KTV、没有大型超市、没有巨型商场。此处虽然资源有限,但是却非常适合学习。不过,大家高中时候都学累了,进入大学后就都很放松。很多人喜欢去网络文化交流中心包夜,最夸张的是隔壁班的一个同学,居然一去就是几个月。在这种环境中,想要心无杂念的深入学习计算机真的蛮难的,况且自己也不热爱,所以经常告诉自己学这个只是为了以后能有个混口饭吃的技能。
  后面大三回到老校区,遇到了专升本的那帮人,他们的学习热情与我们正好相反。他们真的是热爱这个专业,有次放学路过,发现他们把任课老师围了起来,正在向老师咨询这个那个的问题,他们肯定是已经明白了学习的意义,所以才能这么投入。
**4)教授**
  我们文科学院的教授讲课都非常有趣,可以用引人入胜来形容,上他们的课相对会有劲很多,尤其是历史课,可以听到很多故事。反观我们理科院的教授,就不那么有趣了,很多时候都是蛮枯燥的,上课很容易走神。他们的水平都很高,就是讲课的时候很难让我们理解,当时有一门离散数学,让我印象深刻,大部分人都不会。课堂氛围比较好的是操作系统课的那位老师,他讲的蛮通俗的,有时候上课还能互动互动。
**5)操作课**
  大二有一门网页设计课,授课老师让我们用Dreamwever制作一张静态网页,模板就是他的博客首页,他博客的访问量一度飙升。这门课提起了大家的兴趣,都在宿舍开笔记本制作,还会对比,看谁做的相似度最高,有的人做的很不错。看来大家还是喜欢这种能看到效果的操作课,像数据库、数据结构那种理论课,都提不起大家的兴趣。
  大三的时候,还有一门多媒体,这门课会教点PS的内容,让我们整天P一个胖子,抠图啥的,大家有时候还是会有点兴趣。
**6)ACM**
  ACM是一项编程竞赛,大一的时候,有学长过来做宣讲,说拿到好名次能为以后找工作提供很大的便利,一下子就勾起了一大批人的兴趣,大家争相报名参加。因为名次的含金量高,所以这项编程竞赛难度也很大。ACM考的是算法,并且他的题目都是英文的,有专门的刷题网站,很多人一看要做题目,兴致就降低了很多,后面又看到题目难度很大,有些题目有点奥数的味道,渐渐的越来越多的人选择退出。我当时也坚持了一段时间,不过自己的数学建模能力实在太弱,最终也还是放弃了。隔壁班有个同学坚持了,还能拿到名次,毕业的时候直接进了腾讯。
## 二、实习
**1)ERP系统**
  大三下半年辅导员给了我一个机会,让我和一个学长一起做个校外的项目,虽然这个项目做到一半终止了,但对我的影响是很大的。当时是用的软件编辑器是VS2005,打算做个ERP系统,学长是在英特尔上班的,他把那套成熟的软件开发模式带了过来。第一次使用项目管理系统readmine,第一次使用版本控制系统SVN,第一次使用C#开发系统,第一次制作一个完整的项目,第一次采集需求等各种第一次,让我感觉自己好像已经进入了职场。每个月还能有500块的收入,我用第一个月的收入买了块500G的移动硬盘。不得不说,这次实习经历,直接改变了我未来的职业规划,促使我踏上了程序员这条道路。
**2)商城系统**
  时间很快到了大四,那一年我的一个初中同学联系到了我,和我说他同学搞了个软件项目,正好缺人,想让我也加入。当时学长的那个ERP项目已经被腰斩,正好没事,马上就答应了。抽了一天时间,坐了很久的公交,到了他们租的一套公寓里,了解到他们想搞个商城系统,正好也是用C#开发,模仿当时的一套开源系统来做。这次的经历让我接触到了前端,确切的说是JavaScript,因为CSS和HTML由团队的另外一个成员做。与此同时,我也迷上了前端,因为在完成某个效果时,能带给我巨大的成就感和满足感。不过,一直到6年后,才有机会转型成全职前端。
**3)户外旅游网**
  商城系统团队后面由于种种客观原因无奈解散了,当时正好有一家户外旅游网在我们大学里招实习生维护公司的网站。我就报名了,学校在徐汇区,而这家公司在虹口区,两者相距蛮远的,地铁都要坐一个多小时,然后下地铁再走到公司。这家公司还有另外一个同事管网站这块,不过他只能算半个,因为他主要管旅游产品那块。旧网站是用ASP开发的,我过来后老板让我先做点边边角角的事情,然后让我开发一个和开心网类似的社交网站。这次是独立完成了这个项目,包括数据库设计、页面制作、产品规划等,我的另一篇文章《[忆2011年的秋天:一个人的项目](https://www.cnblogs.com/strick/p/10007237.html)》就详细记录了其中的开发过程。实习期间,还拿了公司传单在学校里发,中午的时候,在人流量最多的地方发,对自己也是一种挑战。
*****
> 已建立一个微信前端交流群,如要进群,请先加微信号freedom20180706或扫描下面的二维码,请求中需注明“看云加群”,在通过请求后就会把你拉进来。还搜集整理了一套[面试资料](https://github.com/pwstrick/daily),欢迎阅读。
![](https://box.kancloud.cn/2e1f8ecf9512ecdd2fcaae8250e7d48a_430x430.jpg =200x200)
- ES6
- 1、let和const
- 2、扩展运算符和剩余参数
- 3、解构
- 4、模板字面量
- 5、对象字面量的扩展
- 6、Symbol
- 7、代码模块化
- 8、数字
- 9、字符串
- 10、正则表达式
- 11、对象
- 12、数组
- 13、类型化数组
- 14、函数
- 15、箭头函数和尾调用优化
- 16、Set
- 17、Map
- 18、迭代器
- 19、生成器
- 20、类
- 21、类的继承
- 22、Promise
- 23、Promise的静态方法和应用
- 24、代理和反射
- HTML
- 1、SVG
- 2、WebRTC基础实践
- 3、WebRTC视频通话
- 4、Web音视频基础
- CSS进阶
- 1、CSS基础拾遗
- 2、伪类和伪元素
- 3、CSS属性拾遗
- 4、浮动形状
- 5、渐变
- 6、滤镜
- 7、合成
- 8、裁剪和遮罩
- 9、网格布局
- 10、CSS方法论
- 11、管理后台响应式改造
- React
- 1、函数式编程
- 2、JSX
- 3、组件
- 4、生命周期
- 5、React和DOM
- 6、事件
- 7、表单
- 8、样式
- 9、组件通信
- 10、高阶组件
- 11、Redux基础
- 12、Redux中间件
- 13、React Router
- 14、测试框架
- 15、React Hooks
- 16、React源码分析
- 利器
- 1、npm
- 2、Babel
- 3、webpack基础
- 4、webpack进阶
- 5、Git
- 6、Fiddler
- 7、自制脚手架
- 8、VSCode插件研发
- 9、WebView中的页面调试方法
- Vue.js
- 1、数据绑定
- 2、指令
- 3、样式和表单
- 4、组件
- 5、组件通信
- 6、内容分发
- 7、渲染函数和JSX
- 8、Vue Router
- 9、Vuex
- TypeScript
- 1、数据类型
- 2、接口
- 3、类
- 4、泛型
- 5、类型兼容性
- 6、高级类型
- 7、命名空间
- 8、装饰器
- Node.js
- 1、Buffer、流和EventEmitter
- 2、文件系统和网络
- 3、命令行工具
- 4、自建前端监控系统
- 5、定时任务的调试
- 6、自制短链系统
- 7、定时任务的进化史
- 8、通用接口
- 9、微前端实践
- 10、接口日志查询
- 11、E2E测试
- 12、BFF
- 13、MySQL归档
- 14、压力测试
- 15、活动规则引擎
- 16、活动配置化
- 17、UmiJS版本升级
- 18、半吊子的可视化搭建系统
- 19、KOA源码分析(上)
- 20、KOA源码分析(下)
- 21、花10分钟入门Node.js
- 22、Node环境升级日志
- 23、Worker threads
- 24、低代码
- 25、Web自动化测试
- 26、接口拦截和页面回放实验
- 27、接口管理
- 28、Cypress自动化测试实践
- 29、基于Electron的开播助手
- Node.js精进
- 1、模块化
- 2、异步编程
- 3、流
- 4、事件触发器
- 5、HTTP
- 6、文件
- 7、日志
- 8、错误处理
- 9、性能监控(上)
- 10、性能监控(下)
- 11、Socket.IO
- 12、ElasticSearch
- 监控系统
- 1、SDK
- 2、存储和分析
- 3、性能监控
- 4、内存泄漏
- 5、小程序
- 6、较长的白屏时间
- 7、页面奔溃
- 8、shin-monitor源码分析
- 前端性能精进
- 1、优化方法论之测量
- 2、优化方法论之分析
- 3、浏览器之图像
- 4、浏览器之呈现
- 5、浏览器之JavaScript
- 6、网络
- 7、构建
- 前端体验优化
- 1、概述
- 2、基建
- 3、后端
- 4、数据
- 5、后台
- Web优化
- 1、CSS优化
- 2、JavaScript优化
- 3、图像和网络
- 4、用户体验和工具
- 5、网站优化
- 6、优化闭环实践
- 数据结构与算法
- 1、链表
- 2、栈、队列、散列表和位运算
- 3、二叉树
- 4、二分查找
- 5、回溯算法
- 6、贪心算法
- 7、分治算法
- 8、动态规划
- 程序员之路
- 大学
- 2011年
- 2012年
- 2013年
- 2014年
- 项目反思
- 前端基础学习分享
- 2015年
- 再一次项目反思
- 然并卵
- PC网站CSS分享
- 2016年
- 制造自己的榫卯
- PrimusUI
- 2017年
- 工匠精神
- 2018年
- 2019年
- 前端学习之路分享
- 2020年
- 2021年
- 2022年
- 2023年
- 日志
- 2020