一个程序员的选择

一个程序员的选择



前言:BlindingDark是我认识的很有想法的一个年轻人,今天他给大家带来一篇关于『选择

』

的文章,人生是有很多选择组成的,程序员的选择也有很多,找一条最适合自己的路吧。

每个人都有最适合自己的道路,所以请选择能让自己舒服的姿势。毕竟人生苦短,对自己好点。 





比如我,就搞不来学术研究,就不喜欢研究语言的细节实现,不喜欢研究算法,因为我人比较笨。



所以如果你看到别的大佬大学搞 ACM,搞编译器,工作去 BAT,微软,谷歌 Facebook,你也跟着学,结果发现自己干啥啥不行,不要怀疑自己,要承认自己的确就不是那块料。 



所以,认识你自己,接受你自己,找到最适合自己的路,比写一万行代码更管用。



所以下面仅是一家之言,仅供参考。



1设计模式

找工作的时候,我经常被问到的问题之一就是所谓的设计模式。而我的作答一般是,『了解其思想,而不局限于实现。』



先说个人观点:

  • 尽可能晚的接触设计模式。

  • 先写代码,再想设计模式。

  • 不懂设计模式无所谓,但一定要多思考。



  • 过早的接触设计模式,再加上许多人对设计模式的神化,很可能导致你个人的思考被其束缚。 





    设计模式的重点不在其实现,而在其思想。只是因为 Java 语言本身的表达能力有限,所以才使得其代码实现变得比较复杂。



    我见过许多人把它做为知识点一样,去记忆那些实现代码,我觉得这种行为是很可笑的。 



    我个人认为正确的学习姿势是,在你已经写了一定量的代码,尝试使用自己的思路去解决过一定难度的问题,有一定程度的基础和经验的时候再去看设计模式。 



    这样在看的过程中你就会有感触,『哦,这种模式就是我平时用的某种方法的变形,那种模式比我写的更严谨,而这种模式我还没有见到过……』这样对照对比着去学习,才能让你从中汲取知识,且不会让你困扰于设计模式的细节实现,以及陷入到滥用设计模式的陷阱中去。 



    另一种学习设计模式的姿势就是,换一门表达能力更强的语言,看看它们是怎么解决的。这样你就能摆脱实现细节,专注于思想本身。



    2编程语言

    说到语言,新的语言层出不穷,经常会有人发出这样的疑问:



    我应该学什么语言?

    我现在使用的技术是不是快要过时了?

    我要不要去追赶下一个热门技术? 





    找到工作短短一个月内,我就学习了三种语言,而且目前所使用的主语言我之前连听都没听说过的,但是工作三个月后,我已经基本熟练掌握了语言的特性和用法,至少足够应对工作。



    我是怎么做的?



    答案是:



  • 我学过 Lisp。所以在语法层面,我可以快速上手任意一个所谓有各种高级特性的新语言。



  • 我认真学习了大学本科的计算机专业课程。比如在 Web 开发方面,计算机网络,数据库原理对我的帮助很大。



  • 我喜欢编程本身,所以学习对我来说是一种享受,而不是痛苦。



  • 所以,要不要学习新语言/技术?



    我的答案是,掌握一种高级抽象形式,以及打好基础,能让你快速学习任何一种新技术。 



    当你有了这种能力之后,就不会惧怕新技术,而是可以根据需要来选择任何一种新技术,即使再更新换代,有再多层出不穷的技术出现,你也能游刃有余。



    有了扎实的基础和快速学习的能力,同时还要保持求知欲和好奇心。要像海盗探险一样积极去寻找有助于自己的尚未探索的技术领域,毫不吝啬的掠夺那些有助于自己的知识来扩充自己的宝库。



    而在快速进化的计算机领域,如果你是一只懒惰的海盗,不持续更新你的技术,那么你很快就会被时代扔下车。



    不仅仅是语言,其它譬如操作系统、开发环境、开发工具等,也要积极去跟进更新。选择那些业内最前沿、社区最有活力的技术并熟练掌握它们,把自己武装到牙齿。



    3前途/钱途

    我经常看到很多人在讨论这样的话题:

    『某某方向最近很赚钱,要不要去学一下。』

    『我是培训出来的,据说程序员很赚钱。』

    『学这个技术以后还有钱途么?』 



    没错,赚钱养活自己的确是基础需求,但是你真的想要的就只有赚钱么?



    做你自己想做的。



    我一直认为,工作是用来践行自己的一种方式,而赚钱只是其附加属性。如果一个职位让我感到很痛苦,那我可能会拒绝。只有你在做你喜爱的东西的时候,你才会全力去做,才是最有效率的。 



    所以不要犹豫,听从你内心的想法吧。



    有时候在长时间重复劳动之后,难免会觉得枯燥。其实计算机远不止写代码,还有好多有趣的东西值得你去发掘。不折腾的程序员不是一个好程序员。 



    操作系统换成 Arch 或者 Gentoo,有点闲钱买个树莓派玩一玩,掌握 Emacs/Vim,搭建一台服务器…… 



    你可是程序员!看到不爽的就去改造它!而不是适应它!



    还有一点就是要有黑客精神。据说每个程序员内心都有一个黑客梦,其实攻击者那叫骇客(Cracker),只要你有一颗不被束缚的心,你就是黑客(Hacker)。 



    当你不仅仅把计算机视为一只饭碗的时候,你才能看到更多的东西,才能获取更广泛的知识。



    愿大家都能成为一只 Happy Hacker。

    ·

     END ·



    一个程序员的选择