专业背景
大学前两年学的是电子,电子的课程多偏数学,跟计算机相关的只有C++和汇编。但电子课程中的模电和数电两门课对我影响比较大——模电让我学会了“整体把握,具体分析”,数电让我学会了“模块组合,抽象思维”。前两年的业余时间基本都被我浪费了吧。
大二暑假参加了ACM集训,了解了基本的算法,代码方面的一些习惯也是这个时期养成的。集训过后“性能优化”这个词就深深地刻在脑子里了,现在不管做什么都会追求最优雅的做法和最佳性能。
大三转到了计科,狂补了一把计算机基础课。也就是这个时候接触到了iOS开发。大三寒假开始学习OC,看了李明杰老师的一些课程(这些课程对于入门者来说真的非常好,手把书教你写代码)。
大三下学期主要参加了一些培训班,增加了自己的社会实践经历和能力。大三暑假看了Stanford的iOS7应用开发的部分课程。
大四默默当一名考研狗,这期间夯实了计算机的基础知识。2015年4月份重拾iOS开发,当时看CoreData怎么看都看不懂,感觉自己好蠢。
整个大学都在看产品设计(UE UI等)方面的资讯,乔帮主的极简主义对我影响颇深。
知识体系
- 大量电子的基础知识(后来做智能家居派上了用场)
- 大量数学课程(可是我数学还是很烂)
- 比较扎实的计算机基础知识(得益于考研)
- 基础的算法知识(在项目中真的用上了)
- OC基础知识,iOS开发基础知识(总计自学时间不超过三个月)
- 基础的产品设计知识(当时设计出来的东西还很烂)
能力成长
- 比较好的自学能力(大学四年基本没上过课)
- 比较扎实的编码能力(得益于ACM)
- 沟通能力、团队协作能力、责任感等均强于一般人(得益于培训及大量的社会实践)
- 良好的英文文档阅读能力(这在后面的知识学习上作用很大,我可以直接阅读原始资料,和世界各地的开发者讨论问题)
总体来说
我算是有一些计算机的基础知识,但这些知识都是概念性的(操作系统、计算机组成原理、计算机网络、算法等);实践性的知识,譬如编程语言(Java、C++等),我只会一点C和一点OC,其余的都只是有浅显的接触,我也没做过什么项目(然而那些概念性的知识决定了一个人的基础和成长能力,我也是后来才懂得这点,并为自己感到庆幸)。