我从最近三年开始从事编程工作。但是我似乎迷失了。即使我每天编写代码,我也无法擅长。
假设我解决了一个问题,我将在解决方案之间徘徊,并实施其他解决方案。我不能集中精神。我编写的代码有很多缺陷。我害怕编写代码,我不知道为什么不按时完成我的老板会解雇我等等。我喜欢编写代码,但并非一直如此。如何增加耐心?
我一直想知道如何像许多杰出的程序员一样成为最好的程序员。我知道这听起来很主观,但是我认为这将有助于程序员社区尤其是像我这样的普通人或初学者。
我从最近三年开始从事编程工作。但是我似乎迷失了。即使我每天编写代码,我也无法擅长。
假设我解决了一个问题,我将在解决方案之间徘徊,并实施其他解决方案。我不能集中精神。我编写的代码有很多缺陷。我害怕编写代码,我不知道为什么不按时完成我的老板会解雇我等等。我喜欢编写代码,但并非一直如此。如何增加耐心?
我一直想知道如何像许多杰出的程序员一样成为最好的程序员。我知道这听起来很主观,但是我认为这将有助于程序员社区尤其是像我这样的普通人或初学者。
Answers:
我个人建议从较小的障碍入手。尝试以较小的块进行编码,并获得更多的中间胜利。听起来如果事情持续太久或没有显示进度,您会感到不知所措或无聊。我可以肯定地说我去过同一条船。
就像把它当作三明治一样:您不会一口吃掉整个东西,而是将其分解。对项目,任务等执行相同的操作。根据您所处的级别,您可能需要让主管/经理为您分解。如果您要负责自己的工作量,则为自己设置一些几乎可以完成的终点线(不要设定您永远无法实现的目标,这只会使您更灰心,并使您处于不利的位置)。例如,“到中午我想定义这个类”,“到2月我想实现这个接口”,等等。
我的公司以开始和扩大项目而臭名昭著,使我能够达到90%的目标,然后将地毯从我下面挖出来,继续前进到“下一件大事”。我开始感到沮丧,因为我从来没有完成任何事情,而是让我陷入“放克”状态(如果可以的话)。最后,我退后一步,告诉他们直到完成我即将完成的工作,我才继续前进。这确实令我的自尊,道德和精力感到惊讶(尽管我不能对雇主这么说:耸耸肩:)
我的建议是找一位导师。
当您获得一个新项目时,请决定要走的路:总体设计是什么样的;您将使用什么算法;您如何计划开发它,以便可以及早且经常进行测试;等等。
将这些计划带给您的导师,并与他/她讨论。如果他们看到您走错了路,或者您错过了重要的事情,请修改计划,然后重试。
现在您有了批准的计划,请坚持执行。除非发生完全灾难性的事情,否则不要更改计划,然后返回修改计划,获得批准并重新启动。否则,请坚持您的计划并完全完成您决定要做的事情。定期与导师核对以验证您的实施,并确保在编写和使用测试的过程中。
如果您成功完成了上述所有操作,则将按时交付项目并获得正确的结果。如果您想返回并重构项目的某些部分,则拥有所有已构建的测试以及要从中构建程序的工作副本。
在我看来,您似乎过于分散且缺乏专心。也许,如果您可以解决这些问题并与您尊敬的人一起工作,那么您将尽快走上正轨。
祝您好运。
我相信我的位置与您完全相同,不能在那里待着。这可能会令人丧气,老实说有时会令人沮丧。但是,与我相信的任何事情一样,您可以采取某些措施来减轻这种情况,从而使自己的职业生涯更加健康快乐。
您必须要改变并变得更好。如果您有这种感觉,但又不准备提高自己的技能,那么几乎没有任何工具/过程可以为您做任何事情。
有些人天生才华横溢。有些人努力工作才能变得出色。大多数人只是为了奋斗而努力奋斗。如果您没有天赋的才能(编程或其他方式),那么努力工作可以带您到那里。只是努力程度会有所不同。没有什么是不可能的。
接受您的蔑视并寻求改善。我看到的最大障碍之一是那些害怕接受自己的方式不是好方法的人,因此从不寻求建议或讨论其他做事方式。因此,他们永远不会学习更好的做法,因此一遍又一遍地继续犯同样的错误。
向那些您认为优秀的程序员提出建议。永远不要害怕说话并向同事咨询。但是,请始终以他们的建议为准,并自行决定是否同意。不管某人有多聪明,总是有很多编程循环的方法。
阅读,阅读,阅读。阅读新闻组。在这样的网站上发布问题(做得很好)。购买您听说过的好书,或寻求其他建议。
明确地将设计原则应用于小步骤,然后为您所做的一切感到自豪。如果您对自己的代码感到自豪,那么错误和错误的可能性就较小。
公开征求意见和帮助。接近一维思维。对许多可能性和方法持开放态度。寻找那些认为一切皆有可能的人。有点像4。
成为优秀的程序员与成为优秀的员工并不相同。如果您只想成为一名出色的程序员,那么说实话,您可能永远都做不到。但是,我相信每个人都有能力成为出色的员工和人。致力于可以帮助您实现目标的事情。
将其分成小块。
让我演示如何使用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的逻辑。如果逻辑不是您想要确定的位置,那么还有其他角色。
我以前曾遇到过此类问题。它发生在我精疲力尽之前,并且在将近一年后无法进行高效编程(当时我只有19岁)。
无论如何,回顾过去,我遇到的问题是缺乏指导和管理。我会花一两个月的时间来实施某项工作,然后当它快要完成时,突然需要以一种完全不同的方式来完成它。这对我的自尊心是巨大的打击,因为我为自己编写的每一行代码感到自豪。管理层还主要包括几个小时的讨论,讨论某事应该如何工作,然后几天不讨论任何事情。当然,这也是我的错。有时,工作变得非常乏味,而且我觉得我只是在键入代码,而根本没有创造力,这也使情况更加复杂。
一般准则: