개발자가 기술 및 방법론을 최신 상태로 유지해야하는 이유는 무엇입니까? [닫은]


28

개발자는 항상 webrtc, html5 및 css3의 업데이트 및 새로운 js 라이브러리, TDD, DDD 및 BDD와 같은 소프트웨어 방법과 같은 최신 기술을 최신 상태로 유지해야한다는 조언을 항상받습니다.

문제는 ? 왜 끊임없이 자신을 업데이트해야합니까? 우리가 알고있는 것을 고수하고 더 나아질 수는 없습니까?


16
소프트웨어 개발에는 두 가지 모두를 수행해야합니다. 일부 기술에 대해 자세히 알고 끊임없이 변화하는 새로운 기술을 유지하십시오. 이것이 부분적으로 좋은 개발자를 찾기가 어려운 이유입니다.
joshin4colours

2
지금까지 마감 투표를 해결하기 위해 나는 이것이 공정한 질문이라고 생각하며 사이트에서 정확한 사본을 찾을 수 없습니다. 답을 정리할 수 있도록 잘못된 답변을 주시하십시오.
maple_shaft

4
나는 클래스로서의 프로그래머가 실제로 두 개념이 실제로 무엇을 의미하든 최신의 "웹 기술"로 "최신 상태를 유지"해야하는 이유를 알지 못한다. 호기심과 지속적인 학습은 모든 직업에서 개인 성장에 반드시 중요하지만 "웹 기술"이 개인 성장의 유일한 축이라고 가정하는 잘못된 딜레마는 이것이 내 취향에 대한 질문을 너무 많이 불러 일으 킵니다. 높은 평가를받은 답변을 비판적으로 살펴보면, "게임에 머물러"라는 격려와 동기 부여 슬로건을 제공하는 것 외에 다른 질문에 대답하는 사람이 있습니까?
bmike

1
@ bmike : 나는 당신에게 동의합니다 : 물론 호기심 많은 사람들은 항상 새로운 것들을 배우기를 원할 것입니다. 이 경우 새로운 물건은 모르는 것을 의미하며 40 년 이상 사용 된 흥미로운 프로그래밍 언어 일 수 있습니다 (예 : Lisp). 업계는 우리에게 최신 물건을 재미 있고 기본적으로 더 효과적으로 업데이트하고 고려하도록 강요합니다. 내 요점 : 새로운 기술이기 때문에 필요없는 기술을 배우는 것은 시간 낭비입니다.
Giorgio

1
@RobertHarvey 질문이 "어떻게?" 또는 무엇을?" 그것은 NC가 될 것입니다. 그것은 요구하고 이유를 나는 개인적으로 적절하고 답할 수있다 생각합니다.
maple_shaft

답변:


42

새로운 기술이 이유가 있습니다. 일반적으로 그 이유는 특정 작업을 수행하는 데 더 효율적이거나 강력하기 때문입니다.

레거시 시스템을 위해 오래된 기술을 고수하는 데 여전히 가치가 있지만, 결국 시스템의 수명이 다하면 게임의 배후에있게됩니다.

비즈니스 이유를 제외하고, 끊임없이 새로운 기술을 배우면 구식 기술 등 다양한 방식으로 작업에 접근 할 수 있습니다.


3
+1 : 새로운 기술을 배우는 것은 해당 기술을 직접 적용 하지 않아도 도움 이 되는 경우많습니다 . 제공 한 새로운 견해와 관점은 "오래된"기술을 사용하여 적용 할 수 있습니다.
Joachim Sauer

7
반면에, 모든 신기술을 뛰어 넘는 것은 비생산적이 될 수 있습니다. 왜냐하면 많은 기술이 표면에서 빨리 사라지기 때문입니다.
Gordon Bell

@GordonBell-True ... 다른 사람을 위해 말할 수는 없지만 새로운 기술로 적어도 '주류'가 될 가능성이 있거나 징후가 나타날 때까지는 일반적으로 물을 테스트하지 않습니다. 교육 및 사용자 기반 등에 도움이되는 문서
Anonymous

그들은 종종 학계의 요구를 충족시키기 위해 발생하지만 실제 세계에서는 그렇지 않습니다. 무언가 에 대한 논문을 써야합니다 .
dbracey

@dbracey : 20 년 후 일부 대기업은 연구자들이 일부 성숙 된 기술로 개발하여 새로운 기술 로 판매하기 시작했다는이 논문을 찾을 수 있습니다 .
Giorgio

27

당신이 운이 경우는 하나의 기술 스택에 경력을 구축 할 확실히 가능하지만 1 , 그것은 기술이 당신이 유급 고용 할 때 시간 동안 한 번 이상 바꿀 것입니다 것을 거의 확신이다. 이미 알고있는 것을 더 잘할 수 있지만 미리 새로운 것을 배우면 다음 기술 변화가 업계의 구석에 올 때 학습 곡선을 줄이는 데 도움이됩니다.

새로운 것을 매우 자주 새로운 언어를 배우는 것은 당신이 당신의 현재 언어에 대한 자세한 것들을 배울하는 데 도움이 같은 방법으로, 당신은 이미 다른 관점에서 알고있는 것들을 볼 수 있도록 학습 : 덜 명백한 쪽도 여기에있다 2 .

마지막으로, 새로운 것을 배우는 순수한 오락 가치를 과소 평가해서는 안됩니다. 나에게 TV 시청을 보는 것보다 낫습니다.


1 예를 들어, 1965 년 커리어가 시작될 때 PL / I보다 COBOL을 선택합니다.

2 이것은 자연어와 프로그래밍 언어 모두에 적용됩니다.


1
+1 @dasblinkenlight 저는이 말을 좋아합니다. "... 새로운 것을 미리 배우면 다음 기술 변화가 업계의 구석에 올 때 학습 곡선을 줄이는 데 도움이됩니다." 이것이 제가 지금 Opa를 배우는 이유입니다
Anthony

12

우리가 알고있는 것을 고수하고 더 나아질 수는 없습니까?

당신은 할 수 있지만, 결코 새로운 것을 배우고 싶어하지의 함정에 빠지지 정말 간단합니다. 당신의 직업 전망은 줄어들고, 팀원들은 "완전히 손이 닿지 않는 프로그래머"이기 때문에 당신과 함께 일하고 싶어하지 않습니다.

대부분 균형을 유지해야합니다. 항상 새로운 것을 배우려고 노력하는 것은 많은 것들에 가난하게 만들며, 비행이 어설픈 땜장이로 인식됩니다. 효과적으로 사용할 수 없더라도 몇 가지를 잘 배우고 적어도 존재하는 것을 아는 데 집중하십시오.


2
10 년 전과 마찬가지로 코드를 작성하는 프로그래머와 팀에 갇혀 있어야하는 것보다 직장에서 나를 더 화나게하는 것은 없습니다. 프레임 워크가 발전했습니다. 도구가 진화했습니다. 작업을 더 쉽게하고 싶지 않습니까? 전동 공구가 장착되어있는 하루 종일 수동 크랭크 드릴과 톱을 사용하는 목수는 보이지 않습니다. 그들은 진화했다. 그리고 모든 직업과 마찬가지로 새로운 도구가 요구를 해결하기 위해 발명되었습니다. 새로운 도구를 사용하지 않고 구식 방식으로 무언가를 해킹하려고 시도하는 것은 일반적으로 제작중인 제품의 품질에 해 롭습니다. 코드 또는 목재로 작성하십시오.
CaffGeek

2
"프레임 워크가 진화했습니다. 도구가 진화했습니다. 작업을 더 쉽게하고 싶지 않습니까?": 특정 문제를 해결하는 방법은 무한하며 때로는 새로운 도구 나 언어가 더 좋지는 않지만 이전 도구와 동일합니다. 그러나 이전 제품에 대한 경험이 훨씬 많으므로 생산성을 높일 수 있습니다. 우리는 너무 자주 NEW == BETTER라고 가정합니다. 대신 우리는 항상이 진술에 이의를 제기해야합니다.
Giorgio

2
@Giorgio- '다음 큰 것'에 대해 건전한 회의론을 갖는 것이 한 가지입니다. 진짜 진보가 당신을 지나갈 때 머리를 모래에 넣는 것도 또 다른 일입니다. 후자는 너무 일반적입니다.
Telastyn

4
@Telastyn : 나는 두 가지 태도 모두에 50 %를 할당 할 것입니다. 때로는 새로운 기술이 새로운 것이기 때문에 추진되고 있다는 인상을받습니다. 그리고 그것은 일을하는 대안 (더 나은 방법은 아닙니다)입니다. 따라서 우리는 새로운 기술에 능숙 해지려면 몇 달을 소비해야하며 그 후에는 예전 기술과 마찬가지로 생산성이 높아집니다. 그러나 물론, 당신은 머리를 모래에 넣는 것도 잘못이며 항상 새로운 것을 조심해야합니다.
Giorgio

@Giorgio, 배우지 않거나 시도하지 않으면 새로운 방법이 더 나은지 어떻게 알 수 있습니까?
CaffGeek

7

아마도 여러분은 웹 개발자이고 해당 분야의 기술은 언어, 플랫폼, 도구 및 방법론이 점점 더 인기를 얻고 있기 때문에 매우 변동적일 수 있습니다. 매우 높은 수준의 필드입니다. 그 아래에있는 레이어 중 하나라도 변경되면 상단의 위치가 변경됩니다. 그리고 솔직히 새롭습니다. 새로운 분야에는 혁신의 여지가 많이 있습니다.

개인적으로 저는 임베디드 장치에서 일하고 C를 배웠으며 그것은 저에게 아주 효과적이었습니다.

그러나 나는 여전히 정기적으로 새로운 것을 배우고 있습니다. C의 소켓, SQL 라이브러리, ncurses, 객체 및 방법론은 기술과 느슨하게 결합됩니다. 학교에서 단위 테스트를 끔찍하게 가르쳤으며 이제 막 머리를 감고 있습니다. 얼마 전 의존성 주입에 대해 들었고 콘솔 기능을 테스트하는 마지막 문제를 어떻게 해결했는지 알았습니다.

대부분의 프로그래머는 매일 같은 일을하는 공장 노동자가 아닙니다. 이러한 작업은 자동화 될 수 있습니다. 아무도 또 다른 거품 정렬 구현에 대한 비용을 지불하지 않습니다. 끝났습니다.


+1 : 좋은 답변입니다. 필요하거나 유용한 기술을 배워야합니다. 새로운 기술이 중요하며 어떤 일이 일어나고 있는지 알아야합니다. 그러나 새로운 것이 우리가 배우는 것을 선택하는 유일한 기준이되어서는 안됩니다. 또한 C가 프로그래밍 요구에 적합하면 오랫동안 사용되어 왔더라도 작업하기에 좋은 언어가 될 수 있음에 동의합니다.
Giorgio

이것은 또한 새로운 기술이 종종 기존의 오래된 기술보다 더 많은 계층이라는 것을 지적합니다. VM은 무엇으로 구현 되었습니까? C 또는 C ++.
dbracey

의존성 주입은 아주 오래된 아이디어의 새로운 이름 일뿐입니다.
MarkJ

6

나는 당신 이 거기에있는 많은 것을 무시할 있다고 말하고 싶습니다 . 그것의 대부분은 과대 광고와 오래된 기술의 새로운 이름입니다. 진짜 진보는 곧하지 않아도 새로운 것들로 대체됩니다 정말 오래된 타이머가 새를 이해하기 이전 내용을 이해한다고 말에도 불구하고, 기존의 것들에 따라 달라집니다. 당신이 10 년 동안 밭을 떠난 경우, 당신이 돌아 왔을 때 당신은 단지 2 년 늦었습니다.

즉, 안보 말했다 진짜 까다로운 일이 될 수있는 새로운 technogy을. 나는 OOP를 놓치지 않았기 때문에 기쁘지만 처음에는 몇 가지 버즈 단어처럼 보였습니다. 그리고 모든 사람이 3 년 안에 잊어 버린 경우에도 종종 최신 기술을 사용하여 업무를 수행해야합니다.

소프트웨어 기술의 과장과 혼동은 우리가 매일 다루어야 할 변화를 배가시킵니다. 그러나 전자 기술이 실제로 되어 빠른 속도로 발전하고 함께 소프트웨어를 밀어. 많은있어 실제 거기 변경. 우리는 여전히 자동차를 운전하고 비행기를 타며 1965 년에 사용했던 것과 같은 차량으로 우주로갑니다. 그러나 1995 년의 전자 하드웨어는 절망적으로 쓸모가 없습니다.

따라서 귀하의 질문에 대한 깊은 대답은 전기를 사용하는 과학자와 엔지니어가 매우 바빴다는 것입니다. 하드웨어를 활용하려면 소프트웨어를 발전시켜야합니다. 더 나쁘거나 (더 나은?), 나는 소프트웨어가 하드웨어에 뒤쳐져 있다고 생각합니다. 하드웨어 사람들이 모두 내일 은퇴하면 소프트웨어는 최소한 향후 20 년 동안 격렬하게 진화 할 것입니다.

업무를 수행하기 위해 새로운 기술이 필요한 경우이를 배워야합니다. 지금도 20 년이 지난 지금도 새로운 기술 일 가능성이 있다면 계속 지켜봐야합니다. 그리고 모든 사람이 죽는 기술 20 개를 보면 꽤 잘하고 있습니다. 그리고 당신은 실제로 다른 모든 것을 무시할 수 있습니다. 2020 년대의 모든 소프트웨어의 기초가되는 명백한 연기를 제외하고.


+1 : 과대 광고에 대해 동의합니다. 많은 혁신은 (불행히도) 과대 광고이며 우리는 매우 신중하게 시간을 보내는 새로운 기술을 선택해야합니다. 현재의 과대 광고 중 하나는 람다 (BTW, 나는 매우 유용한 개념이라고 생각합니다) : 모든 현대 언어에는 언어가 있어야합니다 (C #, C ++, Java?) 그러나 람다는 50 년 동안 사용되어 왔으며이 언어가 처음 설계되었을 때 아무도 신경 쓰지 않았습니다. 이제 그들은 최신 과대 광고를 따르기 위해 나중에 생각할 때 추가되고 있습니다. ;-)
조르지오

@Giorgio : Java가 아니길 바랍니다. 람다는 좋은 예입니다 (일부보다 단순하고 번거롭지 않습니다). 나는 C #에서 그것들을 사용하고, 그들을 사랑하지만, 자신이 무엇인지 모르는 것을 후회할 유일한 사람은 방금 가득한 코드를 수정하라는 지시를받은 사람입니다.
RalphChapin

"Java가 아니라면 좋겠다"는 무슨 뜻입니까? 그들이 소개되지 않을까요? 나는 람다 (Scheme, Haskell에서)를 좋아하고 사용합니다 : 그들은 매우 쉬운 개념입니다. 그러나 C #, C ++ 및 Java에서는 다른 언어와는 맞지 않는 늦은 추가 기능이 있습니다. 나는 발명가들이 Lisp를 몰랐다는 것을 의심하지만 람다는이 언어에 속하지 않기로 결정했다. 이제 그들은 필수품이되었습니다. 그래서 나는 람다를 많이 좋아하지만 C #, C ++ 및 Java에서는 새로운 컴파일러, 서적 등을 판매하는 데 사용되는 과대 광고처럼 보입니다.
Giorgio

1
@Giorgio : Java는 미니멀리즘 언어입니다. 다른 사람이 작성한 것을 이해하기 위해 많은 것을 알 필요가 없습니다 (예 : 람다). 나는 그것을 좋아한다. C #은 최대 언어입니다. 모든 새로운 라인은 전에는 본 적이없는 기술을 소개 할 수 있습니다. 글을 쓰는 것은 폭발적인 일이지만 글을 읽는 사람은 적습니다. 구문상의 이유로 Java보다 C #에서 더 많은 도움을 주지만 람다는 필요하지 않습니다. 그러나 그들은 시원하고 몇 줄의 코드를 저장합니다. 다시 말해, 당신이 옳습니다. 그러나 그것은 Java가 아닌 C # 입니다. 아직.
RalphChapin

1
@iconoclast : 프로그래머로서 20 년의 경력을 쌓은 저는 저 자신을 초보자로 생각하지 않습니다. 그러나 Java가 비교적 단순하고 깨끗한 언어라는 사실은 생산성을 높여줍니다 (노력을 들이지 않고도보다 복잡한 소프트웨어를 개발할 수 있음). 간단한 언어는 초보자를위한 오해라고 생각합니다. 간단한 언어를 사용 하면 어느 정도의 경험을 가진 프로그래머 라도 개발에있어 특정 측면 (예 : 복잡한 아키텍처 관리, 리팩토링)에 더 집중할 수 있습니다. 다른 측면들 (예를 들어, 메모리 관리, 암호 구문 등).
Giorgio

3

IMHO, 당신은 균형을 찾아야합니다. 기술과 경험이 필요합니다.

전문화 된 하나 또는 두 개의 언어를 찾고,이 언어로 발전하는 프레임 워크 / 스타일 변경 사항을 최신 상태로 유지하고 기술을 최고 수준으로 유지해야합니다.

그러나이 언어가 어떻게 발전하고 소프트웨어 개발의 역학을 전체적으로 이해해야합니다. Java는 약 10 년 안에있을 것이며 Phyton은 계속 유지 될 것이며 PHP는 .NET 및 Mono로 대체 될 것입니까?

이것들은 대규모의 전략적 질문이며, 대답은 당신이 당신의 분야에서 높은 가치를 가진 전문가가 될 수있게 해줄 것이며, 약간의 백업 (1 또는 2 개 언어)을 가지고 있고 메인 플랫폼에서 언제 갈지를 알고 있습니다.

IMHO는 매일 개발되고있는 모든 현대 언어를 따르는 것이 전체 산업에서 가장 큰 문제 중 하나입니다. 우리는 전문가가 거의없는 개발되지 않은 막 다른 언어가 많으며, 시간을 낭비하는 사람들은 거의 1 개 언어로 된 실제 전문가가 아닙니다. 대부분 그들은 모든 언어를 혼합 한 코드를 작성하지만 아무 것도 제대로하지 않습니다. 동시에, 이러한 비표준 언어에 낭비되는 수년의 시간은 몇 가지 핵심 언어 프레임 워크 및 사양을 개선하는 데 사용될 수 있습니다.


2

다른 사람들이 지적했듯이, 많은 새로운 기술이 새로운 요구를 해결하기 위해 나타나므로 특정 문제를 쉽게 해결할 수 있습니다. 따라서 최신 정보를 유지하고 최소한 해당 분야에서 어떤 일이 일어나고 있는지 알고 어떤 새로운 기술이 귀하에게 적합한 지 이해해야합니다.

반면에, 때로는 특정 혁신에는 과대 광고 요소가 있다고 생각합니다. 일부 아이디어는 매우 오래되었지만 최근 몇 년 동안 만 주류가되기 위해 추진되고 있습니다. 때때로 나는 "새로운 것이 더 낫다"고 새로운 기술이 새로운 책, 새로운 프로그래밍 도구, 새로운 컴파일러, 새로운 프로그래밍 과정 또는 다른 말로해서 새로운 프로그래밍 언어 (또는 새로운 버전)가 추진된다는 인상을받습니다. 수익.

따라서 이전에 사용했던 기술에 대한 실질적인 이점을 보지 않고 새로운 기술을 배워야 할 수도 있습니다. 그렇지 않으면 기술이 구식으로 보이기 때문에 시장에서 벗어날 위험이 있습니다 . 새로운 기술의 개발에 따라 어떤 기술을 사용하여 생산성을 높이고 어떤 기술이 CV를 더보기 좋게 만드는지 이해하는 것은 사용자의 몫입니다.

결론 : 새로운 것이 든 오래된 것이 든 실제로 유용한 것을 배우려고 노력해야한다고 생각합니다.


2

"알고있는 것을 고수하는 것"은 "더 나은 것을 얻지 못한다"는 것을 의미하기 때문입니다. 모든 새로운 관행과 프레임 워크를 채택 할 필요는 없지만 최소한 대중적인 것에 대한 정보를 가지고 있어야합니다. 웹 개발에서 질문을하는 것은 면접관에게는 끔찍할 것입니다. 웹 개발자는 2000 년 이후에 새로운 학습을 중단하고 싶었던 사람들의 경력으로 가득 차 있습니다. 관심이 없다면 dev를 피하십시오. 새로운 것을 배우는 부분이 일하는 것처럼 느껴지면 시간당 $의 비율입니다.


"알고있는 것을 고수하는 것"은 "더 나은 것을 얻지 못한다"는 것을 나타 내기 때문에 : 이것을 읽는 한 가지 방법은 같은 기술을 더 오랫동안 고수함으로써 더 많은 지식을 얻고 한 기술에서 뛰어 넘는 것입니다. 2 년 또는 3 년마다 다음에 이르기까지 피상적 인 지식 만 가질 수 있습니다. 즉, 그들 중 누구에게도 친숙하지 않을 것입니다.
Giorgio

나는 약간의 분기를하지 않고 다른 언어가 실제로 어떻게 작동하는지 또는 현재 모범 사례 개념을 주시하고 사람들이 실제로 무엇을하고 있는지 탐구하는 관점에서 JavaScript를 이해하지 못합니다. 프레임 워크와 라이브러리의 후드. 새로운 아이디어에 정기적으로 노출되지 않고 개발자로 경력 수준의 속도로 개선하는 것이 실제로 가능하지 않다고 생각합니다.
Erik Reppen

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