기술적으로 능숙한 선임 소프트웨어 개발자가 지속적으로 개선하기 위해 연구 할 수있는 것은 무엇입니까?


15

10 년 이상 프로그래밍을 해왔다고 가정 해보십시오. 매우 상세한 수준의 언어는 거의 없으며 많은 언어를 알고 있습니다. 솔루션을위한 아키텍처를 설계하고 더 큰 프로젝트를 수행하고 제공했습니다. 패턴, 모범 사례, 효과적인 코딩 지침, 단위 테스트, 멀티 스레딩 등을 연구했습니다.

그리고 당신은 당신이 읽는 대부분의 책들이 100 페이지의 텍스트 당 점점 더 가치있는 정보를 제공한다는 느낌을 서서히 발전시킵니다. 그래서 그들은 감소하는 수익을 내기 시작합니다. 당신은 여전히 ​​배우지 만 더 이상 도약과 경계로 향상되지 않습니다.

이전과 비교했을 때 왜 학습이 생산성이 떨어 집니까?

그 당시에는 사고 방식을 바꾸고 새로운 것을 가르치고 나중에 현재 직업을 향상 시키거나 새로운 것을 발명 / 관리 / 구축 할 수있는 시야를 넓히는 데 사용되었습니다. 더 이상 그렇지 않은 이유는 무엇입니까?


9
자주 묻는 질문 , 당신은 다음 (프로젝트, 책, 기술, 또는 언어) 무엇을해야하는지에 대한 질문은 주제 떨어져 있습니다. 귀하의 관점을 이해할 수는 있지만 소프트웨어 개발과 관련하여 알아야 할 모든 것을 알 수는 없습니다. 당신의 문제는 당신이 지루해졌으며 아마도 지적 틀에 박힌 것입니다. 당신이 틀에 박힌 생활의 나가 고무 건에 많이 의존 하면 , 아마 다른 사람에 대한 완전히 다른 것이 될 것입니다. 그러나 여기에 답이 있습니다 : 당신의 안락 지대를 벗어나십시오 . 임베디드 시스템, 수학, 그래픽 또는 관심 분야에 대해 알아 봅니다.
Caleb

2
OP가 다음에해야 할 일에 관해서는이 질문이 제한적이라고 생각하지 않습니다. 오히려 전문가들이 연구를 진행할 수있는 일반적인 접근 방식에 관한 것입니다. 어쩌면 더 나은 표현한 될 수 있지만, "무엇을해야처럼 읽지 않습니다 내가 나에게 다음에 수행".
Frank

3
글쎄, 나는 최근에 어떤 주제가 주제에 맞지 않는지 잘 모르겠습니다. 요즘 흥미로운 토론을 찾기가 실제로 어려워지고 있습니다. 좋아, w / e, 그냥 주제를 잠그고 ...
Coder

2
질문을 편집 하여 다시 열 수 있다고 생각합니다 . 내가 알 수있는 한, "반환 감소 ... 패턴 연구, 모범 사례, 효과적인 코딩 가이드 라인, 단위 테스트, 멀티 스레딩 ..."이라는 문제는 프로그래머들에게 상당히 주제입니다.
gnat

2
다른 사람에게 주제를 가르치려고 할 때 주제에 대해 완전히 이해하게됩니다.
JeffO

답변:


23

첫째, 당신의 질문이 공식화되는 방식에도 불구하고, 특히 우리 분야에서는 그렇지 않은 새로운 연구가 당신이 그것에 대해 읽을 수있는 것보다 더 빨리 나타나는 연구의 끝이 없습니다. 말하자면, 개선하고 싶을 때 고려해야 할 다음 범주가 있습니다. 가장 큰 이익 / ROI를 위해서는 가장 약한 영역에서 무언가를 선택해야합니다.

기초 지식

프로그래밍 언어를 알고 실질적인 경험을 가지고 있음에도 불구하고, 기본 기초 문제가 불완전하게 남아있는 영역 (자체 학습)이 종종 있습니다. 데이터 구조, 알고리즘, 캐시 전략, 해시 함수 등과 같은 것들을 생각하십시오.

여기에는 컴파일러, 최적화 기술 및 유형 시스템, 범주 이론, 모나드 등 프로그래밍 언어의 기초가 포함됩니다.

몇 년 동안 대학 수준의 학위를 습득 한 것처럼 잘 배운다면,이 범주에서 이미 강할 것입니다 (물론 끝이 아니라 견실 한 기초). 그렇지 않으면,이 분야에서 몇 권의 책을 읽어보고 레퍼토리에 알지 못하는 것이 있는지 알아보십시오. 이 범주는 자신을 과대 평가하기 가장 쉬운 범주입니다.

패러다임 지식

프로그래머가 자신을 모두 알고 있다고 생각하지만 주류 패러다임 이외의 것에 대해 완전히 무지한 사람이 나타날 때 나는 항상 놀랐습니다. 객체 지향이 끝이라고 생각하면 이것이 개선의 범주입니다. 함수형 프로그래밍이 존재한다고 생각하고 논리 프로그래밍에 대해 들어 본 적이 있다고해도 여전히 좋은 선택입니다. 거기에는 더 많은 패러다임이 있으며 그들에 대해 배우는 것은 프로그래밍 세계에 대한 새로운 관점과 비슷한 것을주는 데 큰 영향을 미칩니다.

잊지 마세요 : 패러다임으로 간주 될 수있는 것에 대한 논란이 종종 있습니다 (본질 상 철학적). 이것들에 의해 추적되지 마십시오. 당신의 목표는 당신의 시야를 넓히는 것이어야하며, 다른 누군가가 X를 스스로 패러다임으로 간주하든 그렇지 않든, 이것들에 대해 배우는 것을 의미합니다.

전문가 지식

그중에서도 가장 쉽고 동시에 가장 유용하지 않습니다. 물론, 당신은 하나의 기술에 자신을 투입하고 모든 기술에 대해 알 수 있지만 가격을 지불 할 준비가되어 있어야합니다. 기술이 오래되고 속도가 빨라지면서 여기에 투자 한 시간이 몇 년 동안 무가치하다는 것을 거의 보증합니다.

또한 수익 감소의 문제가 여기에서 빛납니다. 본질적으로 무언가에 대한 전문가라는 것은 당신이 그 좁은 주제에 대해 수많은 시간을 소비해야 함을 의미하므로, 정의에 따라 새로운 것을 배우는 데 오랜 시간이 걸리고 새로운 것은 작은 퍼즐 조각이 될 것입니다 다른 사람의 관점을 바꾸지 않을 것입니다.

도메인 지식

이 작업의 도메인, 또는 단순히 개인적인 관심 기반으로하지만, 컴퓨터 과학 분야의 전문가 인 때문에 그것을 수 특정 도메인 것은 매우 가치 있고 보람입니다. 컴퓨터 그래픽이나 AI와 같은 CS의 측면에 대해서는 이야기하고 있지 않습니다. 대신 컴퓨터는 모든 사람의 삶을 사로 잡고 다른 모든 분야는 컴퓨터와 들어갈 수있는 영역에 종속됩니다.

이것은 "현장 외부"범주에 속하지만, 예리한 수학적 "외부"가 아니라 적용 분야입니다. 약을 고려하십시오 : 나는 당신에게 의사가되도록 조언하지 않습니다. 그러나 컴퓨터 과학에 대한 기존 지식을 해당 분야의 문제에 적용하기 위해 의학의 기초를 배우는 것은 실제로 가치가 있습니다. 여기에는 시각화 기술, 로봇 공학, 전문가 시스템 및 회계 / 관리를위한 단순한 데이터 관리에 이르기까지 다양합니다. 이전에이 모든 작업을 수행했지만 다른 도메인에서 수행하면 완전히 새로운 경험이 될 수 있습니다.

그러나 이것은 다른 카테고리보다 방향이 급격한 변화라는 점을 명심하십시오. 일상적인 업무에서 해당 분야에 연락이 없을 수 있으므로 떼기가 매우 어렵습니다. 심지어 작업 전환을 의미 할 수도 있습니다. 또한 새로운 도메인에 대한 일종의 인증이 필요합니다. 결국 해당 도메인에 대한 완전한 초보자이며 학제 간 연구를 졸업 한 졸업생과 경쟁해야합니다.

보충 지식

Mike Brown이 덧붙여서, 현재 어떤 직업과 함께 제공되는 지식 영역도 있지만 꼭 필요한 것은 아닙니다. 프로젝트 관리에 대해 배우기 위해 프로젝트 관리자가 될 필요는 없지만, 평소와 같이 추가 지식을 통해 상대방이 어떻게하는지에 대한 더 큰 통찰력을 얻을 수 있습니다. 소프트 스킬에 중점을두기까지 이것을 일반화 할 수도 있습니다. 다른 사람들과 실제 프로젝트를 수행 한 모든 사람들이 이것의 가치를 알고 있다고 생각합니다.


+1, 특히 "도메인 지식"의 경우-적어도 저에게는 효과가 있습니다.
Doc Brown

1
당신의 말에 100 % 동의합니다. 더 깊이있는 기초 지식에 관심을 갖고 있습니다. 내가 지금 컴파일러에 대한 과정에 등록한 효과. 당신이 다루지 않은 것은 그래픽 디자인, 프로젝트 관리 등 보충 지식으로 분류하는 것입니다.
Michael Brown

패러다임 +1-나는 ~ 10 년 동안 OOP / 프로 시저를 해왔으며 (그리고 지쳤습니다), 기능 프로그래밍을 배우기 시작했고 눈이 완전히 새로운 세계로 열렸습니다.
paul

9

소프트웨어는 항상 발전하고 있으며 지속적인 개선에 중점을두고 있습니다. 나는 당신이 어디에서 왔는지 이해하고 최근에 비슷한 느낌을 받았으며 이제는 SQL Server에서 MCSM을 추구하고 있습니다.

다음의 새로운 언어, 프레임 워크 또는 현재 "뜨거운"내용을 배우십시오. 매년 기술, 프레임 워크 또는 언어가 나오거나 중요한 질량에 도달하여 자체적으로 유행어가됩니다. 지난 몇 년 동안 node.js, Ruby, jQuery와 같은 몇 가지를 생각할 수 있습니다. 이는 다른 플랫폼에 대한 사고 방식에도 영향을 줄 수 있습니다 (예 : ROR이 Grails를 사용하여 Java에 수행 한 작업보기).

항상 개선의 여지가 있습니다. 나는 당신이 모든 것에 대해 전문가가 될 가능성이 거의 없다고 생각하고 많이 읽으며 항상 배우고 있습니다. 100 페이지 당 점점 더 적게 배우는 것에 대한 의견에 동의하지만 이는 주제 전문가 일 때 예상됩니다.

수행 할 수있는 작업과 관련하여 몇 가지 제안 사항이 있습니다.

  1. 지역 사회 변화와 사람들이 "들어가는"내용을 파악하십시오. 새로운 스택을 배우십시오. 적절한 경우 권장 스택을 충분히 확보하십시오.

  2. 이와 같은 Q & A 사이트에 참여하여 다른 사람들에게 지식을 전할 수 있습니다. 시간을내어 다른 사람들의 공헌을 읽으면 무언가를 배우게 될 것이며 최소한 다른 사람들의 관점을 보게 될 것입니다.

  3. 당신의 일과 관련이있는 취미를 선택하십시오. 크로스 오버, AI, 레고 마인드 스톰, RaspPi 등을 생각하는 취미가 많이 있습니다.

  4. 지식의 폭을 넓히려 고 노력할뿐만 아니라 깊이를 늘리십시오. 예를 들어, EF가 어떻게 작동하는지 배우면 프레임 워크를 사용하는 대신 이상한 코너 케이스를 진단 할 수 있습니다.

  5. 당신이 당신의 물건을 알고 증명하기 위해 최상위 인증을 추구

개인적으로, 나는 지금 내 마음을 여는 것이 무엇인지 말해 줄 것입니다. 나는 모든 소프트웨어 아키텍트가 알아야 할 97 가지를 읽고 있는데 부분적으로는 있지만 많은 현인 조언을 던졌습니다. 이 책은 내가 제공 한 링크에서 온라인으로 자유롭게 읽을 수 있습니다.

내가 마침내 취한 취미의 관점에서, 나는 차량 진단 (컴퓨터와 분명히)에 들어가서 내 차를 완전히 유지 관리했습니다. 나는 실제로 손으로 작업하는 시간을 정말 즐깁니다.


재밌다, 나는 97 Things;)의 저자 중 한 명을 알고있다.
Michael Brown

좋은 책입니다.
Sam

천만에요. 대단하지 않습니다.
Sam

1

특정 시점이 지나면, 새로운 지식을 즉시 익히는 데 익숙한 특정 주제에 대해 충분히 배웠습니다. 기본 분야에 대해 배울 것이 많지 않다고 느끼면 이제 기본 지식을 보완하는 보충 지식을 습득해야합니다.

저에게는 UX와 그래픽 디자인에 뛰어 들고 있습니다. 개발자가 코드의 우아한 구조뿐만 아니라 최종 사용자에게 우아한 인터페이스를 제공하는 데 도움이되기 때문입니다.

접근 할 수있는 다른 주제로는 프로젝트 관리, 비즈니스 분석, 시스템 관리 및 소프트웨어 프로세스 개선이 있습니다. 자신이 특정 도메인에서 일하는 것을 발견하면 해당 도메인을 더 깊이 파고 드는 것이 좋습니다. 예를 들어, 저는 최근 금융 서비스 분야에서 많은 일을 해왔습니다. 나는 재무 모델링과 관련하여 Coursera의 코스에 등록하여 고객과의 용어에 대해 이야기하는 데 도움을줍니다.

항상 배워야 할 것이 많으며 상자 밖에서 생각하면됩니다.


0

이 질문에는 두 가지 부분이 있습니다. 왜 배우기가 더 어려우며 무엇을 할 수 있습니까?

첫 번째 부분은 매우 간단합니다. 고급 주제는 더 어렵습니다. 프로그래밍 방법을 배우는 것만 큼 어렵지만, 프로그램을 잘 디자인하는 방법을 배우는 것은 훨씬 어렵고, 대규모 응용 프로그램을 디자인하는 방법을 배우는 것은 더 어렵습니다. 중요한 주제는 고급 주제가 더 어렵거나 그렇지 않으면 진행되지 않는다는 것입니다. 그것들을 배우는 데 더 많은 시간을 할애해야합니다. 그들을 익히기 위해 연습하는 더 많은 시간.

할 수있는 일에 대해서는 선임 소프트웨어 엔지니어가되는 기술적 측면에 초점을 둔 것 같습니다. 언어와 프레임 워크를 배우는 것보다 팀이 소프트웨어를 만드는 데 도움이되는 많은 일을 할 수 있습니다. 다른 개발자 멘토링, 요구 사항 협상, 프로젝트 관리, 프로그램 디자인, 비전 전달, 팀 규범 구현과 같은 부드러운 기술 ... 개발자 이 여러분뿐만 아니라 소프트웨어를 효과적으로 만드는 데 필요한 모든 중요한 사항 .


-3

Lambda The Ultimate 사이트를 방문 할 때마다 컴퓨터 과학 분야의 모든 것을 알고 있다고 생각하지 않습니다.

LtU는 패러다임과 이론 지식을 익힐 수있는 좋은 출발점을 제공 할 것입니다.

"알수록 알수록, 알지 못한다."


1
"왜 이전보다 학습이 덜 생산적이 되는가?"라는 질문에 어떻게 대답 할 수 있습니까?
gnat

내가 거기에 갈 때, 배워야 할 새로운 것의 90 %와 같은 기사가 있기 때문입니다. 이것은 OP가 불평하는 바입니다. 자신의 경우 너무 적은 라인 판독 횟수에 의해 배운 것들의 비율. 이 사이트도 모르십니까?
Stephane Rolland

@gnat, 그리고 당신 은 "기술적으로 유능한 선임 소프트웨어 개발자가 계속 개선하기 위해 무엇을 연구 할 수 있는가?"
Stephane Rolland

제목 뒤에 질문 내용을 읽었습니까?
gnat

@gnat 예, 물론 그의 질문을 읽었습니다. OP가 왜 그런지 물어 보면 오히려 성명서 입니다. 예, 읽었습니다. 나는 웃었다. 나는 반복한다 "알수록 알수록, 알지 못한다."
Stephane Rolland
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.