새로운 프로그래머가 능숙해질 때까지 단일 기술에 집중해야합니까? [닫은]


10

좋아, 나는 친구에게 한동안 프로그램하는 법을 가르치고있다. 그는 매우 빠른 학습자이며 지금까지 프로그래밍에 능숙합니다. 그러나 그는 계속해서 수정하려고하는 하나의 "문제"를 가지고 있습니다.

그는 몇 가지 기본 사항을 배우지 않고 고급 프로그래밍을 시작하고 시작합니다 (완전히 웹 응용 프로그램을 만들었지 만 페이지 매김 또는 세션 관리를 모르는 경우).

그러나 이것은 문제가되지 않습니다. 그는 계속해서 새로운 기술 (Node.js, MongoDB, EC2 등)로 뛰어 들고 있습니다. MongoDB의 기본 사항을 배우는 데 많은 시간을 투자하기 전에 매일 사용하는 RDMS 선택 (MySQL)에 대한 몇 가지 기본 사항을 익혀야한다고 말했습니다.

나는 여기에 잘못된 사람입니까, 아니면 한 번에 한 가지에 집중하고 정말로 잘해야합니까?


6
그의 웹 애플리케이션이 세션 및 페이지 매김을 지원하도록 요구할 수있는 좋은 기회 인 것 같습니다. 그렇게하면 배우지 않겠습니까?

또한 어떤 단일 기술을 배워야합니까?

@ ThorbjørnRavnAndersen 단일 기술은 아니지만 LAMP 스택은 그가 일상적으로 사용하는 것입니다. 나는 최소한 MySQL, Apache, PHP 및 JavaScript에 대한 그의 직업 세부 사항과 관련된 모든 기본 / 관련 내용을 알아야한다고 생각합니다.
Brandon Wamboldt

1
그런 다음 본질적으로 "아니오"로 자신의 질문에 대답했습니다.

1
그는 이미 웹, 데이터베이스 등과 같은 여러 기술을 한 번에 배우지 않습니까? 여기서 기술을 구성하는 범위는 무엇입니까?
JB King

답변:


18

개인적으로 저는 프로그래밍을 배우면서 다른 기술과 언어를 샘플링하는 것이 좋은 생각이라고 생각합니다. 하나의 기술에 집중하면 기술을 잘 활용할 수 있다는 명백한 이점이 있지만 단일 기술 만 아는 것이 명백한 단점입니다.

그러나 더 중요한 미묘한 단점은 언어와 프레임 워크에 일반적으로 이데올로기가 있다는 것입니다. 프로그래밍하는 모든 것에 하나의 이데올로기를 적용하는 많은 프로그래머 (아마도 대부분의 프로그래머)가 있습니다. 그들은 종종 한 언어로 하나의 프레임 워크를 실제로 배웠기 때문에 잘 고글이 없으면 아무것도 볼 수 없기 때문입니다.

특히 프로그래밍을 배우는 사람에게는 실제로 존재하는 것을 시도하고 나중에 뭔가에 집중하기를 기다리는 것이 문제라고 생각하지 않습니다. 결국, 기술을 잘 알지 못하면 실질적인 것을 작성하는 것은 어려울 것입니다.


2
두 번째 단락에 +1 다른 언어, 프레임 워크 및 API를 살펴보면 설계자가 주어진 방식으로 주어진 언어 / 프레임 워크 / API를 구현하기로 선택한 이유에 대해 많은 것을 배울 수 있습니다. 학습자에게 프로그래밍과 소프트웨어에 대한 전반적인 이해를 제공합니다. 적어도, imho
Jamie Taylor

+1 "실제"프로그래밍 작업과 같이 집중력을 배우는 상황이 있습니다. 그러나 하나의 프레임 워크에만 노출 된 경우 어떻게 구직합니까? 하나 이상의 프레임 워크 / 라이브러리에 무언가를 작성하여 이력서를 채울 수 있고 특정 기술에 편향되어 있지 않음을 보여줄 수 있습니다. ;-) 나중에 실제 컨텍스트를 얻은 후에는 페이지 매김 및 RMDB와 같은 것을 배울 수 있습니다.
Spoike

@Spoike 그는 "실제"프로그래밍 작업을 수행하고 있습니다. 따라서 그가 그 작업에 매일 사용하는 기술에 집중하려고하는 이유
Brandon Wamboldt

1
@RougeCoder : 적절한 작업 (이 거대한 목록, 필터 항목, 그룹화 된 샘플로 그림 그리기 등)을 제공하여 원하는 개념을 수행하는 방법을 배울 수 있습니다. 그러한 작업이 없다면 그 지식을 고수 할 컨텍스트가 없습니다.
Spoike

1
사람들이 "함수 프로그래밍을 배우면 다르게 생각하게한다"고 말했을 때 나는 그것이 BS이거나 적어도 과장된 것이라고 생각했었다. 결과적으로 코드에 미치는 영향이 줄어 들었습니다. 내 코드는 이미 완전히 다르므로 아직 선택한 기능 언어에 능숙 하지 않으며 코드 작성 방식을 변경 하려고하지 않습니다 . 정말 눈을 뜨는 사람입니다.
Steven Evers

5

이 문제의 양쪽에는 좋은 추론이 있습니다. 많은 다른 기술에 대해 " 충분한 " 것을 아는 것은 확실히 가치가 있습니다. 많은 다른 기술에 대해 " 약간 "을 알고 있습니까? 별로.

특정 기술에 대한 깊은 지식 은 확실히 요구 될 수 있습니다. 특정 기술에 대해 " 알아야 할 모든 것 " 을 아십니까 ? ... 아마도 과잉 일 것입니다.

모든 것이 균형을 이루고 있습니다. 그가 nosql로 멋진 앱을 만들면 왜 InnoDB 엔진과 MyISAM 엔진의 차이점을 알아야합니까?


InnoDB와 MyISAM의 차이점은 기본적으로 트랜잭션입니다. 그가 거래를 이해하지 못한다면, "최종 일관성"과 같은 개념을 올바르게 사용할 가능성은 어느 정도입니까?
Michael Borgwardt

용서? 아무도 그가 거래를 이해하지 못한다고 말했고, 내가 쓴 것이 전혀 암시하지 않았습니다.
pbr

3

부분적으로 동의합니다. 그는 기본 원칙을 알아야 할 필요가 있지만, 한 가지 일만하고 진정으로 그것을 잘 활용할 필요는 없습니다. 아무도 없습니다.

한 가지로 앉아서 정말 좋아지면서

저는 현재 C # 및 Microsoft XNA와 함께 게임을 만들고 있습니다. 나는 XNA에 대해 많이 배우고 있으며 이미 C #에 능숙하지만 지식은 조금씩 확장되고 있습니다 (오늘 나는 매개 변수에 대한 제약 조건에 대해 배웠습니다 ).

그러나 XNA 또는 C #에서 '정말 좋은'사람이 될 필요는 없습니다. 지금 프로젝트를 마치고 다시는 그 중 하나를 사용하지 않으면 완전히 만족할 것이며 다른 곳에서 계속 학습하게됩니다.

원칙은 중요하지만

최소한 나는 기본 원리를 이해합니다. C # 및 XNA로 물건을 만들 때 내가하고있는 일을 이해합니다. 그렇지 않으면 그것에 대해 배웁니다.

페이지 매김을 쓴 경우 페이지 매김이 어떻게 작동하는지 이해할 것입니다. 친구가 페이지 매김을 만들고 어떻게 작동했는지 모를 경우 문제가됩니다. 그가 페이지 매김을 만들지 않았다면 그가 알아야 할 이유가 없습니다.

여기서 문제는 : @ $ #가 무엇인지 알고 있습니까! 그는하고 있거나 프로그래밍 방법을 모르는 프로그래머입니까?


당신은 좋은 점수를 올립니다. 문제는 그가하는 일을 알고 있지만 그가하지 않는 다른 일을하는 것입니다 (나는 배우기를 원하지 않기 때문에 다른 프로젝트에서 계속 복사하고 있습니다). 예를 들어, 그는 페이지 매김을 작성했습니다. 한 조각 씩 살펴 보았지만 여전히 이해하지 못합니다. 나는 그것이 매우 간단한 개념이기 때문에 그가 그것을 이해할 수 있다는 것을 알고 있으며, 그는 훨씬 더 복잡한 일을 해냈습니다.
Brandon Wamboldt

예, 그것은 것입니다 문제는. 그가 코드를 작성하고 있다면, 그는 복사-붙여 넣기 프로그래머가되고, 자신이 무엇을하고 있는지 전혀 모르는 프로그래머라는 것을 이해하지 못한다.
doppelgreener

3

그가 만들고 싶은 것이 있기 때문에 다른 언어를 시도하고 있다고 생각합니다. 언제든지 언어 나 프레임 워크로 돌아가서 더 배울 수 있습니다.

이론을 배우고 기초를 세우는 것과 동기 부여를 유지하는 것 사이에는 미세한 선이 있습니다.

적어도 그는 하나의 언어에 갇혀 있지 않습니다. 때때로 당신은 나쁜 일을 잘합니다.


3

나는 그의 태도를 책임이 아니라 자산으로 생각합니다. 그의 연구 능력은 평균 이상입니다. 그의 학습 곡선도 얕습니다. 당신이 그에게 무언가를 배우 길 원한다면이 특성을 이용하지 않겠습니까?

그의 호기심 많은 마음은 항상 움직이고 있습니다. 페이지 매김이 왜 중요하고 필수적인지 말해주십시오. 페이지 매김이있는 웹 사이트와 그렇지 않은 웹 사이트를 살펴 보겠습니다.

그가하고있는 일에 건설적인 비판을주는 것은 어떨까요? "와우는 훌륭한 일을 해냈지만 최적화와 모범 사례에 중점을 두어이 방법을 사용하는 것이 좋지 않을 것입니다.

좋은 연습과 나쁜 연습을 비교하면 실제로 그의 마음을 자극 할 수 있다고 생각합니다.

그를 제한하지 마십시오. 그는 결국 그가 원하는 것을 찾아서 얼마 동안 정착시킬 것입니다. 내가 당신이라면, 나는 그에게 매우 열정적 인 것들에 대한 많은 학습 자료를 제공합니다.

반면에 그는 하향식 접근을하고 있다고 생각하지만 다른 한편으로는 상향식 접근을하기를 원합니다.


1

왜 나쁜가요?

반대로 나는 그것이 매우 좋다고 생각합니다! 호기심과 배우고 싶어합니다. 또한 올바른 작업에 적합한 도구를 찾고 싶습니다! 부적절한 1 차 선택 기술을 고수하는 것보다 낫습니다. ;)

실제로, 나는 노련한 프로그래머로서 마찬가지로합니다. 그리고 나는 그것을 추천합니다. 새 프로젝트가있을 때마다 내 행동은 다음과 같습니다.

  1. 탐색 (유용 할 수있는 잠재적 기술)
  2. 실험 (유망 해 보이는 것으로)
  3. 기술을 선택하십시오 (또는 알 때까지 조금 더 실험 해보십시오)
  4. 그것을 고수하십시오 (앱을 개발하고 끌어 내십시오)

나는 그것이 의미가 있다고 생각합니다.


1

개인적으로 누군가가 하나의 기술에만 집중해야한다면 SQL과 함께 사용되는 C # / Java이어야한다고 말하고 싶습니다.

이것으로부터 다른 기술에 적응할 수 있다고 생각합니다.

그러나 한 사람이 회사 환경에 들어가기를 원한다면 하나의 기술을 고수하는 것이 제한적일 수 있습니다.

이상적으로는 객체 지향 플랫폼, 모바일 플랫폼, 웹 플랫폼 및 SQL (또는 기타 DB 환경)에 대한 지식이 있어야합니다.

그리고 기본 사항은 먼저 그렇지 않으면 나중에 멈출 것입니다!


0

그가 프로그래밍 초보자라면 나쁘지 않습니다.

그는 물건이 어떻게 작동하는지 볼 것입니다. 그러나 그가하고있는 일을 이해하지 못하면 전혀하지 않는 것이 좋습니다.

나는 나 자신에게 그 문제가 있었다. 나는 모든 Java, C, C ++, C #, Phyton, ASP.NET 등을 알고 싶다. 그러나 나는 그것을 모두 알 수는 없다는 것을 깨달았다. 그래서 나는 몇 가지 일에 집중했다. 보다 나은.

그래서 그는 어떻게해야합니까 (그에게 조언하십시오) :

  1. 당신이하고 싶은 일을 생각하십시오
  2. 모든 옵션 살펴보기
  3. 당신에게 맞는 것을 찾으십시오
  4. 그것을 배우십시오
  5. 배우는 것을 멈추지 마십시오

새로운 프로젝트가 당신 앞에있을 때 항상 새로운 것을 탐색하고 배우면 @arnaud에 동의하지 않을 것입니다. 새로운 것을 탐색하고 배우는 데 너무 많은 시간이 걸리며 일부 프로젝트에는 시간 제한이 있습니다. 그러나 다른 한편으로 간단한 새로운 것들을 배울 필요가 있다면 괜찮습니다 : D.


0

때로는 특정 프레임 워크 나 기술 또는 언어에 대한 피상적 인 지식을 얻기가 쉽지만 실제 세계 개발에 참여하여 완료까지 유지하고이를 유지하기위한 최선의 이해를 얻는 것이 좋습니다. 조언을 구하십시오. 모든 거래잭이 아닌 모든 거래잭이 아닌 하나의 마스터 가되는 것이 바람직합니다 . 그는 분명히 좋은 열정을 가지고 있기 때문에 새로운 것을 배우는 것을 권장하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.