许多人想知道他们是否具备成为一名优秀程序员的条件。这个问题没有简单的、勾选这些框的答案,但有一些你可能拥有或可以发展的有用特征。
你为什么问?当您第一次坐下来编写程序时,您可能并不确切知道它应该做什么(或如何做)。如果您对此有纪律,您将花一些时间在纸上计划事情并或多或少地弄清楚您希望您的程序做什么。这很好,但它不能代替实际使用过该程序并注意到,是的,在这里添加这个小功能会很棒。
秘诀是添加小功能可能非常困难!对于以前从未编程过的人来说,这似乎令人惊讶:您需要做的就是让它打印这一段数据,或者接受这一种类型的输入,或者,等等。问题是在程序内部,架构可能不会旨在支持此类信息。例如,假设您想在简单的图形用户界面上将按钮从一个位置移动到另一个位置。如果程序设计得很好,这应该不是太大的问题,但如果没有,那么考虑这种可能性:按钮的位置由其位置(以像素为单位)决定。所有按钮位置都被硬编码到程序中,以允许它决定特定的鼠标单击结束了哪个按钮。现在,如果你移动一个按钮,您可能必须返回并更改每个按钮在例程中的位置以绘制按钮和在例程中接受输入。这可能很麻烦!
显然,您需要某种方式来获得一种不太难更改的按钮位置概念。但是,如果您开始您的程序并且不认为能够移动按钮会很好,bam,您必须返回并更改可能20行或更多行代码(例如,每个按钮两行)只是移动十个按钮之一。而且,如果您按一个按钮出错,您可能会看到难以发现的意外结果。
这种程序设计很脆弱:一开始它可以工作,但是当你需要改变一些东西时,它就不灵活了。每个按钮都依赖于其他按钮,并依赖于程序员进行更改。一种更好的方法是将绘制按钮和单击按钮时的位置联系起来——更改一个并不意味着您必须更改另一个。
您越愿意在设计程序之前进行预先思考,您就越容易找到实际的代码编写方式。这并不是说当您第一次学习时,您不应该只编写一些简单的程序而不必过多担心这些问题。但是您应该准备好注意这些事情以及您的第一个程序确实存在哪些问题。
你需要的第二个特质是耐心。在你的编程生涯的某个阶段,你肯定会犯一些小错误,这些错误会花费你数小时的调试时间,然后才意识到你拼错了一个变量名,所以编译器认为它是另一个变量。这些事情甚至发生在优秀的程序员身上——你练习得越好,你发现你的错误就越有趣——但仍然很难找到。如果您不愿意耐心地研究可能的假设并依次测试每个假设,那么您可能会发现编程既令人沮丧又令人振奋。
如果您希望最终获得一份全职的编程工作,那么您将需要获得足够的耐心,因为几乎可以肯定,您会花费大量时间为其他程序员编写代码文档,甚至可能会寻找别人代码中的错误。
所有这一切的好处是,您可以关注可能产生连锁反应的小细节,并且在询问自己可能出现什么问题以及如何测试它的过程中变得更好。最后,您可以使用许多工具来帮助缓解问题;您可以使用编译器查找语法错误,使用调试器查找运行时错误。生活并不黯淡:并非所有时间都花在寻找错误上!
你需要能够以逻辑、精确、严谨的方式思考--您必须愿意并且能够指定流程中的所有细节并准确了解其中的内容。这可能会导致一些惊人的认识——例如,一旦你编写了一个程序来实际执行它,你就会更好地理解几乎任何东西。有一个故事说,一群程序员在试图对法律的逻辑进行编程时,发现了立法机关通过的州法律中的一个缺陷——结果发现有两段陈述相互矛盾!没有人注意到,直到他们试图让计算机能够理解它变得足够简单。但这确实意味着您需要有能力最终以计算机能够机械地再现它所需的详细程度来理解整个过程。
同时,你必须能够以正确的方式解决问题,成为或成为一个好的问题解决者。虽然您的程序可能需要完成某项任务,但不要陷入您尝试解决问题的第一种方式。例如,如果您需要存储20个电话号码,使用数组可能比使用20个单独的变量更有意义。即使您最终可以这样编写程序,但使用数组编写程序会好得多。这将是一个更短的程序并且更易于维护。通常,重述问题是重新定义问题的好方法。这是您将随着时间的推移而学习的技能;在开始编程之前,您无需掌握它。
如果你坚持不懈,愿意关注设计问题,并专注于解决问题和精确解决问题,你将成为一名程序员。如果没有,那么您可能会发现编程生涯令人沮丧和乏味。
以上就是极悦小编介绍的"当程序员需要学什么,自身具备什么?",希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为您服务。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习