在过去的15年里,我一直在以非CS学位进行编程.我进入编程的主要原因是我喜欢学习新事物并将它们应用到我的工作中。我能够比其他人更快地发现和修复编程错误及其原因。但我从来没有找到一个大师或专家,也许是由于我的非CS专业。当我看到伟大的程序员时,我发现他们在解决问题方面非常优秀,当然比我好得多。
在我的中期职业生涯中,我发现一个很好的技能就是以相反的顺序和抽象的方式思考需求和任务。通过这种方式,我可以看到我真正需要做的事情,没有细节,并且可以快速找到已经存在的部分解决方案。
所以我想知道是否还有其他的思考技巧可以成为一名优秀的程序员。我遵循了下面的问题,实际上读了一些推荐的书。但是,我不能真正找到直接适用于我的编程工作的好方法。
发布于 2012-06-02 20:59:00
谢谢你对现有问题的指点。但这些答案与我所理解的你想要的完全不同。我会根据我自己的经验给你一些建议。我自己的学位是物理学,我来到这个领域时,是否在形式、正确性/验证、算法分析、动态规划、数据库系统等方面存在空白,并在很大程度上开始选择数据结构和算法。最明显的差距(如数据结构和算法)我很早就关闭了,但我仍然阅读这方面的书籍,以加深我的理解,看到替代的演示文稿,并刷新我的记忆。(我大约40岁,所以书对我有用:)
这是一份阅读清单(除了他们想到的顺序之外,没有别的顺序)。
当我在90年代中期读到“实心密码”时,我也学到了很多东西。但它并没有出现在列表中,因为它与思维技巧本身并没有很强的关系(它更多地涉及设计API,以尽量减少意外错误使用的可能性--至少这是我的主要目的)。
我也从哥德尔,埃舍尔,巴赫(霍夫施塔特)十几岁的时候学到了很多东西,但是在你已经指出的问题的答案中已经提到了这一点。这是一本为了娱乐而阅读的书,而不是直接培养一个人的计算机科学技能。
我和一大批有才华的程序员一起工作,他们几乎都是编程珍珠的粉丝。当然,我希望我面试的更多的候选人读过那本书的第四章。
发布于 2012-06-02 19:11:44
首先,对于任何一个特定的学科,总会有一个人在某种程度上做得更好。别担心那部分。
然后,CS学位是很好的,而且它给你的理论知识当然是有用的,但它绝不意味着某人是一个优秀的程序员。一些最好的程序员是自学的,相信我,这个世界上到处都是电脑专业的毕业生,他们无法从湿纸袋里编程。所以也别担心那部分。
至于要成为一个好的程序员需要做些什么:我认为有两件事是必不可少的。其中之一是,您需要能够以严格的形式处理问题,并在一定程度上进行抽象思考。如果您理解指针和递归,您很可能在这方面很好。另一个是奉献和坚持。就像其他任何技术一样,编程需要成千上万个小时的专心致志的练习才能掌握,它不会在晚上发生。至少要用十年的时间才能达到掌握的目的。如果你充满激情,投入时间,集中精力,找到新的挑战将是很容易的;如果你不是,我想这仍然是可能的,但这不会是一次愉快的旅程。
发布于 2012-06-02 18:50:25
记住,每当你开始学习编程语言时,首先要学习这个概念,然后马上测试它意味着实际上,一旦你做了这个练习,你就不会忘记概念及其使用。
接下来是众所周知的“熟能生巧”,它也适用于编程。你越多地玩代码,运行代码,读现有的代码来修正它,你就会变得不是很好,而是gr8程序员。
https://softwareengineering.stackexchange.com/questions/151317
复制相似问题