10 个编程提示,让你在实践中更高效、更具创造性 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
nana6
V2EX    程序员

10 个编程提示,让你在实践中更高效、更具创造性

  •  
  •   nana6 2017-06-22 09:59:09 +08:00 2391 次点击
    这是一个创建于 3035 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不知你有没有注意到,编程并没有非常好的自学书籍。当然,有很多片段的解释能从理论上指导各种编程语言。但是程序员们的实际行为方式呢?如果你追 Silicon Valley 这个(美国)电视节目,你就会知道,程序员也会像作家一样在工作中受到阻碍:理查德不再睡觉,穿着衣服走进一个游泳池。但一定会有更好的办法。
    其实,作家知道程序员遇到障碍的秘密。如果你是一个程序员(无论新手还是专家),这十个写作提示将帮助你成为一个更有效率、更具创造性和更自信的程序员。
    这些提示来自哪里?为了在教师访谈期间缓解我去年关于博士学位的内疚感,我读了很多关于飞机写作的书(参见末尾的阅读清单)。我发现许多书中,都有适用于编程的见解和方法。

    当然,这个清单是从零开始的。

    Tip 0:程序优先
    把编程安排在重点位置,毕竟人们整天都很忙。具体该怎么做呢?我们早上时是最有创意的,所以让你每天早晨的第一个小时变得神圣不可侵犯。不安排会议,不要检查你的电子邮件或社交平台。如果你早晨在家,甚至不要刷牙。对我来说,喝杯咖啡很有必要。但此后,只需要让你自己坐在椅子上(有人说,作家最有用的工具是胶水)。 把这段时间像一个会议一样安排进你的日程表,并防止这段时间免受其他任何事件的影响。

    Tip 1:不要害怕使用纸张
    在打开电脑之前,先在脑海中勾画出你的想法,列一个列表并在记事本上注释。《在十五分钟内撰写论文》强调了达到零草稿的重要性,而概念模板早于初稿,你已经花了所有傍晚和晚上的时间去思考、产生想法,现在只需要将它们表现出来。
    < Artist ’ s Way > 主张,自由的写作能帮你成为一个更好的程序员(或者雕塑家、投资银行家)。所以什么方式对你编程有效,就用什么方式。

    Tip 2:建立编程计划
    人类是具有“习惯性”的生物。因此,使编程成为你计划的一部分,为它设定合理的目标。这个理念来自于< Writing Down the Bones >。一段时间后当你形成习惯,如果某天没有编程,你就会觉得好像忘了什么事。

    Tip 3:跟踪想法以及 bug
    建立一个记录想法和问题的日志,当你受到阻碍或想要寻找其他事的解决方法,可以返回查找。建立编程计划( Tip 2 )是第一步。但创造力并不总是遵循着计划走,或者你可能正在忙于其他事情。所以,尽可能地记住你的灵光乍现。
    有人说写作会鼓励人更多的去写作。所以编程越多,你就会对编程产生越多的想法。我平时总是随身携带一本笔记本,以随时记录自己的想法。

    Tip 4:交朋友
    保持责任心会让我们做得更好。在你设定目标的周期内保持每周自查,与大家讨论编程中遇到的问题,共享资源和策略。 例如,我在 CMU 做计算机视觉的朋友每个星期一早上都会在校园咖啡厅做 15 分钟的常规会议。这样的交流能亲自去现场参加最好,如果不能去,还可以用在线论坛。当你向人们请教代码问题,他们可能会迫不及待的和你分享。

    Tip 5:借鉴他人
    就像把事情分开一般往往是把事情放在一起,程序员可以通过阅读和修改他人代码来为代码开发一个“耳朵”。在< The Sense of Style >中,Stephen Pinker 强调“好的作家是狂热的读者”。
    与写作(借鉴被认为是抄袭)不同,程序员将已有的库和样本用来支撑自己的项目是非常被鼓励的。你可以参考这些代码的来源,但是当已有人弄清楚一个问题时,没有必要重新发明轮子。

    Tip 6:认真沉思
    创造的过程,就是将你脑海中的代码进行结构化,体现到实际中并用它们解决某个问题。想象一下,在办公室里有两个书桌,一个用于写作(此 Tip ),一个用于编辑( Tip 7 )。从书桌能望向窗外,你可以异想天开、开放思考,像追逐蝴蝶一样追逐你脑海中的想法。
    不要害怕散步,或者害怕尝试可能是,也可能不是最好的最终解决方案。我最有生产能力的实习生之一,当想弄清楚她代码下一步该怎样写,她喜欢在 CMU 的走廊上走路。编程就像写作一样,不仅仅是在屏幕上打字,更重要的是你脑中想的东西。就像在种植前,先为土壤施肥而庆祝,然后再浇水。

    Tip 7:无情(但非卑鄙)
    如果你处于编辑阶段,你经常会“杀死你的亲爱的”。这句话已经被许多作家,包括史蒂芬金所推崇。这是关于消除多余的代码。
    例如,你可能花了很多时间让一个代码块工作,但现在你有更好的方式来取代它。如果你真的不能忍受它,那就消除它。Google 为员工提供了失败奖金,用于一些永远无法解决的项目(引自< How Google Works >)。所以,从你的代码存在的根本价值出发,而不是从自己的感情出发。

    Tip 8:对知识局限性保持警惕
    我们通常不会用汇编语言编程的原因之一是它不容易被人读取。较高级别的编程语言让我们觉得抽象,所以我们应该选择有意义的抽象语言。调用一些变量 1 和变量 2 对于任何其他使用你的代码的人(特别是你自己)会事倍功半,尤其是这些代码之后还会被删改。
    写作最大的挑战之一是确保读者能顺利跟上。使用空格、评论你的代码、花时间去创造能被理解的抽象和结构。如果人们不能理解的话,你的文章(或者代码)有多么优秀并不重要。

    Tip 9:停在一个向下的滑坡
    每天早上应该从前一天开始,每天将最后 10 %的时间用于准备第二天的工作。你可以为下一个代码块的结构做注释,也可以做一个事项列表。
    我曾驾驶一辆换乘车,通过并停在一个向下的斜坡上,我知道即使车的电池一夜之间耗完,我也能利用山的潜力来启动引擎。这就像在前一天晚上放好你的运动服。第二天,你只要直接走就好。

    将以上 10 点视为程序员的自学列表。编程是一个创造性的过程,就像写作一样,我相信这 10 个提示可以让你更有创意、更有成就、更不容易陷入困境。

    #####阅读清单:

    • Writing Your Dissertation in Fifteen Minutes a Day. Joan Bolker.
    • The Artist ’ s Way. Julia Cameron.
    • Writing Down the Bones. Natalie Goldberg.
    • On Writing: A Memoir of the Craft. Stephen King.
    • The Sense of Style. Steven Pinker.
    • How to Write a Lot: A Practical Guide to Productive Academic Writing. Paul J. Silvia.
    • If You Want to Write. Brenda Ueland.
    • On Writing Well: The Classic Guide to Writing Nonfiction. William Zinsser.
    3 条回复    2017-06-30 09:21:39 +08:00
    NaturalColour
        1
    NaturalColour  
       2017-06-22 11:43:39 +08:00 via iPhone
    全做到的话也不简单。
    jason2017
        2
    jason2017  
       2017-06-23 10:53:48 +08:00
    看完了,然后回想一下,脑子里啥都没留下。
    julypanda
        3
    julypanda  
       2017-06-30 09:21:39 +08:00
    文章中好多次出现作家
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4945 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 09:50 PVG 17:50 LAX 02:50 JFK 05:50
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86