前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序员修炼之道-我都读出了些啥

程序员修炼之道-我都读出了些啥

原创
作者头像
brzhang
发布2023-09-10 11:30:35
2450
发布2023-09-10 11:30:35
举报
文章被收录于专栏:玩转全栈玩转全栈
程序员修炼之道
程序员修炼之道

我最近重新读了一下《程序员修炼之道-从小工到专家》这本书,这本书可以说是一本浩瀚的宝藏,作者的编程功底实在是深不可测,因为每次读他,每一个阶段读这本书你都可以学习到不同的知识,有一些不一样的理解。

敏捷原则与实践

敏捷开发是一种迅速响应变化的软件开发方法。它强调团队协作、客户反馈和对变化的适应。敏捷原则包括持续交付、适应变化、简化设计、重构、测试驱动开发等。了解并实践这些原则,可以帮助你提高软件开发的效率和质量。为什么提敏捷原则,因为现在大厂也在提内部创业,也要看营收,产品不盈利,迟早是会干掉的,那么请问,只要是工作,除了我们所熟知的铁饭碗,还有哪个不是创业的,既然是创业,敏捷开发就会陪伴你,你需要快速试错,找到自己产品的利基市场,市场不会等待,老板也没有时间忍耐你长时间吃老本。

代码质量

编写高质量的代码是程序员的核心职责。书中提到了一些关键的编程原则,如DRY原则(Don't Repeat Yourself,不要重复自己)、SOLID原则(面向对象设计的五个基本原则)等。遵循这些原则,可以提高代码的可读性、可维护性和可扩展性。

案例:编写一个计算矩形面积和周长的程序

不太好的做法:将计算面积和周长的函数放在一起,没有遵循DRY原则和SOLID原则。

代码语言:javascript
复制
function calculateArea(width, height) {
  return width * height;
}

function calculatePerimeter(width, height) {
  return (width + height) * 2;
}

function printResults(width, height) {
  console.log("Area: " + calculateArea(width, height));
  console.log("Perimeter: " + calculatePerimeter(width, height));
}

printResults(5, 10);

好的做法:将计算面积和周长的逻辑封装到一个矩形类中,遵循了DRY原则和SOLID原则。这使得代码更加可读、可维护和可扩展。

代码语言:javascript
复制
class Rectangle {
  constructor(width, height) {
    this.width = width;
    this.height = height;
  }

  getArea() {
    return this.width * this.height;
  }

  getPerimeter() {
    return (this.width + this.height) * 2;
  }
}

function printResults(rectangle) {
  console.log("Area: " + rectangle.getArea());
  console.log("Perimeter: " + rectangle.getPerimeter());
}

const rectangle = new Rectangle(5, 10);
printResults(rectangle);

测试

测试是确保软件质量的重要手段。书中提到了自动化测试、单元测试、集成测试、系统测试等不同层次的测试方法。掌握这些测试方法,可以帮助你编写出更稳定、更可靠的软件。我的老板大师同学踢出了一个概念 ,API first ,这个概念实际上和这个测试先行是一致的,前后端同学研发需求,先定义好API,然后前后端统一更具这儿api来写测试代码,当然前端是mock,写完之后,通过测试,才开始进入研发,研发完毕才开始进入联调。这个模式有一个好处,联调时间大大降低,因为有测试用例的保障,所以,相对于不做测试直接进入联调来看,一个是两个高质量的对接,一个是两个可能是很低质量的对接。为什么是可能,因为还有比较牛逼的同学,写的接口就是质量很高,但是通过api first,可以保证大多数都是高质量的,所以流程就是解决了把平均水平拉高的事情。

下面给一个案例:很好理解,就是对Rectangle类做测试,这样,后面重构这个类,跑一跑测试就知道功能有没有改飞,改漏了。

代码语言:javascript
复制
// rectangle.js
class Rectangle {
  constructor(width, height) {
    this.width = width;
    this.height = height;
  }

  getArea() {
    return this.width * this.height;
  }

  getPerimeter() {
    return (this.width + this.height) * 2;
  }
}

module.exports = Rectangle;

// rectangle.test.js
const Rectangle = require("./rectangle");

test("Area calculation", () => {
  const rectangle = new Rectangle(5, 10);
  expect(rectangle.getArea()).toBe(50);
});

test("Perimeter calculation", () => {
  const rectangle = new Rectangle(5, 10);
  expect(rectangle.getPerimeter()).toBe(30);
});

对于纯数据处理,逻辑与界面无关的部分,建议先写单元测试,这样,即便是后面要做重构,心里也比较有底气。通过编写单元测试、集成测试和系统测试,团队确保了系统的稳定性和可靠性。

项目管理

作为一名专业的程序员,你需要了解如何管理项目。书中介绍了一些项目管理的基本方法,如需求分析、进度跟踪、风险管理等。掌握这些方法,可以帮助你更好地管理项目,提高项目的成功率就不说了,更重要的意义是,现在各种团队在强调研发效率。研发效率,研发效率,难道之与研发相关吗?程序员一定要占在全局的视角上去看看问题,一个需求的消耗时间觉不仅仅是研发这个环节唯一决定的,需求写的明不明确,是否需要来回勾兑,视觉交付质量高不高,有没有漏点产品功能描述上的一些交互点,是否经过充分测试保证高质量上线,还是匆匆忙忙上线,导致线上故障,又来花时间修修补补,进而压缩了可悲的研发时间,程序员是夹在中间的一个环节而已,因此项目管理尤其重要,风险意识,避免过于乐观,也不要太过于悲观,总之,项目管理技能是必须要了解的。

有效沟通

沟通是程序员的一项重要技能。书中提到了一些有效沟通的技巧,如倾听、提问、表达观点等。掌握这些技巧,可以帮助你更好地与团队成员、客户、管理层等进行沟通,从而提高工作效率。有效沟通,为什么强调有效,我认为在沟通之前一定要明确自己沟通的目的是什么,没有明确的目标,沟通就是瞎扯,你是需要解决某一个具体的问题的,而且在沟通(撕逼)之前,你需要明确,这个问题是不是别人可以解决的,有没有找到key person,如果你沟通的人都无法解决这个问题,那你就的评估下这是否是一个有效沟通了。

个人主动成长

书中强调了程序员不断学习、不断进步的重要性,并提供了一些学习方法和技巧。通过持续学习,你可以不断提高自己的技能,为职业生涯的发展打下坚实的基础。为什么提个人主动成长,因为一个人的成长是可以被动的,也可以是主动的,所谓的被动就是被事情推着走,你不情我不愿的,收效胜微,然而,主动就不一样,主动就是自己给自己做规划。

1. 持续学习:作为程序员,你需要不断地学习新技术、新方法和新工具。可以通过阅读书籍、观看教学视频、参加线上课程、参加技术会议等方式来学习,同时你在关注技术书籍时,我建议你读一些垮学科的书籍,对于成长也非常有帮助,比如哲学,请允许我不坏好意的笑了,哲学真的有用的。

2. 实践:学习新知识后,需要将其付诸实践。可以通过编写代码、参与开源项目、解决实际问题等方式来锻炼自己的技能。

3. 反思:定期反思自己的学习过程和工作经验,找出可以改进的地方。可以通过编写技术博客、与他人交流、参加技术团队的代码审查等方式来进行反思。

4. 专注:在学习和工作中保持专注,避免分心。可以通过设定目标、管理时间、减少干扰等方式来提高专注力。

5. 主动承担责任:勇于承担项目中的重要任务,不怕挑战。这可以帮助你提高自己的技能,增加工作经验。

6. 与他人合作:学会与团队成员、客户、管理层等进行有效沟通和协作。这可以帮助你更好地完成工作任务,提高工作效率。

7. 跨领域学习:不仅要学习自己专业领域的知识,还要关注其他领域的发展。这可以拓宽你的视野,为你的职业生涯提供更多可能性。

8. 培养好习惯:养成良好的编程习惯,如编写简洁、可读的代码,遵循编程原则,编写测试用例等。这可以提高你的工作效率,减少出错的可能性。

9. 保持好奇心:对新技术、新方法保持好奇心,勇于尝试。这可以帮助你不断地学习和进步。

10. 保持平衡:在职业生涯中保持工作与生活的平衡。注意休息和锻炼,保持身心健康。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 敏捷原则与实践
  • 代码质量
  • 测试
  • 项目管理
  • 有效沟通
  • 个人主动成长
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档