软件小白入门记:你不需要是一个天才,甚至智力水平不超过平均水平
发表时间:2023-09-05 13:01:31
文章来源:炫佑科技
浏览次数:151
菏泽炫佑科技
软件小白入门记:你不需要是一个天才,甚至智力水平不超过平均水平
*近,我发现很多刚入行软件行业的朋友对软件开发都比较陌生。 我整理了以下信息供大家参考。 喜欢的朋友可以帮忙关注一下。 需要软件开发相关信息的朋友可以私信我(备注什么信息)。 如果我有的话,我会提供一切。 感谢您的支持! ! !
新手软件简介:
当我刚开始学习软件开发时,我毫无头绪。
我感到非常沮丧。 我无法阅读所有内容,我什至不认为我能够“掌握”编程。
我之所以告诉你这些,是因为我觉得你既然选择了我的书,就说明你可能和我当时的感受是一样的。
别担心,这是正常的。 事实上软件开发,这只是常态。
让我彻底澄清一下:你不需要成为天才,甚至不需要高于平均水平的智力,才能成为一名软件开发人员。
对于一个刚刚踏入软件开发之门的初学者来说,如果你不感到手足无措,感觉脚踝上绑着重物,被扔进池底,那么你可能做错了什么,或者你可能根本就不是一个人。 普通人——或者两者兼而有之。
无论如何,您应该知道,刚开始时会很困难且令人困惑,但它不会持续很长时间 - 我向您保证。
我是怎么开始的
我依稀记得我什么时候开始自学编程的。 那时的编程材料还没有现在那么多。 事实上,我根本没有任何信息。
我去下载了一个非常流行的MUD(多用户地下城,你可以把它想象成一个基于文本的魔兽世界,毕竟那是一个使用调制解调器拨号上网的时代)的源代码。
但我不明白我正在看的代码是什么意思。 我只知道我想创建我自己的 MUD 修改版本并为其添加新功能,而关键就隐藏在这些神秘的混乱文本中。
于是我开始乱搞,我改变了一些变量的值。 我试图找到控制暴击几率的代码,修改它,重新编译,看看会发生什么。
有时它会按我的预期工作,而有时它根本无法编译。 在探索代码的作用和不起作用的过程中,我学到了很多东西。
我仍然不明白我在修改什么,但是经过一周左右的“摆弄”,我实际上创建了一个新版本的 MUD,其中包含我自己添加的功能。
距离成为一名熟练的程序员还有很长的路要走,但我已经开始了——每个人都需要一个开始。
我讲这个故事是为了让你明白,比拿起一本书、比去大学或培训机构更重要……这才是开始编程的正确方法。
您必须熟悉代码并了解哪些方法可以使其工作,哪些其他方法不能。 (我坚信这是*好的学习方式。请参阅我的软技能书中有关学习的章节。)
然而,学习如何编码和进入软件开发世界之间存在很大差异。
是的,你必须先学会编码,但软件开发不仅仅是写代码。 本章讨论的是编码以外的技能。
了解这个职业
首先,您需要了解一些有关软件开发的知识。
这比你想象的更容易也更难。
本书有一整节专门讨论“软件开发技能”软件小白入门记:你不需要是一个天才,甚至智力水平不超过平均水平,但我想首先在这里进行快速概述。
软件开发不仅仅是编写代码。 编程是其中的重要组成部分,但如果您知道如何编程,您可能不会走得太远——尤其是当您想从工作中解脱出来时。
软件开发背后的想法是自动化手动流程,或者创建一个新的自动化流程来完成手动无法完成的事情。
想象一下我现在使用的文字处理软件。 我正在使用文档来撰写这篇文章。
如果没有Docs或其他文字处理软件,我就必须使用打字机或手写来写文章。
如果我想格式化文章,我必须在打印之前手动完成。
如果我想纠正一些错误——尤其是拼写错误——我需要在手边准备一瓶修正液。 (也许还有一瓶威士忌。)
当然,现在能帮我做这些事情的不仅仅是Docs。 还有很多其他硬件或软件可以帮助我自动化手写或排版过程,但我想您已经明白了。
因此,在你上车之前,我需要强调一件事。 你越早知道这一点越好。
在实现自动化之前,您必须知道如何手动执行该操作。
了解需求
太多有抱负且经验丰富的开发人员在没有完全理解其软件功能需求的情况下进行开发。 他们想做的就是编写代码。 (这对于学习编码来说很好——如上面的 MUD 示例——但不适合开发企业级软件。)
当然,你比他们聪明,因为你现在正在读这本书。
找出要解决的问题是任何软件开发过程的**步。 您想要自动化什么流程?
不同的软件开发模型对这个问题有不同的方法,但对我们来说,目前这并不重要。 现在*重要的是,在开发实际编码之前,您需要某种方法来收集需求并了解需要解决的问题是什么。
这可以像与潜在客户谈论他们想要的软件及其具有哪些功能一样随意。 它也可以非常正式并编写标准文档。
设计
一旦你了解了需求是什么,你就可以开始设计如何用代码实现它——同样,你需要在编写代码之前完成设计。
将其视为代码架构的蓝图。 再次强调,不同的软件开发模式有不同的方式来解决这个问题,但现阶段*重要的是在开发代码之前需要进行某种程度的设计。
这适用于各种规模的软件。 一些学习了敏捷开发(后面章节讨论)的程序员感觉不需要任何设计,直接开始编码即可。 虽然前期设计在敏捷开发中并不重要,但设计仍然是必要的。
你不能只写一个软件。
编码
设计完成后,您就可以开始为软件功能编写一些测试(也称为测试驱动开发或 TDD),也可以直接开始编写代码。 (我们将在后面的章节中介绍 TDD。)
编码是一个专门的话题,所以我不会在这里详细介绍,但我想推荐两本关于如何编写好的代码的必读书籍。
首先推荐史蒂夫的《代码百科全书》,这是一本所有程序员必读的经典书籍。
第二本书是Rober的《Clean Code》,另一本教你如何编写更好代码的经典书籍。
用目前的话来说,这两本书可以教你如何编写既可读又易于维护的优雅代码。
这两本书对我的编码技能产生了深远的影响,尤其是代码的清晰度和设计。
测试与发布
编码完成后,就该发布了,对吗?
错误的! 现在我们进入测试代码的过程。 同样,不同的开发模式有不同的方式来处理这个问题,但一般来说,在软件正式发布给用户之前需要进行一定程度的测试。
例如,在传统的瀑布式开发模型中,测试阶段是整个软件开发过程的*后阶段。 然而,在敏捷项目中,每次迭代都需要进行测试,通常需要两周左右的时间。
代码测试完成后,发布就开始了,发布有自己完整、独立的流程。
我们暂时不会讨论细节——稍后会有一整章专门讨论这一点——但发布过程是将完成的软件部署到服务器,使其在应用程序商店上可用,或使用允许用户的其他工具得到它。 到软件。 (这个过程可能相当复杂。)
在此过程中,代码可能(也必须)存储在源代码存储库中,源代码存储库将管理代码的不同版本,并且将存储开发过程中的更改。
在一些比较复杂的应用中,会涉及到数据存储,这里我们也需要用到数据库。
数据库通常用来存储应用程序的用户数据或者一些配置信息,这些数据也需要随着代码一起更新。
许多软件开发团队使用某种形式的持续集成环境,在提交代码时自动构建代码。
编程不仅仅是写代码
*后,不要忘记调试。 作为一名开发人员,您将花费大部分时间来弄清楚为什么您的或其他人的代码无法正常工作。
如您所见,软件开发不仅仅是编写代码。
在获得真正的程序员工作之前,您需要了解所有这些技术。 此外,我希望您能够精通其中一些技术。
不要害怕,我写这本书的目的是帮助您实现上述目标——或者至少为您指明正确的方向。 您可能需要自己学习所有技术,但至少我会向您展示如何学习它们。
制定一个计划
好吧,约翰,现在我明白了软件开发不仅仅是编写代码,而且我愿意花很多时间调试,你还没有告诉我如何开始吗? 怎么说?
嗯,是。 我知道你的意思,但你知道吗? 我有个好消息要告诉你:你已经开始了。 恭喜。
当你拿起一本书(比如这本书)并开始理解软件开发不仅仅是编写代码时,你就比大多数其他开发人员有了更好的开始。
是的,是的,这有点让人感觉良好,但这是事实。 有一天,当你成为像我一样经验丰富的软件开发人员时,你也会说同样的话。
现在,让我们更实际一点,你需要制定一个计划。
是的,这是一个计划。 一个真正的、朴素的计划,它将带您从对软件开发一无所知(或几乎一无所知)到成为一名经验丰富的开发人员。
你可以走的路有很多种——我会在后面的章节中一一介绍——但你选择哪条路并不是*重要的,更重要的是你要选择一条路并坚持走下去。
整合计划
让我们看看您的计划应该是什么样子。
首先,你需要对自己目前的水平有一个正确的评估,弄清楚自己需要学习哪些知识。
您有软件开发经验吗?
你知道哪些软件开发语言吗?
您以前编写过任何应用程序,还是完全从头开始?
我之前提到的其他技能呢?
你掌握其中任何一个了吗?
您了解数据库、源代码版本控制、测试驱动开发、测试、调试或软件开发模式吗?
同时,问问自己软件开发想要往哪个方向发展。
很多新手可能想做游戏开发,但这现实吗? 如果是这样,你从哪里开始? 你是否下定决心,投入大量的时间去面对挑战,走完这条漫长而孤独的路?
太多的人在没有事先思考的情况下就朝着某个方向出发了。
花时间回答这些问题,以便您在开始之前有一个相当清晰的计划。
不要误会我的意思,我肯定会在本书中尽力帮助您解决这些问题,但我无法为您做所有事情。
我可以为您提供成为一名优秀甚至伟大的开发人员所需的所有信息,但您需要将这些信息放在一起并创建一个适合您的计划,然后遵循该计划。
创建计划
一旦您思考了这些问题,就该实际制定计划了。
制定计划的*佳方法是从你想要实现的目标开始倒推。
与“学习如何编程”或“成为一名软件开发人员”相比,你需要有一个更明确的目标,即你想成为一名开发人员的方向。
在本书的“你需要了解的软件开发知识”部分,我将介绍不同的软件开发角色和工作类型供你选择。 您还可以在线搜索以决定哪一个*适合您。
你的目标应该尽可能具体,这样你才能知道自己需要学习什么知识,如何制作简历和作品集,想要进入什么学校或培训机构,甚至想要申请什么样的工作。
我知道做出选择和下定决心是多么困难,但我无法充分强调目标的重要性。
这个目标越具体,后续的学习就越容易。 您将确切地知道要学习什么以及每一步如何采取行动。
谁想成为一名“运动员”?
考虑这个问题:假设您的目标是成为一名“运动员”。
这个目标太宽泛了,如何训练自己成为一名“运动员”?
也许你会举重和跑步,也许你会训练游泳。 同时,你会去网球场练习击球。
你努力训练所有运动项目,以便当你*终决定时,你可以加入任何运动队。
这听起来很荒谬,对吧? 这就像有人试图成为“软件开发人员”一样荒谬——实际上更荒谬。
相反,您需要从一开始就选择一项运动。
一旦你决定跑步,知道如何训练会让你的生活更轻松——相信我。
从目标开始向后推算,以确定实现该目标所需的知识和行动。 一旦完成这一步,就该真正开始制定计划了。
计划的开始应该围绕你需要学习的所有技术。 弄清楚学习所有这些内容的顺序以及如何学习至关重要。
接下来,您需要弄清楚申请职位并找到**份工作需要什么。
*后,您需要有一个可靠的计划来获得这份工作。 你要去哪里找工作? 你需要做什么? 您要申请什么类型的工作?
我可能还给你补充一个计划,就是找到**份工作之后,如何继续提升自己的开发能力,学习更多的知识。
这里可能有点让人不知所措,但不用担心。 我写这本书的目的是让您更轻松地完成这一切。
在接下来的几章中,我将帮助你弄清楚你想要掌握的技能以及如何学习它们,在接下来的章节中,我将向你描述找到工作的所有细节。
现在,您可以开始思考您的计划应该是什么样子,并尝试思考您想成为什么样的软件开发人员。
嘿约翰
但我真的不知道自己想成为什么类型的开发者?
这是一个很好的问题。 如果您是初学者,您可能甚至不知道有哪些选项 - 除了游戏开发人员。
幸运的是,这并不是一个很难解决的问题——尽管它需要在网络上进行一些搜索。
在本书的后面,我讨论了一些类型的软件开发人员。 主要在“您需要了解的软件开发知识”部分,但同时您需要进行自己的研究。
询问一些软件开发人员,您知道他们从事什么类型的软件开发以及他们是什么类型的软件开发人员。
想想你更感兴趣创造什么,并搜索这个东西的相关技术和编程语言。
对于一个软件开发人员来说,有太多的技术和相关的细分领域。
您想开发网络应用程序吗? 移动应用程序怎么样? 您想编写代码来控制冰箱的恒温器或将宇航员送入太空吗?
思考这些问题并进行搜索。 如果你的问题是正确的,那么答案就不难找到。
一个具体的例子
我一直觉得示例起着很大的作用,所以现在让我们看一个真实的场景,一个想要使用 Node.js 作为主要技术的 Web 开发人员的计划:
目标:成为一名 Node.js 开发人员
计划:
学习
学习基础知识
学习 Web 和 Web 开发技术,例如 HTML 和 CSS
了解 Node.js 的基础知识
您可以使用 Node.js 开发一些简单的 Web 应用程序
了解开发人员用于开发 Node.js 应用程序的不同框架和其他技术。
从上面的搜索中了解一些您可以使用的技术和框架。
了解 Node.js 支持的数据库技术之一。
学习计算机科学基础知识:
算法。
数据结构。
了解编写清晰代码的*佳实践。
了解如何构建 Node.js 应用程序。
准备找工作
开始寻找您所在领域的 Node.js 开发人员的工作要求,并确定您的公司需要哪些技能。
列出您*有可能找到工作的当地公司。
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等