点击上方关注,All in AI中国
成为一名优秀的程序员是非常困难的,而且不会很快实现。
一个人必须自学才能学会编程。它需要多年的实践来学习一切必要的东西,以超越仅仅是一个基本的水平,在那里你可以编写简短的程序工作。没有人仅仅通过上课或读书就能成为一个伟大的程序员。这需要很多时间的练习,与人们普遍认为的相反,CS程序不教编程,计算机科学课程教授理论。
作为一名程序员,你几乎需要一直去尝试故障排除、修复和开发。这需要一个有毅力的人来坚持,尤其是当你经常看起来没有任何进展的时候。这在很大程度上是一种性格特征,没有这种程度的毅力足以让大多数没有毅力的人放弃这个职业。
你需要在数学和解决问题方面出类拔萃。编程需要解决很多问题。
你需要有一个很好的短期(和长期)记忆,这样你就可以同时在你的大脑中处理多个事情,记住你一个月前写的东西。
你需要非常的注意细节。Close在编程中并不适用。忘记分号了吗?程序无法编译!拼错函数名了?你的程序可能正在做一些与你预期完全不同的事情。
没有这些个性特征就足以淘汰大多数人。
你需要对数据结构和类有深入的了解,并知道何时以及如何使用它们。
你需要对已经开发的库有一定的了解,这样你就不必重新发明了。
通常,你需要了解正在使用的硬件的限制,以便能够正确地管理内存并避免耗尽内存,或者正确地利用内存来消除处理器内数据传输的浪费并加快处理速度。
所以你可以编程。但是你对数据包结构、TCP / IP、HTML、CSS、用户界面设计或数据库有什么了解吗? 我想跟你说,程序不是孤立运行的。
你需要了解的东西很多,而且还要不断的进步。这不是你真正擅长的事情,除非它是你的主要关注点。你不可能成为一个“周末程序员”。
你需要有很长一段不受打扰的时间,这样你在编程(和学习编程)时就不会失去注意力。许多工作(和家庭)环境很难做到这一点。比如这时候你的电话响了,你去接了电话,然后你就需要15分钟来重新思考刚才这段编程。
你经常不得不在匆忙中做出权衡取舍的决定。当然,你可以编写一个程序来处理每一种情况,但是有多少人真的会输入"0"作为输入呢?
最重要的是,也许某个语言只是昙花一现,5年后就没有人使用它了。现在你学习了一个自认为很好的语言,它可能在5年后就不会被使用。
程序员经常被当作工厂工人对待的。没有编程天赋(缺乏商业意识)的人通常负责项目,他们认为程序员是机器上的齿轮。事实上,程序员都是工匠,要想从一个项目中获得最好的结果,明智的做法是询问那些擅长编程的人应该如何做!几乎每个项目最终都超出预算和进度,迫使程序员付出大量没有报酬和没有得到赏识的加班来交付一个设计和测试都很差的产品。优秀的程序员意识到他们并没有比较差的程序员得到更多的报酬,因为管理层无法分辨出他们之间的差别。除此之外,他们还在做额外的工作来弥补其他程序员的不足。
优秀的程序员敢于说出来,并试图把事情变得更好,这对经理来说常常是一种威胁,经理们常常试图摆脱他们(这是其他职位中讨论的一种普遍的雇佣趋势)。这样的事情已经够多了,很容易理解为什么好人对这个职业感到厌倦——尤其是因为还有很多其他的机会。即使是普通程序员,只要他们善于与人打交道,他们也有足够的技能在其他各种职业中取得成功。
我们可以很容易找到程序员,但很难找到优秀的程序员。一般的程序员可能永远都在找工作。优秀的程序员,如果公司意识到他们是优秀的,应该尽一切努力留住他们,所以他们找工作的频率可能会大大降低。当他们开始找工作的时候,他们会对工作地点挑三拣四,这也解释了为什么许多公司声称“没有好的程序员可用,而我们能找到的都是些一般的程序员。”正如其他地方所说的,一个优秀的程序员的价值肯定是一个普通程序员的几倍,而一个较差的程序员的价值实际上是负数。可以说,要让普通程序员变成优秀的程序员是非常困难的,而且对于任何一家初创公司来说,在他们本应专注于快速开发并将其推出市场的时候,投资这些钱很不容易,但显然是值得的。
留言与评论(共有 0 条评论) |