笨办法学 Python · 续 练习 1:流程

简介: 练习 1:流程 原文:Exercise 1: On Process 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译软件开发世界中有两种类型的流程。

练习 1:流程

原文:Exercise 1: On Process

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

软件开发世界中有两种类型的流程。首先是团队流程,这是 Scrum,敏捷或者极限编程。这些流程旨在帮助一群人合作开发大型代码库,而不会相互干扰。团队流程指的是,每个人如何协调,代码行为标准,报告和管理监督。通常这些团队流程归结为:

  • 制作待办事项的列表
  • 执行列表上的事情
  • 确认正确完成了它们

许多团队流程的错误就是,他们试图控制对个人更好的个人流程。极限编程(XP)流程在这方面可能是最糟糕的,甚至指出,每个程序员都有另一个程序员观察他们的工作,并在文本编辑器显示一些错误的时候向他们喊叫。我强烈反对不在某些教育背景下,将个人流程元素强加于人的流程。它侮辱了我们的专业精神,创造一个独断专行的环境,不会促进创造力或质量。在教育环境中,规定学生使用特定的个人流程方法是必要的,但在工作环境中不是。例如,只有他们是一个初级或新手程序员,需要学习,我才强制某些人结对编程。团队流程应该是这样,每个人都能够工作,但他们需要在所需的质量水平完成工作。

另一种类型的流程是个人流程,我从画家,作家和音乐家那里得到这个想法。作为一个专注质量的创意人士,我正在开发一个流程,帮助你以一致的方式进行工作。事实上,一个业余画家,音乐家或作家的标志,代表了这些人不解它们的流程。通常声称没有创意的这些人实际上相反;他们只是不知道这件事,因此不断把它弄错。大多数其他创意学科都制定策略,帮助他们从概念中创造完成的作品,而不会半途而废。对于画家来说,这是一种方法,将绘画的问题分解为逻辑步骤,来确保更有可能成功。对音乐家来说,这是一个类似的流程,结合了平衡做法,保持他们所选的音乐风格的结构。对于作家,他们的流程是构建自己的作品的一种方式,使其自然流动并且没有漏洞和逻辑不一致性(大多数电视编剧似乎完全没有做到)。

对于软件,你的个人流程需要是某种东西,能够完成以下任务:

  • 确定可行的想法。
  • 让你开始了解这些想法,看看他们是否会工作,并迅速改变它们。
  • 在许多工作会话上逐渐优化你的想法,来避免问题或使你能够轻易恢复。
  • 确保你的想法的实现的质量,以便你以后不会被 bug 阻碍。
  • 确保你可以与他人合作(如果你愿意)。

请注意,我如何说,你不必与他人合作。自从开源以来,创建软件的概念就包括了对社区的过高要求。如果你不想与别人分享或合作,那么你侮辱了它们的存在,并且被认为是一个反社会的家伙。问题是很少有创意活动是在小组中开始的,通常在小组中开始的创意活动最终都没有创意。这种创意火花通常是,一个或两个人有了一个想法,然后从无到有实现了它。制造一个最终产品,如书籍,电影和专辑,可能需要一个庞大的团队。许多其他的创作活动可以独立完成,如绘画或大多数视觉艺术。

你永远不会找到一个艺术学校,它要求画家只能在团队中创作一幅画。软件不像绘画和写作一样,不是独立的创作流程,没有任何理由是这样。软件是一个模块化的学科,这意味着你可以自己创造一切,而其他人仍然可以使用它,即使他们永远不会和你谈话,永远不会写程序。你可以是一个十足的混蛋,人们仍然可以使用你的软件。写作和绘画都是一样的。有很多品行不端的作家,画家和音乐家,他们仍然受到数以百万计的人的崇拜。

如果你按照个人流程开始工作,有人试图告诉你需要分享,或者你是一个反社会的混蛋,那么他们就是在骂你。人们有权保持隐私,独自一人做自己的事情。要求你为较大项目做出贡献的人,似乎只有那些启动这些较大项目的人,似乎都在赚钱。在这一点上相信我,我已经为软件世界贡献了巨额资金,我还去参加会议,但人们说我不是一个贡献者,因为我没有为他们的项目编写代码(尽管他们从来没有帮我做过一件事情)。

在这本书中,当我说“流程”的时候,我的意思是个人流程。我很少涵盖直接关于与他人合作的任何事情,因为有一堆书已经涵盖了你应该如何与他人合作。有很少的书籍可以帮助你按照自己的个人流程工作,并为你定义处理什么,以及为什么。对于你想要专注的事情,自我为中心、贪婪、反社会或者暴虐都没有任何错误,所以你可以在你所爱的东西上做得更好。

挑战练习

练习实际上是写下你的想法,以及你似乎有什么问题。在这个阶段你可能不知道你的工作方式,因为你不是很有经验。为了帮助你,我编写了一个问题列表:

  • 长时间处理项目时有问题吗?
  • 你是否倾向于编写有缺陷的代码,而不知道为什么?
  • 你热衷于编程语言,但从来没有实现过任何东西?
  • 你不记得 API 吗?我也是啊
  • 你是否感到自卑或像会被抓住的骗子?
  • 你担心自己是否是一个“真正的程序员”?
  • 你不知道如何选取一个想法,将其从零开始变成代码?
  • 你有入门的问题吗?
  • 你在混乱的环境中工作吗?
  • 你是否完成了你的项目的第一个实现,不知道如何更进一步呢?
  • 你是否在代码的顶部继续插入代码,直到产生了巨大的混乱呢?

想想这些问题,然后尝试写下你在处理项目中所做的事情。如果你没有工作经验,请写下你认为应该在项目中做什么。

研究性学习

  • 再写一些这样的问题,然后回答他们。
  • 问其他你可能知道的程序员,他们的流程是什么。你会发现他们可能不知道。

深入学习

要记住的是,人们说他们的流程是什么,和他们实际做什么,可能是截然不同的。我们人类倾向于使用一种比现实更积极,更合乎逻辑的方式记住事情。在这本书中,你将打破这种习惯,并使用外部记录的指标(可能是屏幕录像)来确定你做什么。这不是你应该永远做的事情,但是当你提高编码技能时,这是一个很大的帮助。但是,当你询问一些其他更成功的程序员,它们的流程是什么,要记住,他们没有这样做,很可能他们告诉你的不是他们做的事情。如果你能找到一个更有经验的程序员,愿意在工作时记录他们的屏幕,那么比起询问他们做什么,这可能更有启发意义。我建议去观看其他程序员的屏幕录像,只是看看他们如何处理问题并记录笔记。

相关文章
|
3月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
本文介绍了Python中的循环语句,包括while和for循环的使用,range()函数的运用,以及continue、break和pass关键字的说明,同时提出了关于while循环是否能与成员运算符结合使用的思考。
48 1
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
|
3月前
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
42 1
|
15天前
|
人工智能 IDE 测试技术
使用通义灵码提升Python开发效率:从熟悉代码到实现需求的全流程体验
作为一名Python开发者,我最近开始使用通义灵码作为开发辅助工具。它显著提高了我的工作效率,特别是在理解和修改复杂代码逻辑方面。通过AI编码助手,我能够在短时间内快速上手新项目,实现新需求,并进行代码优化,整体效率提升了60%以上。通义灵码不仅加快了代码生成速度,还增强了代码的健壮性和稳定性。
|
26天前
|
SQL 关系型数据库 数据库
优化Web开发流程:Python ORM的优势与实现细节
【10月更文挑战第4天】在Web开发中,数据库操作至关重要,但直接编写SQL语句既繁琐又易错。对象关系映射(ORM)技术应运而生,让开发者以面向对象的方式操作数据库,显著提升了开发效率和代码可维护性。本文探讨Python ORM的优势及其实现细节,并通过Django ORM的示例展示其应用。ORM提供高级抽象层,简化数据库操作,提高代码可读性,并支持多种数据库后端,防止SQL注入。Django内置强大的ORM系统,通过定义模型、生成数据库表、插入和查询数据等步骤,展示了如何利用ORM简化复杂的数据库操作。
57 6
|
3月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之if条件控制
Python中的流程控制语句if条件控制,涵盖了比较运算符、成员运算符、身份运算符、逻辑运算符的使用,if语句的嵌套,以及如何使用input和print函数进行交互式编程练习。
25 1
Python接口自动化测试框架(基础篇)-- 流程控制之if条件控制
|
2月前
|
SQL 关系型数据库 MySQL
Python操作pymysql数据库的流程与技巧
在现代软件开发中,Python作为一门高效且易于学习的编程语言,广泛应用于各种场景,其中包括数据库操作。**PyMySQL** 是一个流行的Python数据库接口,用于连接和操作MySQL数据库。它提供了一种简便的方法来执行SQL语句、处理数据和管理数据库事务。以下是使用PyMySQL操作MySQL数据库的流程与技巧,旨在为开发者提供一个清晰、实用的指南。
49 0
|
3月前
|
存储 测试技术 数据格式
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(二)
本文通过数据类型转换和文件读取的练习,复习了Python中的数据类型、循环、条件判断、内置函数等基础知识,并演示了如何将字符串数据转换为字典列表,以及如何从文本文件中读取和转换数据。
35 1
|
3月前
|
机器学习/深度学习 Ubuntu 数据挖掘
Ubuntu系统部署Anaconda环境及Python语言的详细流程
以上就是在Ubuntu系统中安装Anaconda环境及Python语言的详细流程。Anaconda为Python科学计算提供了便捷的管理方式,帮助用户轻松处理不同项目之间依赖管理的复杂性。通过以上步骤,你现在应该有了一个完全可用的Anaconda环境,可以开始在Ubuntu上进行Python编程和数据科学项目的探索了。
63 5
|
3月前
|
Python
python学习笔记---流程控制
这篇文章详细介绍了Python中的流程控制,包括选择结构(if、if-else语句、嵌套if语句)和循环语句(while循环、for循环以及for循环与range()函数的使用),以及如何在循环中使用break和continue语句。
python学习笔记---流程控制
|
3月前
|
JSON 数据库 开发者
FastAPI入门指南:Python开发者必看——从零基础到精通,掌握FastAPI的全栈式Web开发流程,解锁高效编码的秘密!
【8月更文挑战第31天】在当今的Web开发领域,FastAPI迅速成为开发者的热门选择。本指南带领Python开发者快速入门FastAPI,涵盖环境搭建、基础代码、路径参数、请求体处理、数据库操作及异常处理等内容,帮助你轻松掌握这一高效Web框架。通过实践操作,你将学会构建高性能的Web应用,并为后续复杂项目打下坚实基础。
91 0