新程序员应该精通一种技术,直到精通该技术吗?[关闭]


10

好的,我一直在教一个伙伴如何编程已有一段时间了。他是一个学习速度很快的人,到目前为止,他在编程方面也很擅长。但是,他有一个我一直试图纠正的“问题”。

他开始学习并开始进行高级编程,而没有学习一些基础知识(他创建了功能强大的Web应用程序,但仍然不知道分页或会话管理)。

不过这不是问题。他一直在研究新技术(Node.js,MongoDB,EC2等)。我试着告诉他,他应该每天学习一些有关他所选择的RDMS(MySQL)的基础知识,然后再花大量时间学习MongoDB的基础知识(并可能会迁移到新的东西)。

我是这里的错人吗,还是他应该一次专注于一件事情并真正做到这一点?


6
听起来像是一个很好的机会,要求他的Web应用程序支持会话和分页。那不会导致他学习吗?

还应该学习哪种单一技术?

@ThorbjørnRavnAndersen与其说是一项技术,不如说是LAMP栈是他每天使用的技术。我认为他至少应该学习所有有关MySQL,Apache,PHP和JavaScript的工作细节的基础知识。
Brandon Wamboldt 2012年

1
然后,您基本上用“否”回答了自己的问题。

1
他不是已经一次学习了Web,数据库等多种技术吗?这里构成技术的界限是什么?
JB King

Answers:


18

就个人而言,我认为在学习编程时对不同的技术和语言进行采样可能是一个好主意。专注于一种技术具有使您非常擅长的明显好处,但是仅了解一种技术就具有明显的弊端。

但是我认为更重要的缺点是语言和框架通常带有意识形态。有许多程序员(也许是大多数程序员)只在他们编程的所有内容中应用一种意识形态。这通常是因为他们非常熟练地用一种语言学习了一个框架,现在如果没有这些护目镜,他们将看不到任何东西。

尤其是对于刚开始学习编程的人来说,我真的不想要尝试那里的东西,等到以后再专注于某个东西,这不是一个问题。毕竟,如果不非常了解某项技术,将很难编写任何实质性的内容。


2
第二段为+1。我要补充一点,看看不同的语言,框架和API可以教给您很多有关为什么设计师选择以他们所采用的方式实现给定语言/框架/ API的知识。使学习者对编程和软件整体有更深入的了解。至少,恕我直言
Jamie Taylor

+1在某些情况下,您将学会专注,例如​​当您完成“真正的”编程工作时。但是,如果只接触一个框架,您将如何获得工作呢?学习在一个以上的框架/库中写东西,以便您可以填写简历,并表明您不偏爱一种特定的技术。;-)一旦获得实际背景,您就可以学习分页和RMDB等内容。
Spoike 2012年

@Spoike他有一个“真正的”编程工作,因此我试图让他专注于他每天用于该工作的技术的原因
Brandon Wamboldt 2012年

1
@RougeCoder:给他适当的任务(页面上这个巨大的列表,过滤器项,绘制带有分组样本的图等),使他能够学习如何做您想让他知道的概念。如果没有这样的任务,那么他就没有上下文可以使自己的知识坚持下去。
Spoike 2012年

1
我曾经认为这是BS,或者至少是夸张的说法,当时人们说诸如“学习函数式编程会使您的思维方式有所不同”之类的东西。事实证明,他们正在削减它对您的代码的影响。我的代码已经完全不同了,并且我还没有精通所选择的功能语言,也没有试图改变编写代码的方式。这真的是大开眼界。
史蒂文·埃弗斯

5

这个问题的两面都有很好的理由。对许多不同的技术“ 足够 ”了解无疑是有价值的。知道“ 一点点 ”了很多不同的技术?没那么多。

如果对特定技术有持续的需求,那么对这些技术的深入了解肯定会很有价值。知道某个特定技术的“ 所有知识 ”吗?...很可能是过度杀伤力

因此,一切都在平衡之中。如果他最终使用nosql构建了出色的应用程序,为什么他必须知道InnoDB引擎和MyISAM引擎之间的区别?


好吧,InnoDB和MyISAM之间的区别基本上是事务。如果他不了解交易,他有什么机会正确地使用“最终一致性”之类的概念?
Michael Borgwardt'4

赦免?没有人说他不了解交易,而我写的内容并不意味着一切。
pbr 2012年

3

我部分同意。他确实需要了解基本原理-但他不必只是坐下来做一件事情,并且真正擅长于此。没人会。

坐下来一件事变得非常好

我目前正在使用C#和Microsoft XNA制作游戏。我正在学习有关XNA的很多知识,尽管我已经相当熟练地使用C#,但是我的知识正在一点一点地扩展(今天我了解了关于类型参数的约束)。

但是,我不需要成为XNA或C#的“真正的好手”。如果我现在就完成我的项目并继续前进,而不再使用任何一个,那么我将完全满意,并且我的学习将在其他地方继续。

原则很重要

至少我了解基本原理。当我用C#和XNA创建事物时,我了解我在做什么-如果不这样做,我会了解到这一点。

如果我写了分页,我将理解分页的工作原理。如果您的朋友创建了一些分页并且不知道它如何工作,那就是一个问题。如果他没有创建分页,则没有理由他不需要知道。

这里的问题是:他是否知道@ $#!他在做什么,还是他是一个不知道如何编程的程序员?


你提出好点子。问题在于,有些东西他知道他在做什么,而其他东西他却不知道(我想他只是不想学习它,所以他不断从其他项目中复制它)。例如,他写的是分页纸,我已逐篇阅读,但是他仍然不明白。我知道他能理解,因为这是一个非常简单的概念,而且他所做的事情要复杂得多。
Brandon Wamboldt 2012年

是的,那一个问题。如果他正在编写代码,他将不明白自己是成为复制粘贴程序员的一半,并且是一个不知道自己在做什么的程序员。
doppelgreener 2012年

3

我猜他正在尝试其他语言,因为他想要构建一些东西。您随时可以返回一种语言或框架,以了解更多信息。

在学习理论/建立基础与尝试保持动力之间有一条细线。

至少他不会只讲一种语言。有时候,你会接受好与坏。


3

我发现他的态度是资产而不是负债。他的研究能力高于平均水平。他的学习曲线也很浅。如果您想让他学习一些东西,为什么不利用这个特征。

他的好奇心始终在旅途中,为什么不为他提供指导。首先告诉他为什么分页是重要和必要的。让他看看带有分页的网站和没有分页的网站。

如何对他的行为提出建设性的批评。“哇,您做得很棒,但是如果您采用这种方式来强调优化和最佳实践,那就更好了。

我认为,比较好习惯和坏习惯可以真正激发他的思想。

不要限制他,他最终会找到他想要的东西并解决一段时间。如果我是你,我会为他提供许多有关他如此热衷的事情的学习材料。

我认为他正在采用自下而上的方法,而您却想让他采用自下而上的方法


1

为什么不好?

相反,我认为这非常好!它显示了好奇心和渴望学习。此外,他想找到合适的工具来完成正确的工作!比坚持不充分的首选技术要好。;)

实际上,作为一个经验丰富的程序员,我也这样做。我推荐它。每当我有一个新项目时,我的行为如下:

  1. 探索(可能有用的潜在技术)
  2. 实验(看起来很有希望的实验)
  3. 选择您的技术人员(或进一步尝试,直到您知道为止)
  4. 坚持下去(开发您的应用程序并通过它)

我认为这很合理。


1

就个人而言,如果某人只需要专注于一种技术,我会说它应该是C#/ Java,与SQL一起使用。

我相信您可以从中适应任何其他技术。

但是,如果一个人想要进入公司环境,坚持使用一种技术可能会受到限制。

理想情况下,一个面向对象的平台,一个移动平台,一个Web平台,然后对SQL(或任何其他数据库环境)非常了解。

首先是基础知识,否则他将在以后陷入困境!


0

如果他是编程的初学者,那还不错。

他将看到一些东西的工作方式。但是,如果他不了解自己在做什么,最好不要做。

我自己遇到了问题,我想全部了解Java,C,C ++,C#,Phyton,ASP.NET ...等,但我意识到我一无所知,所以我专注于几件事,这很重要更好。

那么他应该怎么做(建议他):

  1. 想想你想做什么
  2. 探索所有选项
  3. 找到适合你的
  4. 了解它
  5. 从未停止学习

如果您总是在新项目出现之前(总是不完全)探索并学习新知识,我不会同意@arnaud的观点。一次又一次地探索和学习新东西需要太多时间,并且某些项目有时间限制。但是另一方面,如果您需要学习一些简单的新知识,也可以:D。


0

我同意你的观点,有时有时很容易获得有关特定框架,技术或语言的肤浅知识,但要真正理解其最好的方法就是参与到现实世界的发展中来并进行维护,以成为他人。寻求建议。宁愿成为所有行业的杰作,而不是仅仅掌握所有行业的杰作,而不是成为所有行业的杰作。话虽如此,我不会阻止他学习新知识,因为他显然具有很高的热情。

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.