上学的时候总觉得编码太枯燥,为什么要学线性代数,概率论这些枯燥乏味的东西?编个界面,学习下网页,所见即所得,多开心
工作了以后,你才发现,当时真的应该好好把数学的底子打牢,这样才不会面临很多的问题,无从下手。
所谓的API程序员,就是仅仅会画界面,然后调用接口,利用别人写好或者训练好的模型来得到答案,展示结果。虽然大多数情况下,80%的工作量都在做界面,做增删改查上。以至于很多人感慨,程序员也是个苦逼的活。是的,很多时候,我们并不需要去了解里面的算法细节,不需要关心这个结果是如何而来,如何存储的。但是这样日积月累的重复性劳动,真的对我们有好处么?
答案显然是否定的,你会发现,你写界面的速度越来越快,但是一旦遇到算法相关的问题,你会默默的打开百度。
写个冒泡排序,是不是都需要思考半天?更不用说写一个A*算法,红黑树, 这些早就还给老师了,当然现实中我们确实没有充分的机会来接触这些工作。
那么如何提高我们真正的编码硬实力?
我们要界定编码的硬实力:数据规划能力+算法能力,老祖宗早就告诉我们,计算机=算法+数据结构,归其本源,数据结构是元素,算法是菜谱,两者协调起来才能做出佳肴。
1. 多看多写。
推荐两本书:
推荐几个可以练习算法的平台
lintcode:https://www.lintcode.com/
赛码:https://www.acmcoder.com/index
2. 多思考。就是简单的网页,有时候也需要涉及到复杂的运算,chrome源码是开源的,能掌握编译的国内也算有实力的。同样是做菜,有些人做出来的只能吃,有些人做出来的就是盛宴
3. 自己写项目,比如自己做一款小游戏,设计一个数据库,写一个人脸识别的算法,做一个数学建模
总之,作为API程序员,我们不仅要具备快速的学习能力,也需要具备深入思考数据和驾驭数据的能力,并且通过编码把自身的数学想法实现出来,这才是不断提高我们身价最有效的方式,只有不断地创造,才能拥有更加美好的明天。