新的一年开始了,你是一位想更上一层楼的程序员吗?
以下是我养成的一些习惯,谈不上最佳,但它不仅让我成为一名优秀的程序员,而且还成为一名更优秀的专业人士。
第七个习惯:从坚实的基础开始
刚开始编程时,我陷入了忽略基础知识,然后直接跳到更有趣的东西(如框架和高级工具)的陷阱。我想立即构建酷炫的应用程序和漂亮的网站。
因此,我尽量跳过无聊的东西。
然而,在某个时候,我意识到了一件事。我可以复制粘贴代码就能开始工作。但后来这些代码全都是乱七八糟的,杂乱无章,没有任何优化,想扩展特别的费劲。
后来,我无法独自解决任何级别的问题。最终,我被迫一次又一次地重新开始基础知识的学习。
打好基础的一种方法是在开始更大的项目之前先用简单的问题挑战自己;打好基础的另外一个重要部分是在扩展之前深入学习一门编程语言。
第六个习惯:多思考,少写代码
每当你想要构建某个产品时,可能会打开代码编辑器并开始编写代码。我们这样做是为了快速看到切实的结果。
编程不仅仅是编写代码。它还涉及到制定问题的解决方案,通常要受到一些限制。与任何复杂问题一样,最佳解决方案来自于清晰、深思熟虑的思考。
以下是我最喜欢的一本书《程序员修炼之道》中的一段话:
为了成为一名务实的程序员,我们挑战你在做事时思考自己在做什么...切勿自动驾驶。要不断思考,实时批评你的工作。
让我成为更优秀问题解决者的一个方法,是在编写实际代码之前先编写伪代码。例如,在设计复杂算法时,我会用简单的英语勾勒出一个粗略的逻辑计划。
第五个习惯:从官方文档中学习
官方文档是你所学习的语言或工具的作者们编写的用户手册。教程往往侧重于特定用例,而文档则向你展示技术的全部功能,包括你可能不知道的功能。
例如,当我第一次学习 Python 时,我严重依赖教程来了解基础知识。但是当我开始使用 pandas 等库时,我发现自己需要的不仅仅是示例。pandas 文档成了我的生命线。
第四个习惯:编写干净的代码
在编程社区中流传着一个笑话:如果你的程序可以跑起来,就别碰它。不过,这只是个笑话。
当我开始编程时,我尝试过竞技编程。虽然我很喜欢它,但我也从中养成了许多坏习惯。在大多数情况下,让程序运行起来才是最重要的。如果代码运行没有错误,我就认为它是成功的,即使它是一堆乱七八糟的变量和魔法数字。但当我开始从事更多现实世界的项目时,我意识到干净的代码有多么重要。
整洁的代码可让你的程序更易于阅读、调试和维护。有许多最佳实践、原则和惯例都与此有关。例如,变量和函数的描述性名称、良好的文档、一致的编码风格等等。让我们看一个丑陋代码的示例。
def pro(s, x):
i = 0
for k in range(len(s)):
i += s[k] * x[k]
return i
它是可以工作的。但是你能从中得到什么吗?可能不能。现在看看更简洁的版本:
def calculate_dot_product(vector_a, vector_b):
dot_product = 0
for index in range(len(vector_a)):
dot_product += vector_a[index] * vector_b[index]
return dot_product
这个代码版本更有意义。这就是编写干净的代码如何彻底改变你的项目。
第三个习惯:培养强大的调试技能
无论你作为程序员积累了多少经验,调试都是不可避免的一部分。
我花了无数个小时来追踪那些似乎隐藏在显而易见的地方的隐蔽错误。一开始,调试让人感到沮丧。随着时间的推移,我学会了有策略地处理它。
调试的第一步是放慢速度并仔细观察。我过去常常匆忙地编写代码,盲目地更改代码行,希望某些代码能起作用。但很少奏效。相反,从提问开始。程序应该做什么?它在做什么?行为在哪里出现分歧?
有几种工具和技术可以使调试不那么令人生畏。print()声明通常是第一道防线。另一种有用的技术是橡皮鸭调试,你可以一步一步地向无生命的物体或人解释你的代码。通常,只需大声说出问题就可以找到解决方案。我曾经通过向自己解释就解决了错误。
第二个习惯:与其他程序员建立联系
刚开始编程时,我以为这是一次独自的旅程。虽然编程通常需要一个人专注,但我成长最多的时刻来自与其他程序员的交流。
我加入了许多编程群组、Discord 服务器以及线下社区。当我遇到问题时,我可以寻求帮助。在空闲时间,我也会尝试为社区做出贡献,这样初学者就可以像我以前一样得到帮助。
我曾经通过人脉关系找到了一份编程工作。这是我参与过的最大项目之一,在这个过程中我学到了很多东西。我还通过参加黑客马拉松结识了优秀的程序员,并从他们身上学到了新的东西和策略。
第一个习惯:构建一些可以解决实际问题的东西