懒羊羊闲话2

news/2024/7/23 16:20:28 标签: 如何学习编程, 编程技巧

前言:

笔者谈不上是某个领域的高手,也不是大厂的某个神秘高手,一直游离于小型公司,写下这篇文章献给那些无法接触到好的学习环境,苦恼自己原地踏步的coder。

1、如何快速熟悉某个行业

        作为一个编码多年的程序员,我们要认识到仅仅会编码是不够的。老板愿意付给我们薪水,并不是表扬我们的编码水平,老板也大多数不太懂技术的细节。老板关心的只是我们的投入产出比,就是说付给程序员那么多工资,我们能给公司带来多大效益。这就决定了编码是为了实现业务,为了卖钱的,并不是单纯的炫技!

        所以,作为一个老鸟,熟悉一个行业是非常重要的!这样才能把我们的技术最大化产出。新进一个行业如何快速熟悉呢?

        100个行业关键词,找出这行业里的100个关键词,反复把它弄懂,这样我们就有可以有了和其它同事沟通的基础。

        买2~3行业的经典书籍,反复精读!如果仅仅是靠请教同事,今天学一点,明天学一点,就不能有效形成自己的知识体系。

       和该行业的专家聊天,因为前面我们已经有了准备,再多和行业的专家聊天,有助于把书本上知识变成我们的认知。知识转化为我们所用才有价值,如果仅仅知道得很多,却运用不起来,很快会被大脑给遗忘!

2、如何成为某个领域的专家

        脑科学告诉我们,成为一个领域的专家没有捷径的。因为脑神经建立链路,并且能达到快速自如的效果没有10万个小时是不行的。看过很多名人传记,他们说别人认为他们是天才,而他们觉得自己仅仅是更努力而已。

      《认知觉醒》里的复利曲线也是这个道理,前面可能我们努力了8万个小时,往往觉得自己很多东西都似懂非懂,可能我们再努力突破某个临界值之后,后面的进步就大为迅速,有点像是打通任督二脉那样。

        所以大家知道了大脑的原理之后,就应该守住本分,而不应该半途而废。打退堂鼓造成的后果就是本来脑神经已经建立很多链接,因为得不到进一步地固化,后续就慢慢消失了!

3、如何写出稳定可控的代码

        Don't repeat! 不要重复自己,绝大部分新手写代码都喜欢遇到问题解决问题,许多新手写代码,喜欢到处复制黏贴,像贴狗皮膏药那样,只求能把功能完成就可以了,从来不会停顿下来思考一样代码有什么可以共用的地方。我见过一个项目里,光是xml解析库就有4~5种,而且每个库都是有各自缺陷的。

         不懂得把该行业所涉及的技术切割成不能再切割的技术点,然后为这些技术点打磨工具箱。导致的问题呢就是每次做一个新项目,又反复地去查找解决技术方案,这样我们曾经的积累就约等于0!这样行为一个最大的问题点就是每个新项目都疲于奔命,为了赶进度又疯狂加班,形成一种恶性循环。

       天下文章一大抄,严格按照经典书籍的原则写代码,一开始不懂不要紧,先照抄,抄久了总有会明白的一天。

       测试先行,前面说到我们准备自己的技术点工具箱,那么应该自己测试好自己的工具箱,而不是随便搞搞就丢到工具箱里,那样相当于我们给自己制造一大堆生锈的工具。写大型代码的时候也是一样,应该写一个小系统,等测试稳定之后再往大系统里加,而不是边加边测,出了问题再大改!

       防御式编程:

       1)禁用跨模块的全局变量,慎用单例模式

       2)学会分割小函数,经调用,代码的bug和函数的行数成一定的比例关系,函数过长越容易出现问题

       3)仔细检测每个函数传入的参数,断言异常处理要做好!我也是花了很长时间才明白断言和异常处理的区别。

断言是帮助程序员在调试阶段避免粗心导致的程序出错,

举个例子我们断言传参的指针不为空指针,只要我们精神状态好的时候,不会说故意传个空指针让程序崩溃,但是人总是会有状态坏的时候,加功能的时候不小心就传入了空指针。这样断言就能够在调试阶段提前预警!

断言和异常处理是形影相随的兄弟,并不是说我们做了断言,就不需要再去做异常处理了。因为断言只能在调试阶段帮我们避免错误,运行阶段还是要靠异常处理的,比方说参数不对了,我们就应该函数直接返回,而不是继续往下运行业务。

       4)日志,适当的日志配合异常处理,是我们解决问题的最有力工具。若是软件已经运行在电脑上了,我们大多数能依靠的就是日志了。因为不管测试多么努力,程序员多么努力,BUG是不可能消除干净的,这个时候日志就是最后一道防火墙了!

        其实还是有很多很多写出高质量代码的规则,我就不再一一列举,我只是把我认为比较重要的几项挑出来给大家讲讲,若是你们能看懂1~2点,你们也就渐渐能掌握写出稳定的代码了!

4如何学习编程

       很多新手在学习一门新的语言的时候,往往听到别人说某些本书籍经典,就赶紧网购好几本回来。然后在几个阳光灿烂的周末翻一翻,闻一闻,不出几天就觉得书本晦涩难懂,远不如打几把游戏来得舒服,后面就渐渐地把它们束之高阁!

       我们决定学习某本书之前,应该先翻翻,自己是否有触动,是否太难,还是太容易。若是理解太困难,证明这本书在目前这个阶段不适合自己学习。如果太容易,再看它就纯粹是浪费自己的时间!

       我们应该凭感觉学习,就是一本书不要求把所有的知识点掌握,只要它能给我们带来触动,然后我们能够运用到实际工作中,这本书就值得了。但是大部分新手还是保持以前应试教育的习惯,力求把书中所有的知识看一遍,也不看看这些知识点和自己的工作生活是否有关联

       不能关联的知识点即使你学了,也很快会忘记的,更谈不上运用它了。

       所以我们不关联不学习,不触动不学习,只要学习到的1~2点知识能够实践。远比知道20个知识点更重要。就像是珍珠螺那样,一层一层加厚我们的认知圈!假如时日,一定能形成复利曲线


http://www.niftyadmin.cn/n/5166213.html

相关文章

postgresql源码编译安装

基本环境 安装方式:编译安装 操作系统:rokeylinux 用户:postgres 安装位置:/usr/local/postgres data位置:/home/postgres/data创建用户建路径赋权 useradd postgres mkdir /usr/local/postgres mkdir /home/postgres/data chown postgres:…

能谈一下 CAS 机制吗

(本文摘自mic老师面试文档) 一个小伙伴私信我,他说遇到了一个关于 CAS 机制的问题,他以为面试官问的是 CAS 实现单点登录。 心想,这个问题我熟啊,然后就按照单点登录的思路去回答,结果面试官一…

浅谈数据结构之链表

链表是一种灵活的数据结构,有单向链表、双向链表和循环链表等多种形式。在本文中,我们将深入探讨单向链表、双向链表、循环链表的定义、Java实现方式、使用场景,同时比较它们的不同之处。我们还会介绍链表与队列之间的区别。 单向链表 定义…

简述扫码登录原理及测试要点

扫码登录本质是解决将APP端的用户登录信息(通常是Token)通过扫码的形式安全稳定地同步给Web端。 操作流程: 打开登录页面,展示一个二维码(web);打开APP扫描该二维码后,APP显示确认、取消按钮(app)&#xf…

力扣最热一百题——每日温度

Python后面的文章,内容都比较多,但是同时我又想保持每天更新的速度,所以Python的文章我继续打磨打磨,先更新一篇算法的文章。 一身正气报国家,旁无乱境不恋她 ヾ(◍∇◍)ノ゙ 力扣题号&#xff1a…

点信息标注_BillboardTextActor3D

开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码 demo解决问题:点附近创建左边或其他信息,且信息面板显示状态不受相机缩放、旋转影响 prj name: BillboardTextActor3D #include…

【ROS】Nav2源码之nav2_smoother(平滑器)详解

【ROS】郭老二博文之:ROS目录 1、简述 从路径规划模块’ nav2_planner 中给出路径通常是不平滑的。 所谓平滑器就是使规划的路径更平滑、平稳,可以运行的更优雅,并且减少硬件的磨损。 nav2_smoother在Nav2导航中的定义了平滑器接口的,nav2_smoother加载了一组平滑器插件,…

Jekyll框架编译GithubPages,提示没有docs

Jekyll Converters::Scss build issue: No such file or directory dir_chdir - /github/workspace/docs Error: No such file or directory dir_chdir - /github/workspace/docs 解决方案: 修改github page仓库中–> 设置—> pages 把里面的\docs&#xf…