总结:读《程序员的自我修养》

    在《程序员的自我修养》这本书里,作者主要讲了怎么成为一个合格的程序员、一个优秀的程序员。如果一个程序员想要成为全栈工程师应该怎样培养自己。UI的重要性以及如何成为一名合格的UI。

    首先,应该让自己成为一名合格的程序员。可以自学,也可以接受科班教学,但有一个前提是对编程这件事具有热枕。如果不知道自己为什么要变成或者仅仅把它当做一个谋生的工具,那么是不太适合编程的。编程太枯燥了,没有强烈的兴趣,没有孜孜不倦的探索精神,难以为继。首先,要学会自主学习。作为一个新手,你可以买一些编程书籍来看。21天精通xxx、玩转xxx之类、xxx的私房菜等等都行,但当你逐渐精深,就要开始快速学习。不建议买书,因为太慢,你已具备了触类旁通的能力,除了那些比较经典的譬如《算法导论》、《数据结构》之外,其他的都可以通过互联网快速学习。

    再说说入门,要目标导向,譬如你正在学JavaScript,你可以尝试用它做一个静态网站,如果你正在学wxPython,你可以做个图形界面的程序,看得见成果,才有不断前行的动力。但是,不要贪多,新手常犯的一个错误是贪多,所以大量的程序员看似什么都会,谈起技术来滔滔不绝,但真要实操,可能一点简单的任务都完不成,要把基础大牢。博闻强识的基础是先深耕某一领域。作者在书中反复强调一万小时定律:如果你花了一万小时去做某件事那么你一定会成为该领域的专家。而其他某个你想涉猎的方面,可能只需花一百个小时去学习,然后就能干的还不错。所以学习,一定要找准重心,当你认定了某个将要一生为之奋斗的领域之后,要向该领域倾斜绝对比例的精力。在你认为你已成为该领域的专家之前,其它都只是辅助。

    还有一点是,不要唯技术论。有很多对编程充满热枕的人一心沉醉在代码的世界之中,忽略了生活以及人际关系。作者说,适度经营人际关系绝对可以放大你的努力,让你在职场中获得更多的机会。要注意和同事沟通,要关注圈子里的活动,譬如QT、腾讯、CSDN都会定期举办开发者大会,虽然可能要门票,但如果能参与其中,就有机会和来自全国甚至全世界的优秀开发者交流。对个人视野的拓展大有裨益。在IT行业工作,身边的人肯定也大多是IT人,和他们建立友谊,交流技术问题也有助于提升。但前提是你身边的人足够优秀,如果氛围太过脱离技术的范畴而倾向于生活的琐碎,那么这样的同事敬而远之。

    接下来讲一下生活,程序员仿佛是一个没有女朋友或者男朋友的群体,这样刻板的印象说明了程序员是比较不懂生活的群体。或许懂,但是没有花足够的时间去经营,往往一台电脑在手,就两耳不闻窗外事了。如果这样子去生活,那么多年以后,你得到除了一堆干巴巴的快要过时的技术还有些什么呢?所以编程的同时还要开发一些与程序无关的爱好,譬如音乐,譬如文学,譬如摄影。工作是生活的手段,不是目的。对编程是要有热枕,但是过犹不及。一个能把爱好经营得很好的人,编起程来不会太差。

    要学好英语,虽然英语不好不太影响写代码,但绝对影响你的视野。编程的时候难免遇到难解的技术问题,这时候首先考虑的肯定是向搜索引擎或者技术论坛求助。但百度的技术性并不强,求助于百度,结果往往差强人意,谷歌给你的意见往往更专业,但前提是进行英文检索,这样你才能够得到来自全世界开发者的技术方案。而且相比于国外的stackflow,国内的csdn也显得不够专业不够精深。所以一定要掌握英文。

    接下来讲讲怎样成为一名全栈工程师。全栈这个词最早是Facebook提出来的。顾名思义,能单枪匹马解决所有问题。这里讲一讲狭义的web全栈。从前端到后端再到部署,都要会。那么你要懂操作系统,或许你觉得这不成问题,因为你日常使用Windows,但对于全栈来说,这不叫懂。你知道怎么使用服务器版无图形界面的Windows吗?你能把一个网站部署上去吗?如果不能,那还得学,但也不一定要学Windows ,可以是Linux或者其他。我推荐学Linux,原因不言而喻。然后你要懂一门后端语言,java、php、python……都可以。掌握那门语言之后你还得会使用它的框架,java的spring boot、php的thinkphp、Python的django……然后你要懂前端的语言,JavaScript、css、html,当然框架也少不了,react、angularJs、vue……至少一个。再然后你要懂UI,不然做出来的东西也是没有商业价值的。UI不仅仅是切图,你首先要设计,切图是设计之后的事。这就很考验一个人的审美了。所以平时要多思考、要陶冶情操、要提高艺术鉴赏力……

    最后是工具问题。做开发,趁手的工具很重要。但并不是大而全就好,对于繁琐的图形界面操作,能用命令行解决就用命令行解决,能自己动手写脚本就自己动手写脚本。每天给你节省两份三分钟,那么在长期的工作生涯中也可以节省不少时间,更主要的是,你的思维将不会那么频繁地被打断,工作高不高效与思维连不连贯有很大关系。

    这里说到工作的效率问题了,那么除了思维的连贯性它还与什么有关呢?还与思考的深度有关。很多程序员在接到任务之后都是立刻就凭感觉开工了,代码写完交工却发现自己写的东西与需求严重不符或者说一个问题本来可以有更好的解决方案。于是又要返工,浪费了大量时间。所以开工之前要先思考,看怎么做才好。胸有成竹了再动手,这样就一马平川了,而且返工率也会低得多。有人说一个优秀的程序员拿百分八十的时间去思考,花百分之二十的时间编码,我觉得有点夸张,但思考的时间起码要占百分之三十吧。

    再讲回到命令行,可能它的黑框框你看着就恐慌,还是熟悉的图形界面比较有安全感一点。但你用熟了就会觉得无比亲切。学习命令行不需要专门去看书,譬如《精通shell编程》、《vim命令大全》之类的,那是写给系统管理员看的。你只要记住几个比较基础的命令,譬如scp、cd、cp、pwd、ls、tar、mv,就能对付大多数场景了,这几个命令也不复杂,多敲几遍就熟了。

    关于工具,再说说IDE和编辑器,现在好多IDE都是大而全,基本上你能想到的工具它都有,但其实很多都是你不需要的有没有发现,这样会产生工作噪声,分散注意力,也会影响工作效率。譬如我用pycharm做开发的时候往往就因为想要探索它的奇淫技巧而跑偏,最后代码没写,不常用的技巧掌握了一堆。现在的开发工具都在往可定制的方向发展,需要什么功能,下载一个插件,即插即用,这样就屏蔽了很多你不需要的东西,轻装上阵、效率更高。

    再讲一讲重构,重构是开发里面很重要的一环。出于工期的限制,你可能需要很快地去写出一版能运行的代码,虽然能对付领导,但项目的健壮性和可维护性却不算好,这样你就需要不断重构,一旦发现代码的坏味,马上进行更正。什么是坏味呢,它可以是一个级别过高的变量、可以是一段冗余的代码、可以是一个不安全的类。一经发现马上处理,不断进行修正有益于项目的行进,也有助于个人技能的提升以及威望的建立。

    最后一个是输出。人的忘性是很强的,很多东西你不归纳不总结,就会遗忘。这会造成巨大的浪费,所以工作之余,还要坚持写作,不会占用你太多时间,一周写篇博客记录你的想法即可。这样做意识可以巩固你的知识库,二是让别人看到你。一个人怎样才能成为专家呢?别人都认为你在这方面很专业,你就是专家了。博客是你让人认识你的途径,它不仅可以让无名的读者认识你,也可以在找工作的时候让HR认识你。发布博客的平台也值得考量,如果你是一个全栈工程师,你当然有能力自己搭个炫酷的、或者有品位的博客。但这样做的一个显而易见的缺陷是——没有读者。所以建议还是根据自己的定位选择一个主流博客网站。国内的推荐简书和CSDN。其次就是写作技巧了。要写好一篇文章,首先当然是要懂语法,要用好标点符号,要让语句通顺。然后是要有自己的思考在里面,不要灌水,不要敷衍了事。要认真写。写完之后修改,一遍遍改,去掉冗余的,补充不足的。改到自己满意为止。

    对《程序员的自我修养》就总结到这里,希望能帮到你。

猜你喜欢

转载自blog.csdn.net/qq_42229092/article/details/104485376