成为优秀程序员的七个习惯

养成的一些习惯,谈不上最佳,但它不仅让我成为一名优秀的程序员,而且还成为一名更优秀的专业人士。

第七个习惯:从坚实的基础开始
刚开始编程时,我陷入了忽略基础知识,然后直接跳到更有趣的东西(如框架和高级工具)的陷阱。我想立即构建酷炫的应用程序和漂亮的网站。
因此,我尽量跳过无聊的东西。
然而,在某个时候,我意识到了一件事。我可以复制粘贴代码就能开始工作。但后来这些代码全都是乱七八糟的,杂乱无章,没有任何优化,想扩展特别的费劲。
后来,我无法独自解决任何级别的问题。最终,我被迫一次又一次地重新开始基础知识的学习。
打好基础的一种方法是在开始更大的项目之前先用简单的问题挑战自己;打好基础的另外一个重要部分是在扩展之前深入学习一门编程语言。

第六个习惯:多思考,少写代码
每当你想要构建某个产品时,可能会打开代码编辑器并开始编写代码。我们这样做是为了快速看到切实的结果。然而,根据我的经验,我发现这通常会导致混乱、不完整,有时甚至完全错误的解决方案。
我经常遇到的一个问题是,当我写到一半时,我意识到在编写解决方案时没有考虑到这种情况。我不得不重新开始。如果我在编写代码之前有一个总体的高级解决方案,这种情况就不会发生。
编程不仅仅是编写代码。它还涉及到制定问题的解决方案,通常要受到一些限制。与任何复杂问题一样,最佳解决方案来自于清晰、深思熟虑的思考。以下是我最喜欢的一本书《程序员修炼之道》中的一段话:为了成为一名务实的程序员,我们挑战你在做事时思考自己在做什么...切勿自动驾驶。要不断思考,实时批评你的工作。让我成为更优秀问题解决者的一个方法,是在编写实际代码之前先编写伪代码。例如,在设计复杂算法时,我会用简单的英语勾勒出一个粗略的逻辑计划。

第五个习惯:从官方文档中学习
刚开始编程时,我尽力避免阅读官方文档。它常常看起来令人不知所措,充满了专业术语,而且说实话,有点无趣。我更喜欢看教程和视频。
但当我开始从事实际项目时,我意识到教程只是触及了皮毛。如果我想完全理解一门语言、框架或工具,官方文档是我最好的朋友。
官方文档是你所学习的语言或工具的作者们编写的用户手册。教程往往侧重于特定用例,而文档则向你展示技术的全部功能,包括你可能不知道的功能。例如,当我第一次学习 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 服务器以及线下社区。当我遇到问题时,我可以寻求帮助。在空闲时间,我也会尝试为社区做出贡献,这样初学者就可以像我以前一样得到帮助。
我曾经通过人脉关系找到了一份编程工作。这是我参与过的最大项目之一,在这个过程中我学到了很多东西。我还通过参加黑客马拉松结识了优秀的程序员,并从他们身上学到了新的东西和策略。

第一个习惯:构建一些可以解决实际问题的东西
编程最有价值的方面之一是能够将想法转化为使生活更轻松的工具。您可以无休止地观看教程或阅读书籍,但没有什么比解决实际问题时获得的知识更重要。那时理论、语法和算法才真正变得生动。
你可以通过很多方式找到现实生活中的项目。你面临什么问题?你能通过构建应用程序来解决它们吗?向你的朋友和亲戚询问他们的问题。你也可以去GitHub寻找开源项目。
当我开始使用 Spring Boot 学习 Java 后端时,我决定制作一个农业系统来自动化许多任务。我学到了很多教程中没有的东西。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 223,924评论 6 521
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,776评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 170,954评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,576评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,589评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,105评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,480评论 3 427
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,457评论 0 278
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,998评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,026评论 3 343
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,174评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,812评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,502评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,979评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,101评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,674评论 3 380
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,204评论 2 363

推荐阅读更多精彩内容