V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jybox
V2EX  ›  程序员

给初入门程序员的建议(原创文章)

  •  3
     
  •   jybox ·
    jysperm · 2016-07-02 18:30:53 +08:00 · 3884 次点击
    这是一个创建于 3067 天前的主题,其中的信息可能已经有所发展或是发生改变。

    (原发表于 https://jysperm.me/2016/07/suggestions-for-beginners

    我们经常看到网络上有很多黑程序员的段子,但那不过是一群居心叵测的人散布的谣言,企图通过给新人们留下负面的印象,进而阻止更多人进入这个行业的方式,来保证不思进取的自己不会被行业淘汰。

    解决问题的途径比得到结果更重要

    解决问题是一个通用的能力,本应在学生时代习得,若是不擅长解决问题,怕是短时间内很难提升,但在一个具体的领域里,往往「途径」更加重要。

    当你在一个论坛或社区提出一个问题时,有些惜字如金的大牛会直接丢给你一个链接,不会多留下哪怕半个字,不要小看一个链接,它可能比直接告诉你答案更有价值。

    当你进入一个新的领域,遇到问题时往往不知道应该去哪寻找答案,这时候你会想如果有一个网站,列出了作为新手可能遇到的一切问题该多好。但世上没有这么好的事情,往往这些问题和解答分散在不同的网站上 —— 从这个链接就可以点过去。

    不要相信一句话就可以描述的真理

    网络上的大牛经常提出提出一些简洁有力的口号,例如「抽象可以解决计算机领域的一切问题」、「好的代码不需要注释去解释」、「动态类型语言才能提高编码效率」、「 PHP 是世界上最好的编程语言」等等。

    并不是说这些观点是错误的,但它们就像「苹果总是会落到地上」这种简单的理论一样,描述的情况是片面的,而非普适的。有些结论是前辈们花了大量的时间和精力探索出来的,但光知道一个结论对你的编程是没有太多指导意义的,更多的细节隐藏在得出这个结论的过程中。

    所以如果提出这些观点的人没有深入介绍、你也不打算自行了解,索性不如忘掉这些话。

    深入了解你使用的工具

    在编程的过程中,我们需要借助大量的工具来完成版本控制、调试、重构、构建和部署等工作。包括你的编辑器( IDE )和操作系统都是必不可少的工具,选择一组好用的工具,并且不断地学习和配置它们,这样才能逐渐提高工作效率。

    每个人在选择工具的过程中都会掺杂大量的个人喜好,但我建议大家在选择工具时考虑下面几个因素:是否是免费软件或开源软件、是否有公司在维护、是否有大量用户和活跃的社区、是否支持插件或拓展、是否支持多种平台。

    写出可以运行的代码只是最基本的要求

    当一个程序可以运行起来了,不要高兴得太早,这只是一个开始。例如你是否考虑到了各种边界情况;当程序收到非预期的输入会发生什么;所依赖的外部服务出现异常会怎样,发生错误时是否能从日志中还原出现场;如果程序处理的数据量或运行时间提高几个数量级会发生什么;构建、测试和部署过程是否做到了自动化;代码是否为将来的修改做好了准备等等。

    先精通一种语言,再广泛涉猎

    很多新手会各种编程语言搞得头晕目眩,不知道先从哪个学起,索性不如左右开弓,同时学习。

    一旦你这样做了就会发现很难将同时学习的两种语言的知识区分开,因为它们实在太像了。但如果你先精通一门语言,了解了它每个语法的工作方式之后再学习其他语言就很轻松了,因为你对已掌握的语言已经足够了解,不会和新语言混淆。而且你会不由自主地用已掌握的语言去和新语言比较,更容易发现它们之间的差异,发现各自语法的内在逻辑。

    (原发表于 https://jysperm.me/2016/07/suggestions-for-beginners

    16 条回复    2016-07-25 19:06:50 +08:00
    lechain
        1
    lechain  
       2016-07-02 18:37:24 +08:00 via Android
    非常棒,支持一个~
    Reign
        2
    Reign  
       2016-07-02 18:39:25 +08:00 via Android
    jy 和 sperm 不是同义词么?跟你头像一样
    isCyan
        3
    isCyan  
       2016-07-02 20:58:10 +08:00 via Android
    第三点显然在挺 Atom 太明显了
    tcdw
        4
    tcdw  
       2016-07-02 21:02:06 +08:00 via Android
    这篇文章还是比较中肯的
    murmur
        5
    murmur  
       2016-07-02 21:09:02 +08:00
    @isCyan 阿童木不差啊 插件比较多 就是比宇宙第一记事本 VS Code 卡一点
    VSCode 那个自己改 json 弄配置太 geek 了 阿童木管咋的还有个图形化界面
    jon
        6
    jon  
       2016-07-03 02:16:53 +08:00
    「 PHP 是世界上最好的编程语言」

    为何要挑起战争?
    asj
        7
    asj  
       2016-07-03 06:28:58 +08:00 via iPad   ❤️ 2
    "不要相信一句话就可以描述的真理"
    比如说上面这句话
    lowzoom
        8
    lowzoom  
       2016-07-03 10:20:11 +08:00
    太空了,还不如出道算法题给新人练习实在
    Patrick95
        9
    Patrick95  
       2016-07-03 11:59:06 +08:00
    @asj 233
    leeloto
        10
    leeloto  
       2016-07-03 12:37:50 +08:00
    @lowzoom 编程是技艺,算法已经属于科学范畴了,我发现好多人都不明白这个,好多人回答别人如何学习编程总有人推荐什么计算机原理,算法呀等等,真实无语
    fuxpro
        11
    fuxpro  
       2016-07-03 20:30:34 +08:00
    @leeloto 其实别人有这种混乱也是正常的,国内和国外的实际情况还有很比较大的差别的
    lowzoom
        12
    lowzoom  
       2016-07-03 22:06:35 +08:00
    @leeloto 做算法题本身就是代码实践,轻视算法题的人,都是一些半路出家基础不行的代码民工
    mingyun
        13
    mingyun  
       2016-07-03 22:43:50 +08:00
    博主也是 phper ,哈哈
    leeloto
        14
    leeloto  
       2016-07-04 21:04:12 +08:00
    @lowzoom 我没有说算法不重要,我只是说一个阶段一个任务,学习要有阶段有方法
    lowzoom
        15
    lowzoom  
       2016-07-04 21:25:03 +08:00
    @leeloto 是的,学习要有阶段有方法,所以在程序初入门的时候,就应该做一些初级算法题来练习,我相信这个问题,我们是有共识的,你可能只是将我说的算法题,误解成了对算法的理论研究而已,握个手
    wizardforcel
        16
    wizardforcel  
       2016-07-25 19:06:50 +08:00 via Android
    @lowzoom 初入门应该做算术而不是算法。没学会走就想跑??
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4969 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:19 · PVG 09:19 · LAX 17:19 · JFK 20:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.