一线程序员十几年工作编程经验总结

已收录   阅读次数: 1,103
2022-04-1011:06:51 发表评论
摘要

作为程序员,经验是十分重要的,工作时间的长短也能间接反应该名程序员的能力。不过,如果学习掌握了他人的工作经验,岂不是就缩短了因为时间长短而造成的经验差距?伯衡君汇总了一些一线程序员工作十几年的经验,分享给大家……

分享至:
一线程序员十几年工作编程经验总结

开篇寄语

作为程序员,经验是十分重要的,工作时间的长短也能间接反应该名程序员的能力。不过,如果学习掌握了他人的工作经验,岂不是就缩短了因为时间长短而造成的经验差距?伯衡君汇总了一些一线程序员工作十几年的经验,分享给大家。

前情提要

内容详情

经验之所以是经验,就是有可能是错误的,所以下面所写的经验只是适用于他们,自己则需要择优选取适合自己的。

  • 永远对所做的事保有耐心和热忱,全力以赴
  • 终身学习,有计划的持续学习并付诸实践,但不仅是新语言或框架,更要专注于软件开发的基础上,学习资源可以从论文、大公司博客、YouTube 视频等等获取
  • 找个愿意帮你的导师,跟人学是最快、最高效的捷径
  • 解决问题的最佳方式是有一颗精力充沛,神清气爽的大脑,所以,打你累了,就去要休息,如果下班时候还没有解决掉问题,关掉电脑将它留给明天
  • 别重复造轮子,能用现有成熟的轮子就用现有的
  • 科学利用搜索引擎,不仅要有经验还要大量阅读知道要去找什么,伯衡君曾经撰写过一篇使用 Google 搜索引擎技巧,具体可以参看这篇《把搜索玩出花来,搜索引擎高级搜索语言,没有什么搜索不到》,如果从 stack overflow 复制粘贴解决方案,确保自己理解了,善用 Stack Overflow,并且建议附上链接URL
  • 不时看看别人的代码,也让别人看看你的代码,交流代码编程想法
  • 遵循文件化标准
  • YAGNI 原则:除了明确要求的,别多做闲事。别总预期未来,尽快把能用的东西做出来。只对解决当下问题至关重要的部分进行编程
  • KISS 原则: “Keep it simple, stupid”,或者 “Keep it stupid simple”,简洁的像傻瓜是一种设计原则,讲的是绝大多数系统保持简洁而非复杂才效果最好。虽然这合乎逻辑,有时却难以实现,可能是想太多了
  • SOLID 原则:当这些原则被一起应用时,它们使得一个程式设计师开发一个容易进行软体维护和扩充的系统变得更加可能。SOLID所包含的原则是通过引发编程者进行软体原始码的代码重构进行软体的代码异味清扫,从而使得软体清晰可读以及可延伸时可以应用的指南
  • 以终为始:一是凡事要有目标;二是凡事要有计划;三是凡事要有原则。正所谓“凡事预则立,不预则废”。白话来说,以终为始,就是在做事之前,先想想结果是什么样子的,这个结果是否能达到最初的目标。小心X-Y问题:为了解决 X问题,觉得用 Y 可以解,于是研究 Y 问题,结果搞到最后,发现原来要解决的 X 问题
  • 分治:做架构时不要想着一次性把所有的功能都做好,要拥抱 MVP(Minimal Viable Product),最小可运行版本。先让程序完成最基本功能上线,根据反馈调整和决定下一步的迭代。对于每个功能点,创建里程碑,然后去迭代
  • 服务自治:在系统设计时,要考虑服务上线后,对于问题要自感知、自修复、自优化、自运维及自安全
  • 拥抱变化:重视架构扩展性和可运维性。无状态的系统的是可扩展的和直接的。任何时候都要考虑这一点,不要搞个不可扩展的,有状态的东西出来。否则,一旦需要改变,成本很高
  • 尽量自动化:使用集成工具,并尽你所能地自动化,人力成本既慢又贵,还有经常不断的人工失误。如果不能降低人力成本,反而需要更多的人,那么这个架构设计一定是失败的
  • 依赖:依赖原则是去除依赖、弱化依赖、控制依赖。多一个依赖多一分风险。能不依赖则不依赖,能异步弱依赖不要同步强依赖。实在不能弱依赖的,比如必须要调用加密存储来获取数据库的密码,不然无法连接数据库,可以控制获取密码在服务启动时进行,如果获取不到则服务启动失败,因为现在都是集群部署,一台无法启动不影响整体提供服务
  • 你不需要知道所有事,也不需要知道所有现有框架,最重要是的基础扎实。开始使用框架前深度研习一下语言,并掌握些基础内容,像 SOLID 原则或是怎么写出干净的代码
  • 想学什么就去实践。做点样品并保证出品效果,光是阅读是不够的
  • 开发 web 应用的时候,先考虑移动端,相关权限以及带宽限制
  • 先解决问题后写代码。不要连要做什么都不知道就开始写代码,有时问题怎么解只有做了才知道,做着做着问题就没了,但这不该是目标不清,目的不明的借口,别记代码,要懂逻辑
  • 拿到代码,将大段代码分解成若干小功能
  • 除非方法只有一行,或只被同一个类里的一个方法调用。这样的过度抽象会使代码逻辑跳转太频繁
  • 单元测试要覆盖方法内的所有分支
  • 相同代码块重复写过 3 次,就该抽成独立方法
  • 如果被难题或 bug 纠缠太久,离开,过会再回来,或许答案就出来了,别放弃,最后总会通过某种方式解决它
  • 学会写有用的测试,学习实践 TDD。TDD 是一种软件开发流程,其不断重复着简单的开发循环:写测试,执行所有测试并看看新测试是否失败,写代码,跑测试,重构代码,重复
  • 注释非常重要,如何写好注释,既能帮助自己开发,也能有利于团队的协作,你的代码将来都要由你或他人进行维护的,所以写的时候心里要有读者,注释能够帮助读者理解,别总想当最聪明的人,让阅读代码像读故事般舒适,具体注释方法,可以参看这篇文章《写Python代码注释中的小建议
  • code kata,Kata 是种编程练习,能帮助程序员通过实践和重复磨练技能
  • 重构-测试-重构。重构是门调整重组既有代码,不改变外在表现的情况下变更改进内部结构的技术
  • 有需要就去求助,别浪费时间
  • 建立事业档案,区别于简历,这是为了自己回顾和反思用的
  • 学会管理预期,减少承诺,超额回报
  • 记日志必代码调试强,所有关键部分都要记录日志
  • 编码始终如一。如果你有某种风格,保持它不要变。如果是和他人合作,整个团队的格式要统一
  • 坚持使用 GitHub 或 Gitlab 这样的源码控制系统,git 提交要小而频
  • 追求效率并不意味着潦草应付重要步骤
  • 快速开发,快速迭代,持续获取反馈。持续沟通,让他人时刻处在你的“思考——模型假设——验证反馈”的循环中
  • 用户没有技术背景,是个呆瓜,开发的时候记得这点,把自己当作傻瓜
  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: