草庐IT

如何成为一名开发人员——第 1 部分:编码技巧

freestu 2023-03-28 原文

 

 

1 学习一门语言

程序员编写计算机代码,所以你必须学会说这种语言。

但是,你首先学习哪种编程语言并不重要!这完全取决于你对什么感兴趣。例如...

  • 如果你想进入 Web 开发,你应该从 JavaScript 或 CSS 开始。
  • 如果你想构建用户应用程序,Python、C# 和 Java 是流行的入口点。
  • 如果你对系统开发(例如操作系统)感兴趣,请研究 Rust 或 C++。
  • 如果你想玩数据分析或统计,请从 Python 或 R 开始。

Haskell、Ruby、Go、PHP 和 Perl 是其他流行的语言。

如果你完全不知道从哪里开始,请选择 Python!它被认为是最适合初学者的语言之一,它为以后学习几乎任何其他编程语言提供了坚实的基础。

我想学习一切!

不行,这个想法是万万不可的。没有人会知道有关编程的一切。总会有你不熟悉的语言、工具、算法、库和概念。

即使是在这方面工作了几十年的开发人员也不断地发现,他们的理解总和只是该领域知识海洋中的一小滴。

如果你仔细想想,这是一件好事!无论你从事编程工作多长时间,你都永远不会用尽新的想法来探索。几乎有无限的增长空间。

我记得很多年前一次工作面试中被要求描述 TCP 和 UDP 之间的区别。我的心一跳,因为这是我不知道的一个知识点,或者说不是很了解。然后,我深吸一口气,给出了这样的答案:

我不得不接受这样的想法,即我不可能知道一切,就像我想知道的那样。我可以学习的东西太多了,但老实说,由于缺乏使用,大部分内容都会在我的脑海中消失。我不得不采取一种政策,即在我正在从事的项目需要它们之前不学习大多数东西。值得庆幸的是,我只需要几分钟就可以做到这一点,所以效果很好。

这是我在触及到自己不熟悉的领域时做出的积极回应,我可以肯定地说这是正确的答案。

2 编写代码

理论一切都很好,但在你付诸实践之前,它绝对没有任何意义。

我经常将编程比作游泳:你可以阅读有关游泳的所有内容,但除非你跳入水中,否则它没有任何意义。此外,如果你只停留在浅层,你永远不会精通。你需要尽快潜入深渊

值得庆幸的是,在编程中(不像游泳),你实际上不会淹死。当然,一开始你会喜欢它,这是一件好事!当你在第一次编码体验中挣扎时,你最终会发现事情开始变得不好玩了。有点挫败感实际上对学习过程有益;它有助于坚持下去。

在我自己的经历中,我从来之不易的胜利中学到的东西比从轻松的胜利中学到的要多得多。当我遇到一个看似无法解决的问题、一个不可能的错误、一个令人愤怒的心理障碍时,我曾有过很多次放弃的想法……而这些实例中的每一个都成为了我的锚线!我能记住每一个。我的大部分专业知识都来自这些经历。

所以,开始编码吧。边学边研究。在需要时学习新技能。问很多问题。

我应该编码什么?

有许多开发人员问过我,“我应该做什么?” 你可以通过三种主要方式获得编码经验:

为自己创建一个项目

让它变得简单,你会亲自使用。没有人能为你想出这个项目。它应该可以解决你熟悉的问题。

你必须是目标用户!这样可以确保你既了解构建问题的知识,又拥有坚持下去的热情和动力。

为开源软件做贡献

再次,找到你个人使用或关心的项目。不用担心不够了解。潜入吧!

开始阅读代码。克隆存储库并构建项目。尝试修复小错误或进行小的改进。帮助文档。

如果你认为你已经对代码进行了改进,请不要羞于创建拉取请求。即使它被拒绝,你也会学到更多关于编程的知识,并证明你愿意提供帮助。对于开源维护者来说,这种积极的意愿远比一百个错误报告更重要。

重新造轮子

你想了解链表吗?堆排序?表格提交?自己建造!

这里的目标不是创造生产质量的东西。通过编码,您掌握了所学事物的基本概念。从字面上看,这就是我获得数据结构方面所有专业知识的方式。

不幸的是,有些人会试图告诉你,你不应该“浪费时间重新建造轮子”。别理他们。任何会告诉你“只使用”预先构建的东西来替代学习事物如何工作的人,充其量是懒惰无知,最坏的情况是破坏你作为开发人员的成长。通常,他们只是想为自己不了解更多信息的决定辩护。

如果我的代码很糟糕怎么办?

你会写出糟糕的代码,这没关系。在这个阶段,重点不是完美,甚至不是很好。你唯一关心的应该是编写最终有效的代码。

我喜欢告诉新开发人员:如果阅读你三个月前编写的代码不会让你感到轻微不适,那么你做错了。换句话说,作为一名开发人员,你应该不断地学习和成长,这样你一天写的代码质量总是比前一天

3 阅读代码

任何正在学习英语的人都会读到很棒的英语书籍。同样,任何学习编程的人都应该学习优秀的源代码。

不幸的是,这经常被忽视,因为它太吓人了你如何找到好的代码?遇到不懂的问题怎么办?你甚至应该从项目中的哪个文件开始?

在寻找项目方面,​​GitHub Discover​​是一个很好的起点。浏览流行的存储库。找一个用你知道或正在学习的语言写的。如果你找到一个你使用的项目,或者与你感兴趣的主题相关的项目,这是理想的,但这不是必需的。

找到项目后,浏览文件结构以了解存储库的布局方式。这比你想象的更重要!不要担心找到程序的“开始”。只需查找任何具有正确文件扩展名的文件,表明它是你感兴趣的语言的代码。

我个人喜欢寻找具有有趣名称的文件。你认为有什么​​bubbles.py​​​作用?怎么样​​alarm.h​​?让我们来了解一下!

找到要研究的文件后,将其下载到你的计算机上。在代码编辑器中打开它,并通过注释代码的方式。为每一个逻辑语句写一个注释来描述它的作用。如果你不知道,请对其进行深入研究,或将其标记为你感兴趣的内容,在技术平台寻找你的问题答案,学习相关知识以后,再回来看看。这是你自己的代码副本。你可以对它做任何你喜欢的事情!

如果你遇到从其他地方导入代码的语句,请不要担心立即找到该代码。从你所在的文件开始,看看你是否可以在不知道其他文件的情况下弄清楚它。你可以随时回来并阅读更多内容!

全部完成后,如果你不了解所有内容,请不要担心。你仍然会学到一些新知识。如果你养成阅读代码的习惯,你会发现自己越来越擅长它。

如果我发现可能的错误怎么办?

这是锦上添花!如果你有理由确定自己发现了错误,请将整个仓库克隆到你的计算机上并尝试修复它。将发生以下三件事之一:

1) 你会发现这根本不是一个错误,你会学到一些新东西。

2)你会确认这是一个错误,但只会在尝试修复它时设法破坏东西。不要担心!你仍然可以报告错误,并且可以将开发人员指向被破坏的确切代码。如果你是对的并且他们修复了它,你可以研究他们的错误修复。如果你错了,你仍然会学到新的东西。

3)你将修复错误,创建 PR,并使项目变得更好。挺酷的!

有关如何成为一名开发人员——第 1 部分:编码技巧的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  8. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  9. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  10. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

随机推荐