优秀的程序员不会为了经济回报或公众钦佩而编写代码。我写代码只是为了编程的乐趣。
Linus Torvalds(Linux 内核开发人员)

科里·阿尔霍夫的“自学成才的程序员从 Python 语言的基础到如何工作(清水川孝之和荒木雅哉的日文译本于 2018 年出版),所以正如标题所暗示的,我觉得我可以将这本书推荐给那些自学成才的程序员,以及新工程师。介绍。

话虽如此,我也是自学软件工程的,并且已经做了两年的工程师。
读完《自学程序员》,我能够回归初心,反思自己的不足。
(即使找到了工程师的工作,自学还在继续,所以我认为即使获得了经验,这本书也值得一读!)

本书的目标读者

那些想从元角度全面了解成为专业程序员所需的知识和技能的人。
那些对程序员不熟悉并具有一些基础知识(例如能够在终端上键入命令)的人。

关于作者

美国克莱姆森大学政治学专业。
我在大学上过一门入门编程课程,但因为太难而放弃了。
毕业后,他住在硅谷,自学编程。
一年后,我在 eBay 找到了一份软件工程师的工作。
之后,他参与了硅谷的几家初创公司,并担任了全栈工程师。

那是个好人(←词汇)。

有关本文档的信息也可在以下网址获得:
自学成才的程序员
点击这里查看作者的博客。
Cory Althoff – 中等
学习成功所需的技能 | 自学

本文未涉及的书籍内容

  • 实用编程基础
    • 本书全面介绍了与 Python 相关的关键编程概念的基础知识。每章末尾还有一个词汇表,非常适合学习新术语。
    • 它还涵盖了编程范式、面向对象编程、bash、正则表达式、包管理、版本控制、数据结构、算法等,让您对广泛的主题有一个基本的了解。
  • 示例程序
    • 有趣的是,有一个代码可以让你玩一个叫做 Hangman 的文字游戏和一个叫做“战争”的纸牌游戏。
  • 工程师求职
    • 涉及如何选择工作类型,如何获得工程师的经验,以及如何准备面试。

自学程序员的提示

从重要的事情中学习

先学编程效率更高,然后在强烈想知道它的原理是什么之后再学理论。
计算机科学理论很重要,但编程经验是唯一真正的价值。
(我觉得如果从理论入手的话,根本无法提升自己的编程能力,因为范围太广了……)

你并不是唯一的一个

在校外学习编程变得越来越普遍。
许多程序员没有计算机科学学位。
(我也是,这篇文章的作者。)

自学的优势

当作者开始在 eBay 工作时,他很沮丧,因为他的年轻队友对编程和计算机科学的了解要高出许多倍。
然而,自学的优势在于“强烈的自学愿望,而不是被人指使”。
不要忘记这种力量,即使你发现自己所处的环境令人沮丧。
Apple 的 Steve Wozniak、Tumbler 的 David Karp、Twitter 的 Jack Dorsey 和 Instagram 的 Kevin Systrom 也是自学成才的程序员。

写程序的好处

编程技能将帮助您在任何职业中找到工作。
通过掌握编程来解决问题的技能对很多事情都很有用。
您可以让程序执行重复而乏味的任务。
学习给了我能量。
如果你会编程,你就可以实现新的想法,而无需别人为你做。

让我们坚决继续

你不必像他们经常说的那样“擅长数学”,但你确实需要努力学习。
如果你没有进步,那是因为你没有坚持练习。
作者发现,使用清单来确认她每天练习的内容有助于她保持专注。
遵循其他技巧来保持动力。

编程最佳实践

每当您编写代码时,假设维护您的代码的人是一个知道您地址的流氓精神病患者。
约翰伍兹

(我觉得我不能一边思考这个问题一边平静地发展,但是……哈哈)

写代码作为最后的手段

作为软件工程师,您的工作是编写尽可能少的代码。
在出现问题之前首先要考虑的是
“我该如何解决这个问题?”
不是,
“其他人已经解决了这个问题吗?
该解决方案对我有用吗? ”
在网上寻找解决方案。
只有在你知道没有人解决它时才开始解决它。

干燥

不要重复自己的原则。
这意味着当您编写代码时,您不应该重复相同的任务。
如果你把代码放在一个函数中,你可以一次又一次地使用它。

正交性

记住“a 不应该影响 b”。
当你有两个模块 a 和 b 时,a 不应该改变 b 的内容。
反之亦然。
如果您设计您的代码,以便其中一个更改影响另一个,您的代码将变得杂乱无章和失控。
例如,数据库和用户界面也是正交组合。

在一处定义所有数据

在处理某种数据时,将其保存在一个地方,不要重复。
复制数据会将修改传播到各处。
此外,当您更改它时,您必须记住所有内容的重复位置。

让一个函数只做一件事

当您发现一个很长的函数时,请仔细检查它是否没有尝试完成多项任务。
拥有一个任务使函数名称更具描述性,并使代码更易于阅读。
当代码不起作用时,更容易找到和调试出错的地方,因为该函数只有一个目的。
软件复杂性来自于让一件事做两件事。

如果时间太长,你可能做错了什么

除非很明显您正在处理大量数据,否则如果您的程序处理时间过长,请怀疑实现有问题。

首先以好的方式实施它

如果您正在编程并且知道有更好的方法,请停止编码,选择更好的方法并即时实施。
以后不需要翻新了。
(想快点完成的时候有点痛苦,但是后面会变得容易……)

遵守约定

学习编程约定将帮助您更快地阅读该语言的代码。
PythonPEP8请阅读(编码约定)。

使用功能强大的 IDE

在 Python 中,PyCharm作者似乎在使用 IDE(集成开发环境)。
(我也用)
推荐的功能是:

  • 用于跳转到变量、函数和对象定义的快捷键
  • 自动文件编辑历史功能。可以代替git等版本控制系统使用
  • 使用 git 代替 PyCharm 中的命令行
  • 命令行,内置交互式shell
  • 调试器

日志记录

日志记录是软件操作的记录。
您可以获得调试程序的信息或获取有关程序运行时内部发生的情况的详细信息。
在 Python 中日志模块可用于登录到控制台或文件。
如果您的程序出现问题,请记录发生的情况,以便以后检查。
日志在收集和分析网站数据时也很有用。

测试

测试是检查程序的行为。
程序员编写程序来测试程序。
如果您要将程序作为产品发布,则测试不是您做或不做的事情。
不要浪费时间为简短的一次性程序编写测试,而是为其他人使用的程序编写测试。
在 Python 中单元测试模块可以使用。

代码审查

在代码审查中,你让别人阅读你的代码并给你反馈。
尽可能多地进行代码审查。
对于自学成才的程序员尤其重要。
要改进您的代码,您需要有经验的人来阅读您的代码并告诉您哪里出了问题。
还有一个社区网站,您可以在其中获得评论。
代码审查堆栈交换

安全

自学成才的程序员经常忽略安全性。
一旦你得到一份编程工作,你就要对你编写的代码的安全性负责。
例如,始终注意用户输入可能是恶意的。
一些恶意攻击基于处理用户输入的程序中的漏洞。

保持软件安全的一种策略是最小化攻击面。
攻击面是指攻击者可以窃取数据或攻击您的系统的程序的不同区域。
最小化攻击面的策略包括:

  1. 不要不必要地存储敏感数据
  2. 为用户提供尽可能少的访问权限
  3. 尽量避免使用第三方库(代码少,漏洞少)
  4. 删除过时的功能(更少的代码,更少的漏洞)

    为了保证您的程序安全,请考虑攻击者如何利用您的代码并且不要忽视漏洞。

    团队合作

    掌握基础知识

    团队应掌握本书所涵盖的技术和概念。
    避免加入需要基本帮助的团队。

    不要问谷歌能做什么

    提问是一种很好的学习方式,但请确保您提出了正确的问题。
    在提出问题之前至少花五分钟进行研究。
    (虽然谷歌的人工智能团队显然有一个“15 分钟规则”,当出现问题时。)
    如果你问了太多自己可以轻松解决的问题,你会惹恼你的队友。

    冒名顶替综合症

    在编程时,每个人有时会发现自己无法认可自己的能力和成就,导致自尊心异常低。
    甚至斯坦福大学计算机科学硕士的工程师有时也会有这种感觉。
    你不必知道一切。没有这样的人。
    保持谦虚的态度,坚持不懈地学习你不明白的东西。连续性很重要。

    学到更多

    学习经典

    有几本编程书籍被认为是必读的。

    在线学习

    以下内容在日文翻译中介绍,自 2022/08/18 起可用。

    网上还有很多其他的。

    黑客新闻

    一个帮助您了解最新技术和趋势的平台。
    它由启动孵化器 Y Combinator 运行。

    在日语翻译中,经营服务制作业务的 Nijibox 工程师的策展媒体,“邮寄”也有介绍。

    下一步

    找导师

    学习编程最困难的事情之一是你可以在没有真正理解它的情况下做很多事情。
    导师的代码审查可以避免此类问题。
    通过代码审查,他们改进编程过程,推荐书籍,并教你未知的编程概念。

    努力寻找本质

    当您开始编程时,一切都是一个黑匣子(您知道如何使用但不了解它们如何工作的东西)。
    提高编程水平的一种方法是打开你看到的每一个黑匣子,并尝试了解它是如何工作的。
    打开黑匣子,探索本质。
    不要满足于一个答案,阅读所有的解释。
    使用互联网留言板和聊天来提问和阅读其他意见。
    尝试真正做自己想要加深理解的东西,也是探索本质的一种方式。
    例如,花时间自己构建一个简单的版本控制系统是非常值得的投资。

    获得建议

    有些人认为,要成为一名优秀的程序员,您必须做一些编程以外的事情。
    根据日文翻译,以下书籍会有所帮助。

    另外,花尽可能多的时间阅读其他人的代码。
    在学习编程时,平衡编写和阅读代码。
    一开始可能很难,但很重要。
    我从其他程序员那里学到了很多东西。

    补充章节:对译者自学有用的信息

    我将介绍与 Python 相关的书籍和网站。
    让我们使用它。
    日文翻译中还介绍了此处未提及的书籍和网站。

    综上所述

    如果你想成为一名专业的工程师,我觉得这本书很适合了解这方面的路线图和心态。
    这本书是由海外(美国)的工程师写的,所以我觉得对那些对外交感兴趣的人来说也不错。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308623816.html

相关文章: