abbshr.github.io
abbshr.github.io copied to clipboard
Just 4 u
to all my friends
对最近周围的所见所闻发表一些看法。
我只想说,别当码农,也别把Geek当码农
除了会用C++/Java写非常非常牛逼的xxx管理系统,你还应该:
- 放宽视野。难道C语言只是让你用来写黑框框的“用户级”程序?难道用C++和Java写xxx管理系统就算牛B?这是纯粹的扯淡。因为他们往往用来做一些他们更擅长的背后工作(详见:操作系统、硬件驱动、编译器/解释器、协议、数据持久化、I/O、Hack programs……)
- 理解计算机的灵魂。计算机如何运作的?事件是如何被捕获的?系统内核是如何加载的?各个目录/文件是干啥的?Windows和Unix之间的差异究竟在哪里?为何都说Unix如此牛B而Windows弱的一B?一个程序是如何跑起来的?理解诸如此类理论会对问题的解决大有睥益。
- 善于应用。发现问题,并学以致用。
- 掌握至少一门脚本语言。写个爬虫还用Java,你开玩笑么。。拳击比赛分轻/中/重量级,程序语言也分,一些简单的工作完全没必要大动干戈,费时费力,动态/脚本语言在这里是个不错的选择。
- 学会自己解决问题。别一出问题就去拜大神,你是高智商动物,可以解决的。擅使Google/Baidu,加上自己的经验和掌握的知识。
- 扩展范围。技术流派千千万万,你必然不能全都掌握,甚至有些都没听说过。但是又不能拘泥与一个方面。如何学习?最好是沿着你的核心技术路线,一点点向外扩展,逐渐学习与之相关的理论/技术,将你主攻的技术/理论应用到各个/更广的方面,或者思考如何扩展他的应用范围,这样才算真正玩转。
- 编程解决问题。对于某些程序/系统中不喜欢的设计或你想要但没有的工具,你完全可以自己实现它并公之于众。把常用的命令集添加个alias等等。每次开热点你都一行一行的敲,不嫌麻烦么?为啥不写个shell脚本?
- 擅使命令。Unix Shell真是提升工作效率的法宝。有好多人看我敲命令时不解,明明点击下鼠标就可以搞定,为啥要用Terminal?第一,命令提供了相对底层的控制操作和直接的功能设置,很多在图形界面很难完成或没法完成的任务在命令行里一行搞定。第二,各种命令的搭配组合完全能到达意想不到的效果与超高的效率,远比图形界面的操作快捷N倍。第三,因为偏底层的操作,经常使用他们使你更加深刻体会(或激发你去研究)操作系统和某些工具的工作原理,在今后的工作中能更容易的排除问题,修复bugs。第四,命令行提供了更多爱不释手的功能。第五,敲命令更Geek范儿。
- 客观且用心看待新的或旧的东西。别跟风,别人家说什么你就唱什么。大数据里有很多可以研究的方面,但没必要啥都扯上大数据吧?(同样,还有并行计算、分布式、机器学习、人工智能等高端的话题)新的东西未必都那么好,旧的东西也未必有想象的差,关键是看你怎么看待和发掘。
- 别被洗脑。虽然放在最后,但这是我最想说的一个之一。不说政界的XXX,我也不想谈那个,在大学被洗脑是常事,因为你整天泡在那种氛围里,想保持自我很难,除非你和周围产生极大的隔阂。对于学术/技术领域的洗脑,莫过于我上面提到的几种,不是我鄙视说那些高端的技术,我想说的是别盲目的做出选择,然后盲目的学习,最后盲目的跟着研究。你可能被那些又酷又彰显身份的高端大气的名词所吸引,但真正能搞的津津有味并有所成就的也就那么几个人。你可能心血来潮啥都想搞,但真正有能力、持之以恒且保持兴趣的也很少。如果你研究来研究去,本来底子就薄,还看啥都新鲜,被着人家牵着走,最终必然会一事无成,剩下的只能是迷茫和消沉。
最后附赠《黑客与画家》中的几段话:
如果你不爱一件事,你不可能把它做得真正优秀。
坚持一丝不苟,因为那些看不见的细节累加起来,就变得可见了。
你往往受到巨大诱惑,去解决那些能够用数学公式处理的问题,而不是去解决真正重要的问题。
他们接受流行,不是因为想要与众不同,而是因为害怕与众不同
大学和实验室强迫黑客成为科学家,企业强迫黑客成为工程师。
黑客更像是创作者,而不是科学家
画家学习绘画的主要方式是动手去画。学习编程的方法,应该是通过自己写程序,从实践中学习,而不是通过大学课程。
黑客的出发点是原创,最终得到一个优美的结果;而科学家的出发点是从别人优美的结果,最终得到原创性。
如果你把一个画家的作品按照时间顺序排列,就会发现每幅画所用的技巧,都是建立在上一幅作品学到的东西之上。某幅作品如果有特别出色之处,你往往能在更早的作品上发现一个小规模的初期版本。
对于黑客来说,采取像画家这种做法很有好处:应该定期的从头开始,而不是长年累月的在一个项目上不断工作,并且试图把所有最新想法都以修订版的形式包括进去。
👍 good point