• 【转】程序员的五大陷阱


    程序员的五大陷阱

    引言

    十九年了,作为一个老程序员,我study过各种编程语言,research过各种编程框架,use过各种编程工具,run过各种操作系统,startup过各种数据库,design过各种模式,test过各种unit,fork过各种线程,draw过各种UI,link过各种server。我每天晚上苦苦追寻技术的真谛,努力点亮程序员技能树,多年的学习下来,最大的感受是”坑,全TMD是坑!“。 
    好吧,让我们文明一点来说,阻碍程序员成长的不仅仅是技术,还有那些最容易掉入的陷阱。

    陷阱之一:有些技术就是垃圾

    这应该是最大的一个坑,很多貌似高大上的技术,其实毫无价值,一开始就应该被扔进垃圾堆。其中最具代表的应该是Visual J++,这个怪胎一开始就是微软为了狙击Sun公司的Java而特意推出用来搅局的棍子。它的语法与Java类似,但是不支持跨平台的Java虚拟机,只能在Windows平台上跑。 
    我总结了一下,不值得学习的技术包括以下几类: 
    1. 技术路线明显错误的技术,例如Visual J++ 
    2. 架构复杂,逻辑混乱,不值得深究的技术,例如最著名的MFC。很多人不愿意承认这一点,是因为怕别人嘲笑自己的智商,许多人也和我一样,曾经抱着《深入浅出MFC》苦苦研读,多年以后我认为研究MFC对我毫无帮助,那本书也许不错,但MFC实在是太丑陋了,MFC泥潭并非浪得虚名。 
    3. 实用性不强,一堆傻博士用来混毕业文凭的所谓技术,例如UML(统一建模语言),OWL(网络本体语言),MDA(模型驱动架构)等等。 
    4. 与自己的职业规划、技术路线毫无关系的技术。也许天才能够门门精通,我等普通人还是专心去学一个方向的技术为好。 
    在这些技术上浪费精力,还不如去泡妞,好歹能够陶冶一下情操。

    陷阱之二:总想去搭建空中楼阁

    《Effective C++》是我最喜欢的技术书之一,其中最重要的一句话是:视C++为一个语言联邦,当年的我第一次看到此话,真如醍醐灌顶,大彻大悟。具体来说,C++起码包含四个次语言,即C,Object-Oriented C++,Template C++和STL。 
    如果不了解这一点,就妄图精通C++,必定事倍功半。不学会一门技术的基础,就不可能真正理解这一门技术。这就好像是技能树中的基础技能不学会,就不能点亮高层的技能。 
    我曾经也教过初学者Java、C++和VC++,其中最不适合初学者学习的语言(或者叫技能)就是Visual C++,因为它的联邦更大。它起码包括Windows SDK、MFC、VC开发环境和C++,其中C++包括四个次语言,MFC又是一个出名的泥潭,Windows SDK是基于C的,好多函数都是七八个参数,那是使用C来模拟面向对象留下的怪样子。因此Visual C++堪称初学者杀手。要打击一个初级程序员,就让他去学习Visual C++吧,他会放弃的。

    陷阱之三:重复发明轮子

    程序员应该明白一个道理,学习技术就是为了完成任务,而完成任务的过程就是”在一定的时间内,使用一定的资源,在保证一定的质量前提下,达到一定的效果“。时间、资源和质量都是限制条件,因此对于程序员来说,使用成熟的技术、易用的框架、便于维护的平台都是最优选择。 
    很多程序员碰到问题的第一方案就是去埋头解决,明明有好用的UI框架,非要自己去写UI;明明有成熟的网络传输中间件,非要自己去写Socket,这种事情与重复发明轮子何异? 
    记住,只有在两个条件下,重复发明轮子才是正确的。第一,你有时间和兴趣去知道轮子是怎么生产的;第二,你的公司就是做轮子的。 
    以目前的基础趋势来看,学好用好一个成熟的技术框架,往往能够极大的提升程序员的身价。例如著名的Struts、spring、Hihernate三大框架;例如现在正火的jQuery;其实Android不也是一个Java的框架么。 
    正如三国里说的,SSH、Jquery和Android,得一可安天下!何必去重复发明轮子呢?

    陷阱之四:陷入细节

    计算机技术汗牛充栋,要细细研读所花费的时间是难以估量的。为了提升自己,使自己早日达到独当一面的角色,必须有一整套的学习方法。 
    第一,知道什么该学,什么不该学。又要提到MFC了,这玩意儿就是个泥潭,学它得不偿失。过去不该学,现在更不该学了。简单说来,很多专家的MOP观点是对的,即Money Oriented Programming,就是什么技术赚钱学什么。 
    第二,知道如何去最快掌握一门技术的精髓。一门技术其实80%的内容是没什么用的,例如Android,对于精通Java、Linux、XML、Eclipse的人来说,把它重点的Intent、Activity、Service、Layout等内容学上一个多月,就可以上手干活了。 
    第三,在实践中学习,还以Android编程为例,学上一年也不如自己开发一个app放到市场上来得快。 
    第四,也是最重要的,不要经常陷入细节。在计算机领域,细节这个东西是无穷无尽的,要开发一个Android app,先研究研究Android框架,一个一个细节撸过去就得一年,再研究研究java编程,从java到java虚拟机,虚拟机到编译原理,从编译原理深入操作系统,从用户态到核心态,从字符串到二进制,从二进制到CPU,从内存到cache,cache到磁盘。 
    因此,及时抽身,不要想弄懂一切,放弃一些细节,尽早上手才是王道。

    陷阱之五:缺乏职业规划

    一个人要想成功,必须在某个领域做到顶尖。对于程序员来说,最好的出路有两条,一是成为某个技术领域的顶尖专家,二是成为技术团队顶尖的领导人才。至于转行去搞行政、销售、HR,那是每个人都能做的。要走上这两条路,都必须及早规划,以及持之以恒。

    后记

    “世界上有很多东西不能通过学习得到,其中最重要的就是经历!” 
    曾经有个哥们对我说,他放弃了苦苦追求了五年的女神,只因为他觉得已经看透了这个女人,放弃已没有什么遗憾。我说:”你连人家手都没拉过,嘴都没亲过,你根本没有经历过这个女人,你看透个毛。“ 
    在各大招聘网站上,工作经验永远排在第一位,就是因为只有切切实实去经历一些事情,才能真正掌握做事的方法和重点,才能真正去”搞定“类似的事情。 
    程序员的五大陷阱是我总结出来的,有些人可能嗤之以鼻,但是只要你掉进去过后,还是会回来和我一起唱这首Only you的。

  • 相关阅读:
    4 MyBatis动态SQL之trim元素|转
    2 MyBatis动态sql之where标签|转
    websql
    请求相关注意
    axios
    混淆器
    linux查看内存情况
    【Linux】查看系统内存占用
    Vim与ctags/cscope
    Linux初始root密码设置规则修改
  • 原文地址:https://www.cnblogs.com/cslunatic/p/6388824.html
Copyright © 2020-2023  润新知