在编程时增加逻辑的技术


21

我从最近三年开始从事编程工作。但是我似乎迷失了。即使我每天编写代码,我也无法擅长。

假设我解决了一个问题,我将在解决方案之间徘徊,并实施其他解决方案。我不能集中精神。我编写的代码有很多缺陷。我害怕编写代码,我不知道为什么不按时完成我的老板会解雇我等等。我喜欢编写代码,但并非一直如此。如何增加耐心?

我一直想知道如何像许多杰出的程序员一样成为最好的程序员。我知道这听起来很主观,但是我认为这将有助于程序员社区尤其是像我这样的普通人或初学者。


8
这种感觉很常见。并非所有人都将编写编译器,或者将成为核心程序员。我没有编程方面的正式培训,但是解决问题是关键。随着技术的飞速发展,很难超越水面。我努力不断改进。那是我的目标 理解这个职业是非常不同的,努力做到最好,并不断前进。我每周总是花一些时间来学习或理解新知识。只要保持这种态度,您就会好起来的。
乔恩·雷诺

“我害怕代码……如果我不按时完成,我的老板会开除我,等等。”-这不是一个可以享受编程并因此变得更好的好环境。
Paul D. Waite,

@ PaulD.Waite是的,虽然不好,但是很常见。
Pramesh Bajracharya

Answers:


12

我个人建议从较小的障碍入手。尝试以较小的块进行编码,并获得更多的中间胜利。听起来如果事情持续太久或没有显示进度,您会感到不知所措或无聊。我可以肯定地说我去过同一条船。

就像把它当作三明治一样:您不会一口吃掉整个东西,而是将其分解。对项目,任务等执行相同的操作。根据您所处的级别,您可能需要让主管/经理为您分解。如果您要负责自己的工作量,则为自己设置一些几乎可以完成的终点线(不要设定您永远无法实现的目标,这只会使您更灰心,并使您处于不利的位置)。例如,“到中午我想定义这个类”,“到2月我想实现这个接口”,等等。

我的公司以开始和扩大项目而臭名昭著,使我能够达到90%的目标,然后将地毯从我下面挖出来,继续前进到“下一件大事”。我开始感到沮丧,因为我从来没有完成任何事情,而是让我陷入“放克”状态(如果可以的话)。最后,我退后一步,告诉他们直到完成我即将完成的工作,我才继续前进。这确实令我的自尊,道德和精力感到惊讶(尽管我不能对雇主这么说:耸耸肩:)


7

我的建议是找一位导师。

当您获得一个新项目时,请决定要走的路:总体设计是什么样的;您将使用什么算法;您如何计划开发它,以便可以及早且经常进行测试;等等。

将这些计划带给您的导师,并与他/她讨论。如果他们看到您走错了路,或者您错过了重要的事情,请修改计划,然后重试。

现在您有了批准的计划,请坚持执行。除非发生完全灾难性的事情,否则不要更改计划,然后返回修改计划,获得批准并重新启动。否则,请坚持您的计划并完全完成您决定要做的事情。定期与导师核对以验证您的实施,并确保在编写和使用测试的过程中。

如果您成功完成了上述所有操作,则将按时交付项目并获得正确的结果。如果您想返回并重构项目的某些部分,则拥有所有已构建的测试以及要从中构建程序的工作副本。

在我看来,您似乎过于分散且缺乏专心。也许,如果您可以解决这些问题并与您尊敬的人一起工作,那么您将尽快走上正轨。

祝您好运。


6

我相信我的位置与您完全相同,不能在那里待着。这可能会令人丧气,老实说有时会令人沮丧。但是,与我相信的任何事情一样,您可以采取某些措施来减轻这种情况,从而使自己的职业生涯更加健康快乐。

  1. 您必须要改变并变得更好。如果您有这种感觉,但又不准备提高自己的技能,那么几乎没有任何工具/过程可以为您做任何事情。

  2. 有些人天生才华横溢。有些人努力工作才能变得出色。大多数人只是为了奋斗而努力奋斗。如果您没有天赋的才能(编程或其他方式),那么努力工作可以带您到那里。只是努力程度会有所不同。没有什么是不可能的。

  3. 接受您的蔑视并寻求改善。我看到的最大障碍之一是那些害怕接受自己的方式不是好方法的人,因此从不寻求建议或讨论其他做事方式。因此,他们永远不会学习更好的做法,因此一遍又一遍地继续犯同样的错误。

  4. 向那些您认为优秀的程序员提出建议。永远不要害怕说话并向同事咨询。但是,请始终以他们的建议为准,并自行决定是否同意。不管某人有多聪明,总是有很多编程循环的方法。

  5. 阅读,阅读,阅读。阅读新闻组。在这样的网站上发布问题(做得很好)。购买您听说过的好书,或寻求其他建议。

  6. 明确地将设计原则应用于小步骤,然后为您所做的一切感到自豪。如果您对自己的代码感到自豪,那么错误和错误的可能性就较小。

  7. 公开征求意见和帮助。接近一维思维。对许多可能性和方法持开放态度。寻找那些认为一切皆有可能的人。有点像4。

  8. 成为优秀的程序员与成为优秀的员工并不相同。如果您只想成为一名出色的程序员,那么说实话,您可能永远都做不到。但是,我相信每个人都有能力成为出色的员工和人。致力于可以帮助您实现目标的事情。


好答案。听起来这些观点来自一位伟大的导师。通知我学长!!_ / _
Pramesh Bajracharya

4

如果经过3年的每日编码,您在基础方面苦苦挣扎,则需要认真考虑这不是适合您的职业的可能性。

这不是一件坏事。编程并不适合每个人,要找到自己擅长的领域并做到这一点,而不是强加于自己的东西是不自然的。

如果您说的是真的,那么您永远不会成为“例外程序员”。可以,请接受。


评论员:评论旨在寻求澄清,而不是进行扩展讨论。如果您有自己的解决方案,请留下答案。如果您认为此答案很好,请对其进行投票。如果您认为这不好,请否决它。如果您想与其他人讨论这个问题,请使用chat。有关更多信息,请参见FAQ

来吧,三年来没有人成为“例外”。
JacquesB

3

尝试使自己进入Flow状态。这是我成为一名优秀的开发人员最重要的一个因素。为此,您需要挑战自己知道可以做但很难的挑战。您需要找到合适的挑战级别才能投入其中;然后您可以随着病情的好转逐渐增加它。太简单或太难的任务都是有害的。


3

将其分成小块。
让我演示如何使用PB&J三明治。

弄清楚整个基本过程。

1 - Get Ingredients
2 - Combine Ingredients
3 - Cut Sandwich
4 - Serve Sandwich

然后将这些分解

**Get Ingredients**
1 - Validate/Create PB
1.1 - Validate/Create Jelly
1.2 - Validate/Create Bread
2 - Move PB To assembly area
...

重复分解过程,直到您完全了解所涉及的逻辑。

这将使其更容易理解。并且更容易确定通用流程。在开始编码之前,请确保您已弄清楚逻辑。犯错不仅可以,而且可以预期。在实施它们之前先找到它们,更容易纠正。

通常,逻辑是编程中最难的部分。这就是为什么不是每个人都想这样做的原因。如果您不喜欢逻辑,但喜欢UI设计,那么有些角色专门从事于此,您可能会发现更多的乐趣。没有什么不妥。我个人更喜欢UI的逻辑。如果逻辑不是您想要确定的位置,那么还有其他角色。


2

我以前曾遇到过此类问题。它发生在我精疲力尽之前,并且在将近一年后无法进行高效编程(当时我只有19岁)。

无论如何,回顾过去,我遇到的问题是缺乏指导和管理。我会花一两个月的时间来实施某项工作,然后当它快要完成时,突然需要以一种完全不同的方式来完成它。这对我的自尊心是巨大的打击,因为我为自己编写的每一行代码感到自豪。管理层还主要包括几个小时的讨论,讨论某事应该如何工作,然后几天不讨论任何事情。当然,这也是我的错。有时,工作变得非常乏味,而且我觉得我只是在键入代码,而根本没有创造力,这也使情况更加复杂。

一般准则:

  1. 如果您觉得方向不足,请提出来。向您的上司询问事情进展的更多结构
  2. 如果您必须一直删除代码(并且不能像重构那样很好),请认真考虑为什么在实施之前没有构建更完整的计划
  3. 如果您是一家规模不大的初创公司,并且充当“主要”开发人员,那么当您显然没有经验时,请放下自豪感,并告诉您的经理,您实际上更是一个初级开发人员。
  4. 通常,由于没有完成工作而带来了Tedium。以较小的精力来完成任务,并跟踪进度。这将有助于您感觉自己正在完成工作
  5. 如果所有其他方法都失败了,那么您可能想在其他地方开始申请,尤其是如果您的经理似乎不在乎您可能会精疲力尽

-1

寻找一个像Zendo这样的归纳逻辑游戏,并在业余时间玩它。说真的 归纳逻辑是调试的心脏。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.