如何选择值得深入学习的技术方向

没有更多推荐了,
不良信息举报
举报内容:
技术方向的选择
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Service Unavailable程序员如何选择技术方向
我的图书馆
程序员如何选择技术方向
 2008年秋天的一个午后,温暖的阳光透过落地窗落在我面前这个长长的写字桌上,桌子对面坐的是一个瘦小的程序员,他的名字叫小明,小明有些茫然,他看着我,不知道该说些什么。
  程序员都是很严谨的,我不得不首先发出一个 System Call:
你在客户现场这半年做什么工作?写单元测试。还有呢?没了,就一直写 JUnit。别人也写单元测试么?没人愿意写单元测试,只有我写。
你为什么想来研究院呢?我想写一些真正的程序。什么是真正的程序?比如 Java,比如面向对象编程,你总要写一些类和各种各样的方法,而不是一直写 Test Case。好的,沿着这个楼梯上三楼,那里有一群和你一样的程序员,他们不仅写 Java,还写 JavaEE 相关的各种程序,你会找到自己需要的东西。真的么?真的
  那时候我风华正茂,没有现在这么老成持重,阳光照在我的翘着二郎腿的脚面上,一切都显得十分虚幻,在小明的眼里,那时的我估计很像「黑客帝国」里的墨菲斯,但是他不能确定自己是不是「The One」。小明疑惑的看了我一会,最终还是上楼了。至此,他完成了第一次技术方向的选择。在三楼,他碰到了一群同样严谨的程序员,他不仅学会了写真正的 Java 程序,而且掌握了部分 Web 编程和服务器端编程,包括 JavaScript、JQuery、Spring、Hibernate、JMX、Web Service 等等。小明变得快乐起来,渐渐摆脱了注定孤独一生的阴影。
  过了一段时间以后,小明已经不满足只写 Java 相关的程序了。有一天他看到我手里的 iPhone 和 Mac,仿佛见到了初恋的情人,眼中重新燃起了绿油油的光芒,他知道了 iOS 开发者这回事。很快,他花掉了所有的银子购买了 Mac 和 iPhone,开始日夜兼程,学习 iOS 开发。他在写 Java 的间隙编写 Objective-C 代码,在编译 Web App 的同时构建 IPA,在清晨的微光中调试程序,在每个夜晚与模拟器窃窃私语……他完成了第二个阶段的技术方向选择。
  终于到了离别的时候,他要去寻找更大的梦想,经年以后,在南方的某个城市,他成了一个知名公司的 iOS 主程,并开发出了多个著名的 iOS 应用,比如「丁香医生」「用药助手」「家庭用药」等等,难以想象,如果没有小明,张老师怎么去见小姨子,冯老师何以拯救互联网,二爷怎么鉴书,西湖何以养醋鱼!
  第一个故事讲完了,主角小明利用两次主动的技术方向选择,完成了从小球到小牛的逆袭,以至于现在连女朋友都有了。
  这时候就有读者要问了,那些大牛是如何做技术选择呢?
  大牛不需要做技术方向的选择,他们需要什么就学什么,学什么就成什么。他们就象掌握了「九阳神功」的张无忌,各种类型的技术和程序到了他们的手里都能发挥出巨大的威力。技术,是他们生命中最重要的组成部分。
  如果你们以为我在吹牛我就给你举个例子。我在《MacTalk·人生元编程》中写过一个技术高手,他的名字叫做攀攀。很长一段时间我都不知道他掌握了哪些技术,因为他的技术是我们很多人的超集,我们遇到的所有问题都可以在他那里得到解决,他只是叼着烟翘着腿敲下几行代码而已。后来我才知道,他在高中的时候已经痴迷于计算机了,大学时代自学了大量的计算机相关的知识,操作系统、数据结构、算法在他大学毕业之后就已了然于胸。
  直到最近,我才从网路上拿到一份他几年前的简介,那个时候,他的履历是这样的:
ID :攀攀性别:男师门:电子科技大学 98 年计算机系
职业:网络引擎设计者
人物背景:精通 C, C++, Java , Pascal, Basic, Fortran, Cobol, PL/M, Perl, Python, Lisp, Prolog, Smalltalk 、 bind 、 Ldap 、 PVM 、 MPI 、编程自动化、 Linux 核心代码, JDK 源码, GLibc 源码, Apache 源码、常见的网络协议内部实现、网络通讯……是真的精通
武学造诣:决不要把计算机强加给人们的限制认为理所当然,人不是机器的奴隶,把了解机器的限制作为通晓计算机的标准只能是自欺欺人
游戏感言:IP 路由和认证的双重功能将是未来网络游戏发展的障碍,今后的网络应该是以分布式目录服务为基础的,以网络设备为中心,与具体无机无关。集成了广泛的认证与授权能力的网络(全公司上下没有人能听得懂他在说什么,好在大伙儿都已经习惯了)。
  都是98年毕业的,人和人的差距怎么那么大呢?无语泪千行!
  两个故事讲完了,究竟如何做技术方向的选择呢?答案就飘在风里……
  1、操作系统、数据结构、算法、网络等基础技术应该在大学时代深入学习,如果毕业了你还没有掌握这些内容,那就随用随学好了。学习这些基础理论极为枯燥,只有实际工作中的需求才能给你最大的学习动力去掌握这些艰深的内容。
  2、至少要掌握一门静态语言,比如 C、C++、Java、C#、Objective-C 等。至少掌握一门动态语言,比如 Python、Ruby、PHP等。
  3、推荐学习一些同时具备动态语言和静态语言的特性语言,比如 Go、Swift、Scala 等。这样你会对面向对象编程、面向过程编程、编译型、解释型语言有更深入的了解。
  4、系统的构建自己的知识体系,而不是局限在某个点上。经常有读者问我,我前几年一直在写 VBA/ActionScript/Delphi/SQL……现在项目组突然不再采用这些语言了,怎么办?很多人难以预料未来技术的走向,但是你至少要构建自己的技术壁垒和平台。学习 Java,就应该构建你自己的JavaEE 平台;Objective-C 对应 iOS/OS X 开发平台;C#,对应 .Net 平台,SQL,对应数据库平台。如果你在用ActionScript,那你不应该局限在 Flex 上,你对应的是整个前端平台。
  立足平台,你会站得很稳。立足一个点,你可能摔的很惨,就是这样。
  5、主动选择技术方向比被动等待好。根据自己的兴趣和技术的发展主动选择,就像小明一样,有时候放弃也意味着得到。
  6、不要过于追新,不要每出一门「颠覆性」的语言或技术都投入精力物力。追新的后果很可能是该学的没学会,不该学的学完也忘了。我有一哥们,我们都在写JavaScript 的时候,他认为 Java 新推出的JavaFX 才是前端的未来……然后就没有然后了。我们都用 Java 的时候,他认为 ERlang是才是编程语言的未来……然后就没有然后了,可谓一步早,步步早,让人扼腕叹息。
  7、也不要过于保守,比如 Go、Swift、Docker 等技术,我个人以为是值得投入时间和精力的技术。
  没有 8 了,写到这里,冬夜已经黑的不像样子。站在阳台望出去,仿佛看着某个巨大 IDE 的黑色编码主题,我想起了某位大牛的一句话:我不是懂得多,我只是学的快而已。
  (作者:池建强 来源:程序员的圈子)
馆藏&30522
TA的最新馆藏
喜欢该文的人也喜欢如何选择值得深入学习的技术方向_福州达内—美国上市公司,近60万大学生共同的选择!
如何选择值得深入学习的技术方向
不少做开发的小伙伴都有这个困惑:想上进,却不知道到底该选择什么样的技术来深入学习。
今天我们就来聊聊选择技术的逻辑,常见的有 4 种:
从产品到技术
现有技术的延伸
我们一个一个来说说。
1. 从产品到技术
技术只是一种工具,它是用来解决实际生活中的问题的。所以,如果你不知道怎么选择,可以反过来思考这两个问题:
我要做什么产品?
解决什么问题?
因为某一类问题的解决方案,通常是由若干种技术组合出来的。
比如说,我要做手游,解决无聊时间太多的问题,那就有几个选择,比如学习 Cocos2D-x、Unity3D。
比如说,你想解决企业远程音视频会议效果不好的问题,那就可以学习 C++、ffmpeg、WebRTC等,从传输和音视频编解码上去提升会议系统的效果。
所以,如果你对解决某一类问题感兴趣,或者对某一类产品、服务感兴趣,那就去研究下,它们对应的解决方案,通常是由什么技术实现的,从中选择一种类学习即可。
2. 现有技术的延伸
看样子,你现在已经是个程序员了,那你肯定已经在使用某种技术了。
那其实想深入学习,一个最现实的策略就是:学习你现在用的技术,或者学习能与它组合在一起形成技术栈的技术。
比如说,你现在使用 C++ 做图像处理,那就可以学习一些与图像处理相关的类库或工具,比如 OpenCV,Cairo等等。
比如说,你现在做视频编解码,那像 ffmpeg 、OpenH264、WebRTC等等,都可以学。
3. 需求多寡
有时候你想深入学习一种技术的目的是为了获得更好的职位,挣更多的钱。那这时候,就从市场需求入手来挑选。
比如现在人工智能相关的职位行情比较高,那你就可以学习 Python、TensorFlow、Keras等。
还有一些人兴趣非常明确,跟着兴趣走就可以了。
比如有的人对 Python 特别偏爱,那就多多学习 Python 相关的技术,TensorFlow、PyQt、Keras、Django 等等。
还有的人特别喜欢 Golang ,那就多多学习 Golang 相关的技术,比如 Docker 、Golearn等。
选择权在你
不管怎样,最终的选择权,其实在你自己啦~
不管最终你选择什么技术来深入学习,持续行动都是必须的,只有持续不断的学习、实践,才能让你精通某种技术。
学会这12个框架,你的薪资和level能更上一层楼
如何阅读他人的程序代码(下)
如何阅读他人的程序代码(上)
程序设计语言
Copyright (C)
Tedu.cn All Rights Reserved 京ICP备号-56 版权所有
选择城市和中心
达内北京亦庄大学生实训基地
达内北京网络营销中心
达内北京会计中心IT圈如何解决技术学习、选择和方向发展的困惑?-大数据培训
400-111-8989
IT圈如何解决技术学习、选择和方向发展的困惑?
在知乎看到一个问题,相当有代表意义,即技术人员本身的技术发展瓶颈的突破问题。
具体问题如下,通常情况下,入门技术行业或是在某一技术领域工作几年后,都会面临以下几个困惑:
技术学习的困惑:
当达到一个瓶颈时,可以学习的参考系越来越少,首先是因为高端技术人才呈现倒金字塔形态,身边缺少能引领你的人生导师;其次,业内的技术交流,大多数在做科普以及刷存在感,到达一定阶段后对个人提升作用越来越小(甚至用一天时间参加技术大会效果还不如用一天的时间在咖啡馆看书学习);再次,国内的文化导致技术人专家逐渐转向管理岗位,技术缺少积累,特别容易出现断层和继承。
技术深度与广度的选择的困惑:
技术深度的进一步提升,可以逐步做到业界大牛,专业技能越来越强,广度的延伸也更容易变成全栈技术人才,两者各有利弊,个人时间和精力有限,如何抉择?
技术方向的困惑:
大型互联网公司的技术框架基本都在最初选型时确立,与当时的业务规划、业界当时的技术趋势、个人的过往经验积累相关,成熟规模大的业务从稳定性考虑,一般技术选型落后新技术2、3年,对于技术人员来说,从实际工作考虑需要使用老技术,但是业界的趋势又是在朝着新技术的方向发展。
这种困惑相信很多技术人员和技术管理人员都存在,包括我自己,当然这种困惑本身也是符合学习曲线规律的,即任何一个技术学习和实践,越是到后面学习的时间越长,本身能力提升越慢。但是往往真能够坚持和专注,能够耐得住寂寞等到量变到质变的那一刻,就是一种一览众山小的新境界。
对于上面提到的三个困惑点,解决方案如下:
技术学习的困惑
任何新技术或知识点的学习,在当前互联网和信息如此发达的情况下,只要你有兴趣就一定能够找到相关的学习资料进行自我学习,兴趣往往是第一个驱动点。但是问题的关键点还是在于学习后的新技术如何深入,新技术如何去实践?没有真正的实践总结,没有真实的大型项目实战驱动,你将发现理论终归是理论,理论要转化为你的实战经验是相当困难的。
如果一个新技术的学习没有实战机会,那么你自己也很难真正保持长久的兴趣,能够做到熟悉或知道已经不错了,而要真正做到精通或理解就很难。大量技术的深入学习往往都是在实践中真正遇到了复杂的问题,在问题驱动下的学习和深入,这些错综复杂的问题往往涉及庞大的知识面,而且各个知识点之间相互影响。我们如果有实践机会能够不断的解决这类问题,不断优化和持续改进,技术自然深入。
举一个简单的例子来说,对于海量数据处理下的高并发互联网架构,这类架构知识有不少书籍都在系统的讲,往往也有很多技术专家的实践分享。我们学习这些理论往往看起来简单,也容易理解,但是即使你学习了这些知识,如果没有相应的大型互联网系统架构设计场景给你实践,那理论终究是理论,这些理论本身你也很难真正的深入学习。正是由于这个原因,技术学习的困惑不是简单的兴趣问题,而是是否有大型项目实践机会和锻炼的问题,但是往往大部分的公司都无法真正提供这种大型项目的机会,你要完全通过自己学习和模拟试验来深入掌握这些技术就变成了空话。
技术学习的深度和广度问题
对于这个问题简单回答就是对于技术管理型人员重点是更广的知识面和综合能力提升,即广度更加重要而不是落入某一个深度细节。对于专业技术型人员,则是技术深度更加重要,因为技术的深度往往才真正为你创造更大的价值。
技术管理型人员需要更加关注整个知识体系的构建,其中包括重要的软技能。这类人员的重点是总体规划和设计,能够对问题进行分解。对于分解后的技术问题和细节则可以转交到细分岗位的专业人员去做。要做到这点我们仍然需要有大量的技术积累,因为这是你和专业技术人员沟通的桥梁和通用词汇。
对于专业技术人员,技术的深度往往更加重要,深度才是最终创造价值。前面已经谈到过,技术深度的提升越到后面越慢,学习的周期和时间成本越大。也正是由于这个原因,能够超这个技术金字塔顶尖上去发展的人越少,自然你个人的核心价值体现越大。个人的精力是有限的,要想做到全栈技术人才的人相当少,即使是全栈技术人才更常见的情况往往是在自己最擅长的专业技术上能够打到95分以上,而围绕核心专业技术的相关技术能够打到80分以上。
理解了这点,我们就更加清楚技术人员应该更加注意技术深度的积累,能够长期专注在一个专业技术方向上,这个目标选择定了,你会发现对于广度知识的选择就不是漫无目的和随意的,任何广度知识的选择都是这些广度知识是为了支撑你在深度上进行突破。当我们技术深入到瓶颈期后,如果自己反思和回溯,都会发现是知识广度上出现了问题,需要暂时停顿下来先补充广度。但是广度的补充不是最终目标,最终还得回到深度钻研上来。
技术方向的选择
对于这点个人最大的一个感受就是当你真正在某一个技术领域发展到一定阶段的时候,一定不会是像自己还是新人那样狂热的追求新技术和热点。即专家更多要考虑的是业务和问题驱动技术,用最适用的架构在当前解决最重要的问题并保留一定的扩展性,而对于大部分技术思维人员往往考虑的是技术驱动业务,只是对技术感兴趣而不是对业务和问题域感兴趣。
技术发展趋势和迭代的快速,你任何当前选择的技术或框架都可能在2-3年后就过时,但是如果当前的技术能够很好的支撑业务就是最好的技术。如果有不能更好支撑的地方我们就要考虑基于当前遇到的性能或扩展性问题我们究竟应该引入什么新的技术来解决,并做好方案选择和评估。
所以最后一个问题个人认为不是技术方向的问题,对于任何新技术都应该有敏锐的嗅觉去了解,但是并不是每个技术都要真正在项目里面使用。项目不是新技术的试验地,本身也不存在技术驱动的技术方向选择问题。而只存在业务和问题域驱动的技术架构优化。业务和问题驱动IT和技术,是从单纯技术思维开始转变的一个重点。
感谢大家阅读由分享的“IT圈如何解决技术学习、选择和方向发展的困惑?”希望对大家有所帮助,更多精彩内容请关注官网
免责声明:本文由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除
互联网发展瞬息万变,程序员就是用一行行代码改变世界,设想你做的app被大家喜爱,你做的网站深受大家亲睐的时候,那种成就感自然是不言而喻的。本文达妹就为大家总结在学习IT技术前,程序员不得不掌握的技能,希望对你有帮助:
我经常在想一个问题:编程其实是很有趣很好玩很实用并很有成就感的一件事,为什么会有这么多的学生觉得编程很难?
对于相关的计算机和代码知识,通常说来程序员比一般人要了解得多,下面我将为大家揭晓一些业内人士不会诉诸于口的真相。感谢大家阅读由大数据职场分享的“只有程序员了解的9个真相”希望对大家有所帮助
这是一个程序员的电脑硬盘,在一个叫做“学习”的目录下曾经生活着两个小程序,一个叫做Hello.java,即Java小子;另外一个叫做hello.c也就是C老头儿。这天晚上,程序员心血来潮,决定跟Python混个脸熟,于是hello.py也入住了这个目录。
Copyright (C)
Tedu.cn All Rights Reserved 京ICP备号-56 版权所有
选择城市和中心
达内北京亦庄大学生实训基地
达内北京网络营销中心
达内北京会计中心}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信