Managing the “jack of all trades” concept : not focused on one thing, professional in a limited number of things
几分钟后可能会关门,但我想我还是应该问这个问题。正如我在行业中所看到的,如果您了解的语言不止一种,这真的很有帮助;如果您可以使用多个SQL引擎而不仅仅是一种,并且在极少数情况下,如果您同时了解软件工程和编程(等等),并且列表还在继续。
当我第一次开始编程时(一年前),我使用了php和mysql。后来我去了奥德斯克,开始寻找副业,我不知所措,不仅是"php",还有Wordpress、Joomla、CodeIgniter、Zend等。我知道了这一点,决定学习Joomla、CodeIgniter和Kohana。当我浏览网页时,我遇到了python和ruby。然后我决定学习Python,姜戈和塔架。在浏览了更多之后,我遇到了PostgreSQL和MongoDB。所以,我决定和MySQL一起学习PostgreSQL和MongoDB。
在我决定研究它们之前,我读过关于它们的文章:是什么让人们从一件事转向另一件事,是什么使这件事比这件事和这一切更好。
然而,当我听说iPhone和Android的开发(尤其是当ASE开始运行时,允许我在Android中使用python和php)时,我的好奇心又一次松动了,因此,几周后,我可能会在探索的过程中再次踏上全新的道路。
我无法控制自己探索和学习新事物的欲望,但我担心这样做的话,我可能无法真正擅长其中的一件或某些事情(我的目标是成为一个精通PHP、Python、Web设计和上述DB软件的Web开发人员)。所以为了管理事情,我决定坚持网络(和移动网络)开发(我甚至计划做一些人工智能,游戏和桌面编程,但我不得不放弃),特别是在前面提到的技术。
但后来我从许多"各行各业的杰克"文章中读到的东西浮现在我的脑海中:你要么擅长一个,要么什么都不擅长。
你们中是否有人精通不止一种编程语言,或者不止一种数据库软件(我的意思是"非常好")?你是怎么做到的?你何时/何地停止学习全新的东西?
我发现"各行各业,无人问津"的逻辑有时是错误的。
对不同领域、编程语言和技术的广泛了解可以让您看到模式、关系和解决方案,如果您只知道或使用一组非常具体的工具,那么您就会忘记这些模式、关系和解决方案。
医学界有一句话:"给病人看肿瘤,他们会发现癌症,给神经科医生看同一个病人,他们会发现神经系统疾病。"
有时非常专业会使你的观点产生偏差,以至于你试图运用你非常具体的知识来解决问题,而不是寻求最佳的解决方案。
然而,这并不意味着你不能在许多方面成为专家。你提到你只做了一年的编程。你显然很热情,很有天赋,但时间很短。你将有很多年的时间来熟悉你的工艺的许多方面。
Has anyone of you been proficient in more than just one programming language
只有少数几种不同的语言范例,在这些范例中,大多数语言只因语法、库支持和编程环境的不同而有很大的差异。一旦你学习了一些类型的语言,学习更多的就变得微不足道了(我猜类似于自然语言)。
就我个人而言,我不认为简单地了解多种语言是计算机科学/软件开发全面发展的标志。这被认为是理所当然的,你应该能够在不付出太多努力的情况下获得给定的语言或开发环境。
熟悉机器学习、人工智能、数值建模、计算机视觉、计算机图形学、高等数学的许多分支等各个领域。更难实现和维护。这样的事情我常常感叹不知道,似乎没有足够的时间来尝试。我想这取决于你需要用什么。
正如阿克塞特很好地总结的那样:
There are only a few distinct language paradigms, and within those most languages only vary significantly by syntax, library support and programming environments. Once you learn a few types of languages learning more becomes trivial.
与其学习Java和C语言,最好还是学习Java/C语言程序语言。数据库也是如此;通过使用关系型SQL数据库和NoSQL数据库,您将学到比学习MySQL和PostgreSQL更多的东西。
真正的挑战不是学习不同的原则。要精通这些原则要困难得多,因为您需要定期积极地使用每种技术,而且一天只有24小时。
附言:我认为这应该是一个社区维基:)
看到这个了。其他方面:
- 做一个全能程序员的好处和好处
- 掌握一些编程语言要比掌握许多编程语言好吗?
- 是走得宽还是走得深
- 在单一技术上工作更好还是在不同技术上工作更好?
- 选择和坚持技术堆栈有多重要?
作为一个类似的例子:医学领域从神经学到肿瘤学有相当广泛的分支。但是从业者总是有一个知识的基线,在这之后他们就追求自己的专业化。
建立基线知识非常重要。诸如OOP概念、MVC、编码最佳实践等内容应该对您很清楚。我的建议是:选择一种语言/平台,并真正擅长它。是Python向导或Java大师。你从中获得的知识可以转移到你将要学习的其他平台上。由于你正处于职业生涯的开始阶段,逐步掌握一个或两个平台,然后你就可以开始跳起来学习其他平台。对于采用新技能来说,太多的碎片化也很糟糕,特别是如果你是新手的话。从一个平台跳到另一个平台,会混淆一个人的知识,迫使你经常重新学习或复习。所以,再次,开发基线知识。
你的技能将逐步扩大加班时间。别急着吃整个馅饼,否则你会窒息的。