程序员终极领悟:技术它始终都只是技术,只是用来解决问题的!
很多同学曾经问我,该学习什么技术,怎么样去学习技术?其实每当我听到这个问题,我是无比纠结。这是一个无法回答的大问题,这种话题可以吹上几年,并且每个人都是独特的,方法只能借鉴不可复制也。
下面说说个人学技术的一些感悟,也许是错的,但是我还是想写出来(不喜欢看长文章的同学请直接看结尾总结那段即可)。
一、学习技术的目的
我们学习技术往往是带有功利心的,哪怕你用技术来玩,也是一种目的嘛。所以,每当你问别人,该学习什么技术的时候。先问一下自己想要做什么。举一个例子,一个上了大学java课程的同学跑过来问我,我应该如何学习,要学什么东西?
我会反问他一个问题,你以后想去开发安卓亦或者是开发网站,还是说想搞游戏。只要他回答出这个问题,我也知道如何回答了,假设这个同学选择了网站开发。
我会说,你想办法用java实现我用浏览器看到hellow world!这几个单词,在实现之前就别问我要学什么。因为我告诉这同学,你要学servlet,filter,listener,接着学ssh框架,学习数据库,学nosql,学模板引擎,我相信他会抛更多的问题并且被吓呆了。
如果这同学抱着解决问题的心态学习,一切迎刃而解。
二、我怎么知道有什么好技术啊?
到底怎么选择有什么好技术来更好的实现需求呀!别急给三个路子你瞧瞧:
1、请跟一个商业项目从开始做到一个阶段完成(请参与团队开发那种,要商业性质的或着面向用户的)。
面对用户的项目,你可以真实接触到错综复杂的情形,才能经历真正的需求。之所以选择团队开发,因为可以给一个机会学习别人会的技能嘛。
2、请看别人总结的技术图谱,站在巨人的肩膀上嘛,网络一大堆总结,如何寻找就看自己机缘巧合了。
3、问一些前辈,了解一些有用技巧。
三、不要为了用技术而学使用技术
我的一个非技术师兄曾教导我:切勿为了炫技而使用技术。请记住:
技术是为了解决问题的!
例如,我们搞活动,需要提供一个简单不变的宣传页面给运营。本来我们简单写一个html静态页面即可。但是,我们为了炫技。上vue,上ssh框架做一个管理后台给运营修改页面。我的天,这样子既拖工期,又浪费精力。
我们再看看一些高级一点点的技术,例如异步处理,使用消息中间件(rabbitmq,kafka等)。我们真的要用到这些技术吗?同步真的就无法解决性能问题吗?消息中间件就不能简单的redis代替吗?
很多人吐槽企业的系统技术渣,用的是十年前的技术。但是请看看,他们的系统是不是运行得十分平稳。你用新的技术,往往出了问题,社区都还没有给出解决方案呢。
总之一句话,用什么技术,学什么技术请按实际需求出发,我们需要的是最简单最高效的实现方法。
四、学技术前请看看他的发展史
很多人在看技术书的时候,看到历史就跳开了,也包括我。但是这种做法让我们多走了弯路,别以为那些书写写历史是为了凑字数,我们读历史可以知道它为何会出现,因为存在即合理。
例如,我们看看数据库技术的发展历史。我们就明白为什么要用数据库,为什么要使用某种数据库引擎,主从技术何时使用等等。
当我们知道技术是为了技术什么问题而生的时候,我们就知道我们把它用于何处,所以我们经常问的一句话是,该技术适用场景是什么?而缺点又是什么?
五、理解技术的原理比学会使用重要
就像当你了解http协议之后,你就明白cookie是怎么工作,你也知道单点登录是如何实现,也懂得浏览器缓存的各种实现方式。
当你知道了原生js,你就明白jquery能做的东西,不会jquery也可以实现。自己也可以造一套像vue那样子的前端框架。
我的一个建议是:请尝试造轮子,只有造轮子才会真正理解技术的原理,别被那些不要重复造轮子的言论欺骗了,看看大公司们造了多少轮子。如果你沦为只会用轮子的人,某一天用得特不爽的轮子,你也只能含着泪来用。
六、技术要广了解,而精一门即可
我们来看看浮躁的前端领域,反正我是怕了,前端为何要学这么多东西?es5,es6是什么玩意?vue,React ,Angular 又是什么?webpack,grunt 等。然后还有less,scss。当然前端还在学nodejs,厉害呀,全栈工程师。
人精力是有限的,上面那堆东西肯定有人都玩得很熟,但是这种技术人有多少呢?作为一个普通人,可以了解每一种技术的入门用法,熟练掌握一种用于日常开发即可。
请记住,它们仅仅是你拿来解决问题,挣钱养家的工具而已。
七、不要以为阅读收藏了一堆网上的热门文章就能提高技术
看100篇文章还不如实践一次,别以为看了什么高并发架构文章,看了什么前端最佳实践,你就可以写出多么优美的系统,反正一到实际就会发现文章仅供参考。再说收藏文章这一事情,收藏真的只是收藏,看看你收藏的文章多久没回顾就知道了。
正确的做法是,阅读文章后做总结,最好是有机会实践。看了本文也一样,你就吸收你认为有用的观点就好,别的请忽略。
普通人跟大牛的差别是,大牛凌晨两点还在技术攻关,普通人可能在愉快的玩着游戏。
八、学技术我们其实在学什么这个问题的答案
✿ 请为了解决问题而寻找一种技术,且为了解决问题而学习
✿ 技术永远是一种工具,请让业务驱动你学习技术
✿ 请学会造轮子,如果不造轮子请确保你有改轮子的能力
✿ 请学会技术的底层原理,这也是为什么大牛对于什么技术都手到拿来的原因
✿ 阅读技术文章或者技术书籍之后请总结,然后尝试实践之。
✿ 所谓的高级技术就是低级技术组装而成,所以请学会底层技术。
总结:
学技术就是学习解决问题的方法,入门跟大神的区别仅仅在快速想到解决方案的效率!