좋은 개발자가되는 법 배우기 : 어떤 부분을 건너 뛸 수 있습니까? [닫은]


31

나는 내년이 시점까지 괜찮은 개발자가 되겠다는 목표를 세웠다. 이것은 개발 '라이프 사이클', 내 벨트 아래에 있는 몇 가지 좋은 앱 / 사이트 / 웹 응용 프로그램 에 대한 완전한 경험을 의미 하며, 가장 중요한 것은 이미 알아야 할 몇 가지 사항에 의해 몇 시간 동안 부딪치지 않고 꾸준한 속도로 작업 할 수 있다는 것입니다 기술.

나는 처음부터 시작하지 않습니다. html / css, SQL, javascript, python 및 VB.net을 많이 작성했으며 C 및 Java와 같은 다른 언어를 연구했습니다. OOP, 디자인 패턴, TDD, 복잡성, 전산 언어학, 포인터 / 참조, 기능 프로그래밍 및 기타 학문적 / 이론적 문제 에 대해 알고 있습니다. 그냥 내가 정말 한 말할 수 없습니다입니다 수행 아직이 일을.

그래서 나는 속히 일어나고 싶으며, 나중까지 어떤 것들을 남길 수 있는지 알고 싶다. 예를 들어, 알고리즘과 그 뒤의 수학을 공부하는 것은 흥미롭고 모든 것이지만, 지금까지 가장 기본적인 중첩 루프 이외의 것을 작성할 필요는 없었습니다. 낮은 수준의 운영에 대한 명확한 그림을 갖기 위해 의회를 조사하는 것은 멋지지만 ... 일상 업무에 거의 침해가되지 않는다고 생각합니다. 반면에, 기능적 프로그래밍 언어를 살펴보면 더 이해하기 쉽고 숨겨진 실패에 덜 취약한 프로그램을 작성하는 데 도움이 될 수 있습니다 (가장 큰 어려움을 겪고있는 것은 앱의 복잡성이이를 이해하는 능력을 초과하는 경우입니다) 예를 들어 AJAX로 데이터를 시작해야 할 때까지 데이터를 전달하는 것이 좋았습니다.

저는 기본 능력을 가진 프로그래머입니다. 개발에 어떤 기술을 집중해야합니까?

(또한 내 유닉스 기술은 매우 약하고 Windows 구성에 대한 지식도 있습니다.


41
당신은 당신이 자고있는 부분을 건너 뛸 수 있습니다 :-)
Jesse McCulloch

17
이상한 질문입니다. 학습을 건너 뛰시겠습니까? 계산하지 않습니다. 다음과 같이 인용합니다.“목적지가 아닌 여정에 중점을 둡니다. 기쁨은 활동을 끝내는 것이 아니라 그것을하는 데 있습니다.”
Maglob

5
나는 건너 뛰었다 고 말하고 나중에 돌아왔다 ( '나중에 떠나십시오'). 나는이 모든 것들을 부인하지는 않을 것입니다.
Andrew M

13
한가지는 개발자로 기억 : 당신이 "생략하고 나중에 다시 와서"항목을 넣어 그 목록은 항상 ... 길을 잃을 것
Wonko에게 제정신

8
게으르지 마십시오. 학습을 위해 모든 것을 배우십시오.
DexterW

답변:


12

이것들은 내가 한 일이 아니라 내가 생각한 것에 근거한 제안입니다.

  1. 새로운 과장된 기술은 대부분 실패 할 것이므로 생략하십시오. 스테이크 또는 사업 계획이 있지만 항상 옵트 아웃 (대체 기술) 전략이있는 사람들은 예외로 삼으십시오.
  2. 모든 프로그래밍 언어 및 라이브러리에서 전문가가되는 것을 건너 뛰십시오. 상대적으로 적은 (7) 프로그래밍 언어와 라이브러리에 대해 전문가가 되려고 노력하십시오. 즉, 다른 프로그래밍 언어의 뉘앙스를 이해하려는 기회를 놓치지 마십시오. 새로운 언어와 표준 라이브러리에 능숙 해지는 데 약 2 개월이 걸립니다.
  3. 해결 방법이있을 때마다 단일 플랫폼 기술을 건너 뛰십시오.
  4. MS Windows를 건너 뜁니다. 악의가 너무 많습니다.
  5. 전문가가되는 것을 건너 뛰지 만 다른 사람들이 자신의 생각을 선택적으로 허용 할 수 있습니다.
  6. 가능하면 회사 부두 ( "사용자 중심 엔터프라이즈 구성 요소 아키텍처")를 건너 뜁니다. 그것은 아무데도 이어지지 않습니다.
  7. C ++을 건너 뛰고 (다른 사람들이 처리하도록) Python 바인딩을 기다립니다.

실제로 배우는 능력을 신뢰하면 무엇이든 건너 뛸 수 있습니다. 나는 당신이 알고 싶은 것이 다음과 같은 질문으로 더 잘 제공되었을 것이라고 생각합니다.

  • 내가 아는 , 나는 부족하고있어 . 지금부터 1 년 이내에 무엇을 배워야합니까?
  • 나는 돈을 잘받는 프로젝트를 좋아하지만 내가 정말 좋아하는 것은 그런 것 입니다. 1 년 안에 무엇을 배우는 것이 좋을까요?

컴퓨팅은 컴퓨팅 자체에 대해서는 거의 없지만 더 많은 인간의 노력 분야에 적용하는 것이 이론적 인 물리학, 생태계 보존 또는 매트릭스의 사진 효과 등 모든 분야에 대해 잘 알고 있음을 기억하십시오 .

마지막으로 디자인, 추상화, 알고리즘 및 복잡성에 대해 배우십시오. 저를 가르쳐 준 프로그래머들과 제가 존경하는 프로그래머들은 여러분에게 감사하고 감사 할 것입니다. 공부할 시간이 있다면 Code Complete 의 첫 번째 버전을 읽는 것이 좋습니다 .


감사. 이것은 아마도 지금까지 내가 가장 좋아하는 대답이거나 적어도 내가 생각했던 것에 가장 가까운 대답 일 것입니다. 코드 완성을 실제로 읽었습니다. 훌륭한 책입니다. 제가 오기 전에 많은 장애물을 피하는 데 도움이 된 것처럼 느껴졌습니다.
앤드류 M

@Andrew W. 내가 만든 파인트 중 일부는 "뺨의 혀" 입니다. 이 사이트의 형제 인 stackoverflow.com 은 유연하고 구조화되지 않은 방식으로 새로운 내용을 배울 수있는 좋은 장소입니다. 또한 개발자가 실제로 작업하는 것에 대한 좋은 아이디어를 제공합니다.
Apalala

"6. 가능하면 회사 부두를 건너 뛰십시오 ("사용자 중심 엔터프라이즈 구성 요소 아키텍처 "). 어떻게 정의 하시겠습니까?" 사용자 중심의 엔터프라이즈 구성 요소 아키텍처 란 무엇입니까? N 계층 개발? 디자인 패턴, 다른 것?
Bob

@Bob 근본적인 기업 유행은 수십 년 동안 새로운 기술이나 방법론으로 프로그래머가 아닌 사람들이 작업 프로그램을 작성할 수있게 해 왔습니다. CASE, UML- 코드 및 엔터프라이즈 아키텍처 프레임 워크 재발 : MDA는 컴퓨터이며 프로세스 다이어그램을 만들고 소프트웨어를 만듭니다.
Apalala

+1. 나는 "기업 부두교를 건너 뛰고"과장된 기술을 건너 뛰는 것을 좋아합니다. 파이썬과 같은 멋진 멋진 것들조차도 여전히 C & C ++로 작성되었습니다. 흠 ... 왜 그런지 궁금합니다.
riwalk

35

애완 동물 응용 프로그램을 선택하십시오. 이것은 매우 간단하게 시작할 수 있지만 더 깊이 파고 들수록 다소 복잡합니다. 또한 많은 시간을 할애하기 때문에 관심있는 것이어야합니다. 또한 무언가를하는지 확인하십시오. 지금 프레임 워크 나 웹 서비스를 작성하려고하지 마십시오. 일반적인 사용자 중심 앱입니다.

git, mercurial 또는 bazaar를 다운로드하고 저장소를 만드는 방법을 배우십시오 (죽은 간단합니다).

이제 기술을 최대한 활용하여 애완 동물 프로젝트를 구현하십시오. 자신이 마감일을 지킬 수 있도록 마감일을 정하십시오. 변경 사항을 추적하기 위해 작성한 소스 제어 저장소를 사용하십시오. 가지 등을 걱정하지 말고 실수에서 벗어날 수 있는지 확인하십시오.

앱 작성이 끝나면 레이블을 지정하십시오. 그것이 당신의 V1입니다. Michael Feathers의 레거시 코드 , Bob Martin의 애자일 소프트웨어 개발 원칙, 패턴 및 사례깨끗한 코드 , Andrew Hunt 및 David Thomas 의 실용 프로그래머를 효과적으로 활용하십시오 . 어떤 순서로든 읽을 수 있고, 그들 사이를 뛰어 다니는 것도 가능합니다. 많은 아이디어가 반복되지만 다른 관점에서 제시되기 때문에 이해력을 강화할 것입니다. (아마도 참조를 위해 GoF 디자인 패턴 을 선택하고 싶을 것입니다 )

책을 읽을 때 배우고있는 것을 적용하여 프로젝트를 개선하십시오. 소스 컨트롤을 변경 내용의 저널로 사용하십시오.

올바르게 수행하면 리팩토링, 테스트 중심 디자인, 기존 코드 개선, 디자인 패턴을 적용하는 방법 (언제)과 같은 여러 가지 훌륭한 기술을 배웠어야합니다.

이상적으로는 진행 상황을 측정하는 데 도움이되는 멘토가 있어야합니다. 관심이 있으시면 저에게 연락하십시오 (kharasoft dot net의 firstinitiallastname). 나는 계획을 세우고 검토를 도울 것입니다.

경력을 쌓기위한 이니셔티브를 축하합니다. 많은 보상이 올 것입니다.


고마워, 마이크 현재 (다음 몇 달) MSc 소프트웨어 프로젝트를 마무리하고 있지만 그 후 여가 시간에는 여러 가지 일을하고 싶었습니다. 하나는 수업 중 하나를 위해 부분적으로 개발 한 비즈니스를위한 간단한 팀 동기 부여 앱입니다. 내 애완 동물 프로젝트로 선택하고, UI를 개선하고, 새로운 기능을 추가하고, 동시성 / 다중 인스턴스, 웹으로의 포트 등의 것을 탐구 할 수있는 것입니다. 때가되면 제안을 받겠습니다 그리고 그 책들은 지금 나의 독서 목록에 있습니다.
Andrew M

1
Martin Fowler & Kent Beck의 "리팩토링 : 기존 코드의 디자인 개선"도 제안합니다.
Oscar Mederos

1
나는 이미 그 것을 이미 가지고 있지만 아직 읽지 않았습니다. 글래스고 대학교 (하스켈의 집 ...) 옆에있는 지역 자선 서점을 자주 방문하여 '클래식'을 선택했습니다. 지금까지 Code Complete 2, Refactoring, Transcending CSS, Zen of CSS Design, Javascript The Definitive Guide, K & R C, GOF, ASP.NET 웹 사이트 프로그래밍, Java Collections, 데이터베이스 시스템 (Connelly / Begg), 유닉스에 대한 학생 안내서, 루비 프로그래밍, Haskell을 사용한 Func Prog 소개, UML Demystified, Java 2 시작하기 나는 하루 종일 읽게 될 것입니다.
Andrew M

28

좋은 개발자의 비밀을 알고 있습니까?

당신은 모든 것을 알지 못하지만 당신이 모르는 것과 필요할 때 모르는 것에 대한 자세한 정보를 찾을 수있는 곳을 알고 있습니다.

  • 뇌가 다루기에는 너무 많이 언급 한 모든 것을 아는 것이 불가능합니다.
  • 모든 것을 기억하는 것은 불가능합니다-사용하지 않은 지식은 메모리에서 지워집니다.
  • 대부분의 실제 상황에서 당신은 어쨌든 그렇게 많이 필요하지 않습니다

불가능을 달성하려고 노력하면 불안, 불면증, 자신감이 상실 될뿐입니다.


나는 '모두'를 알고 싶지는 않지만 지금은 소프트웨어 팀이 나를 고용하는 것이 도박이라고 생각합니다. 어쩌면 내가 갔을 때 모든 것을 집어 들고 곧 생산적인 팀원이 될 수 있었을 지 모르지만, 학습량이 너무 많을 수도 있습니다. 나는 사람들에게 도박을하도록 요구하는 것을 좋아하지 않습니다. 전문 개발자가 도달 할 수있는 안락한 영역이 있어야합니다. 그래도 여전히 물건을 찾아보고 새로운 트릭을 배워야하지만 대부분은 일을 마칩니다. 핵심 스킬 셋 (더 이상 의식적으로 인식하지 못할 수도 있음) 그것이 내가하려는 곳입니다.
Andrew M

1
@Andrew, 주니어 프로그래머는지도가 필요합니다. 학습에는 실습 경험이 필요합니다.

그래, 당신 말이 맞을 수도 있지만 직업 광고는 그런 말을하지 않습니다. 잘만되면 나는 그들을 우회하고 네트워크 / 팀 관리자와 직접 대화 할 수 있습니다. 그러나 내가 지금 가지고있는 기술을 가진 직업을 구할 수없는 오프 기회에, 난 그냥가되고 싶어요 빌어 먹을 있는지 지금부터 일년에 같은 문제가 실 거예요.
Andrew M

10

전문화하려는 대상에 따라 개발자마다 답변이 다를 것이라고 생각합니다. 본인에게 적합한 답변을 결정하려면 다음 알고리즘을 권장합니다.

  1. 배우고 싶은 기술을 사용하는 간단한 프로젝트를 선택하십시오.

  2. 그 기술에 중점을 두어 구현하십시오.

  3. 그 프로젝트가 어떻게 나왔는지, 그리고 마음에 들지 않는 것에 대해 당신이 좋아하는 것을 주목하십시오.

  4. 프로젝트가 어떻게 진행되는지에 대해 당신이 좋아하는 것들에 대해, "이것이 내가 즐길 수있는 것으로 내가 전문화 할 수 있다고 생각 하는가, 아니면 내가 전문화하고 즐길 수있는 것과 관련이 있는가?"
    에이. 그렇다면이 전문 분야와 관련된 다른 기술을 생각하고 적어 두십시오.
    비. 그렇지 않은 경우 뒷면에 자신을 두드리고 자신이 잘하는 것으로 기록한 다음 계속 진행하십시오.

  5. 프로젝트가 어떻게 진행되었는지에 대해 마음에 들지 않는 점에 대해 스스로에게 물어보십시오. "이것은 내가 어떻게해야하는지 (또는 어떻게해야하는지 알고 싶은가) 아니면 이것이 내가 할 수 있고 싶은 발전의 측면인가? 다른 사람들에게 일반적으로 떠나는가? "
    에이. 원하는 방법을 알고 있거나해야한다고 생각되면 4a 단계에서 시작한 목록에 추가하십시오. 비. 만약 당신이 다른 사람들에게 그러한 측면을 남길 수 있다고 생각한다면, 인간으로서 당신의 한계를 넘어서 우울한 한숨을 내쉬고, 그것을 약점으로 기록하고, 계속하십시오.

  6. 전문화 할 수있는 것들과 4a와 5a에서 알아야 할 것들 중에서 하나의 기술을 선택하십시오. 프로그래밍을 원하는 것에 더 가깝게 만들기 위해 개발에 가장 중요하다고 생각하는 것을 선택하십시오.

  7. 그 기술을 사용하여 간단한 프로젝트를 브레인 스토밍하십시오. 하나의 돌로 2 마리의 새를 죽일 수 있도록 목록에서 높은 다른 기술을 연습 할 수있는 프로젝트를 선택하십시오 (n / 2는 n과 같은 복잡성이지만 여전히이 방법으로 더 빠릅니다).

  8. 이 프로젝트를 사용하여 2 단계로 돌아가십시오.

남은 생애 동안, 또는 더 이상 좋은 프로그래머가되고 싶지 않을 때까지이 루프를 반복하십시오 (배고픈 고아에게 먹이를주기 위해 코딩을 끝내고 싶을 때는 멈추지 않습니다!).

나는 테스트 및 n 계층 웹 응용 프로그램을 전문으로하고 있습니다. 다음 프로젝트는 TDD와 아마도 ASP .NET MVC 2를 연습 할 것입니다. TDD는 테스트에서 나의 힘을 더 높이는 것입니다. 저는 SDET입니다. 따라서 TDD는 단위 테스트에 대한 통찰력을 줄 것입니다. MVC는 프론트 엔드 디자인의 약점을 돕는 것입니다. 저의 목록에는 성능 테스트, 웹 보안, 웹 디자이너와 협력하여 좋은 웹 사이트를 만드는 것 등이 포함됩니다.

내가 처음에 받았으며 매우 유용하다는 또 다른 조언은 다음과 같습니다. 전문 분야는 광범위하거나 심할 수 있습니다. 다시 말해서, 모든 것을 조금씩 다루는 것은 일종의 전문 분야입니다. 전문화되고 싶은 것을 해결하려고 할 때 명심하십시오.

잘라서 말린 것을 원한다면 죄송합니다. 나는 그 질문에 그런 답이 있다고 생각하지 않습니다.


6

나는 몇 년 동안 프로그래밍을 해왔다. (7 살 때부터-나는 30 대 후반이다.)

내가 당신의 입장에 있다면 내가 강력하게 제안 할 것이지만 대부분의 다른 답변에서 볼 수없는 것은 정의 된 프로젝트에서 함께 일할 다른 프로그래머를 찾는 것입니다.

그렇게하면 Agile 프로그래밍-SCRUM 등에 대해 읽고 민첩하고 테스트 방식으로 작업하십시오. 함께 작업하되 대부분의 코드를 작성하지 않도록하십시오. 실제로 개발자 쌍으로 작업하십시오.

그리고 자신만의 모든 버전을 작성하는 것이 유익 할 수 있습니다. 내가 아는 최고의 개발자는 자신이해야 할 일에 대한 코드 제외를 피하는 데 능숙합니다. 즉, 프로젝트에서 고유 한 것의 핵심입니다.

나머지 시간에는 코드를 광범위하게 재사용합니다. API를 호출하고, 오픈 소스 프로젝트를 사용하고 (적절한 경우)이를 위해 바퀴 (또는 데이터 액세스 계층 등)를 재발 명하지 마십시오.

그런 다음 특히 오픈 소스 프로젝트의 경우 코드를 읽고, 정리하고, 버그를 수정하고, 확장 프로그램을 제공하는 등 프로젝트에 기여할 것입니다.

실제 세계 개발은 일반적으로 팀의 일원으로 일하는 것에 관한 것이므로 그렇게하는 것이 좋습니다. 특정 프로젝트를 수행하려는 다른 프로그래머를 모르는 경우 1000 대 이상의 오픈 소스 프로젝트를 살펴보고 적극적으로 참여할 하나 이상의 프로젝트를 선택하는 것이 좋습니다. 개인적인 "가려움증"을 긁으십시오. 여러분이 기여할 수있는 프로젝트를 찾고 다른 개발자와 함께 작업 할 가능성이 높습니다.

그리고 개인적으로 나는 "내가 할 수있는 것 건너 뛰기"에 대한 당신의 태도가 나쁜 것이라고 충고합니다. 개발자를 고용 할 때는 모든 것을 스스로하지 않는 개발자를 원합니다. 첫 번째 본능이 스스로 작성하는 것이 아니라 첫 번째 본능이있는 개발자는 코드를 작성하지 않고 (필요한 최소 코드 작성을 통해) 비즈니스 요구와 요구 사항을 달성 할 수있는 방법을 보는 것이 좋습니다.

또한 비즈니스 요구 사항을 테스트하고 유지하는 동시에 모든 테스트에서 실제로 코드를 다시 작성하거나 직접 작성해야하는 경우가 있습니다 (때때로 프로젝트를 개선하기 위해이 코드를 다시 제공 할 수 있음).


+1 좋은 생각-다른 사람들과 함께 일한 경험이 매우 중요합니다.
Michael K

+1 개발자가 말하는 것을 들으려면 아주 드문 일이지만 훌륭한 팀을 운영해야합니다. 코드가 먼저 필요한지 확인하십시오. 또한 팀 프로그래밍에도 필수적입니다.
Orbling

고마워 섀넌 나는 더 많은 사람들이 특정한 비 필수적인 것들을 건너 뛰는 아이디어에 동의하지 않는다는 것에 약간 놀랐다. 사실 저는 지금 너무 많은 순수 주의자 / 완벽 주의자라고 생각합니다. 항상 '가장 좋은 방법'을 배우려고 노력합니다. 때로는 갇히고 수십 명 정도의 소멸 여부에 신경 쓰지 않는 사람들을 부러워합니다. 시스템 작동 방식을 부분적으로 이해하거나 부분적으로 만 이해합니다. 물론 가능할 때마다 오픈 소스 라이브러리를 활용하는 것이 좋습니다.
Andrew M

5

그것은 필요할 때 물건을 읽고 배우는 문제입니다.

어딘가에 갇히거나 "내 솔루션에 무언가 빠진 것"이라는 느낌이들 경우, 더 많은 것을 배우기 위해 시간을 보내야합니다!


나는 항상 그런 느낌을받습니다. 좋은 대답입니다.
JeffO

5

건너 뛸 비트를 찾는 것이 최선의 태도는 아닙니다.

즉, 원하는 개발자가 될 부분에 대한 아이디어를 얻으면 특정 영역에 집중하는 것을 목표로 할 수 있습니다.

예를 들어, 웹 개발, 윈도우 개발에 해를 끼칠 수 있습니다.

나는 그것이 더 유용하게 모든 거래의 잭이되고 싶어요.


3

1 년 안에, 특히 가파른 학습 곡선에서 "좋은 앱 / 사이트 / 웹앱"이 완성되지 않을 것입니다. 배우는 유일한 것은 소진입니다.

대신 관심있는 것에 중점을두고이를 학습 도구로 사용하십시오. 프로덕션 품질에 대해서는 걱정하지 않아도되지만 계속 돌아올 수있는 샌드 박스로 사용하십시오.

예를 들어 판타지 야구에 관심이 있습니다. 수년 동안, 나는 화면 스크래핑 통계 수집 로봇에서 HTML 전용 웹 사이트, 확장 가능한 SQL Server 데이터베이스가있는 전체 웹 응용 프로그램에 이르기까지 그와 관련된 많은 것을 개발했습니다 ... 다음 애완 동물 프로젝트는 사람들이 가상 테이블 주위에 앉아 초안을 할 수있는 실시간 Silverlight 앱일 수 있습니다.

이런 것들 중 어느 것도 내 세상 밖에서 유용하지 않습니다. 그러나 그들 각각은 내가 더 나은 프로그래머가되고 내 안락 지대 밖에서 기술을 배우는 데 도움이되었습니다.


3

프로그래밍을 시작할 언어에 대해 걱정하지 마십시오.
하나를 선택하고 가십시오.
API에 대한 정보를 배우고 시간을 보내십시오.

이유는 다음과 같습니다.

XUL, Eclipse의 SWT 또는 wxWindows 중 어느 것이 더 낫습니까? 모르겠어요 그것들은 내가 실제로 그들을 평가하고 말할 수없는 거대한 세상입니다. 튜토리얼을 읽는 것만으로는 충분하지 않습니다. 1 ~ 2 년 동안 땀을 흘리거나 피를 흘리기 만하면 충분하다는 사실을 알거나 아무리 노력해도 UI 맛을 실제 음식처럼 만들 수 없다는 것을 깨닫게됩니다.

Joel Spolsky, "프로그래밍에 관한 Palmerston" http://www.joelonsoftware.com/articles/LordPalmerston.html


3

나는 "이미 알고 있어야한다"증후군에 대해 너무 걱정하지 않을 것이다. 이 작업 라인에서는 항상 새로운 것을 배우고 있습니다. 일 년에 한두 번 내 상사는 나에게 통신 프로토콜이나 집적 회로 등을위한 200-300 페이지 문서에 대한 링크를 보내며 그 내용에 대해 상주 전문가가되도록 배정합니다. 아무도 당신이 "완료"한 학습에 도달 할 것으로 기대하지 않습니다.

개발 프로세스가 진행되는 한 그대로 진행하십시오. 한두 번 잘못 할 때까지 가장 유용한 것이 무엇인지 실제로 알 수 없습니다. 다음에 성능을 평가하고 개선하십시오.

예를 들어 작년에 빌드 불안정성에 많은 문제가있었습니다. 소스 컨트롤에서 업데이트하는 것이 무서웠습니다. 왜냐하면 매번 다른 시간처럼 보였기 때문에 모든 것을 다시 컴파일하는 데 반나절을 소비했습니다. 그러나 업데이트 사이에 너무 오래 기다렸다면 결국 병합이 끔찍할 것입니다. 또한 때때로 업데이트를 연기 할 수없는 긴급한 버그가 발생하여 새로운 기능에 대해 이미 변경 한 부분 변경 사항을 추적하기가 어려웠습니다.

글쎄, 우리 회사는 일반적인 규모로 그 문제를 해결하기 위해 노력하고 있지만 그 동안 스스로 사용할 수있는 것이 필요했습니다. 빌드 안정성에 대한 몇 가지 연구를 수행하고 분산 버전 제어를 발견하고 일부 브랜칭 모델을 실험했으며 이제 로컬로 여러 시장 지점과 회사의 중앙 집중식 소스 제어를 사용하는 매우 작동 가능한 하이브리드 시스템을 보유하고 있습니다.

내 요점은 당신이 2 년 전에 나에게 소프트웨어 툴과 프로세스에 대해 다음에 배워야 할 것을 물었다면, 당신에게 말할 수 없었습니다. 유사한 작업 환경이없는 경우 하이브리드 소스 제어는 별다른 이점없이 추가 복잡성이지만 개인의 생산성과 정신력을 크게 향상시키는 데 도움이되었습니다.

나를 위해 다음은 내 추정 기술에 노력하고 있습니다,하지만 난 그 후 올 것이다 무슨 생각이 없다, 나는 확실히 인터넷에서 어떤 낯선 사람이 지금부터 가장 유용한 해 찾는 무슨 일인지 모른다. 당신 만이 대답 할 수 있습니다.


2

여기 두 가지 점을 공유하고 싶습니다.

  1. 알고리즘 측면에서 생각하면 항상 도움이 될 것입니다. 처음 시작할 때는 항상 실제 시나리오와 그 뒤에있는 현재 알고리즘에 대해 생각하고 항상 최적화하려고합니다.
  2. 모든 것이 학습과 이해를 멈추지 않습니다. 새로운 것들 / 기술, 컴퓨터에는 같은 것이 없습니다. GURU항상 학습을 계속해야하며이 사실을 미리 받아들이고 학습을 계속해야합니다.

2

당신이 그것을 고수 하고 잘하는 법을 배우는 한, 당신이하는 일은 중요하지 않습니다 .

게시 한 모든 아이디어는 알아두면 좋을 것이며 도움이 될 것입니다. 어느 것이 가장 관심이 있습니까? 유닉스 기술이 약하다고 언급했습니다. 컴퓨터에 리눅스를 설치하는 것을 고려 했습니까? C를 아는 것은 이미 도움이 될 것입니다. 새로운 언어를 배우는 데 따른 스트레스를받지 않으면 서 Unix 시스템 프로그래밍에 익숙해 질 수 있습니다. 또한 관심이 있다면 장치 드라이버에 대해 배울 수있는 기회가 될 수도 있습니다.

개발자 교육의 어느 시점에서 학습 어셈블리 및 기능적 원칙을 적극 권장합니다. 둘 다 Java 프로그래머로서의 "정상적인"역할에서 나에게 매우 유용한 것으로 판명되었습니다. 나는 Lisp와 Prolog를 배웠다. 개인적으로 나는 Lisp을 선호하지만 그것은 의견의 문제입니다. 어셈블리는 컴퓨터가 프로그램을 어떻게 보는지에 대해 생각하도록 가르치며, 모든 프로그래머가 배우는 것이 중요하다고 생각합니다. 함수형 프로그래밍은 더 결정적으로 생각하도록 가르쳐줍니다. 필자의 경우 더 테스트 가능한 코드를 작성하는 데 도움이되었으며 스레드 안전합니다.

따라서 좋아하는 것을 고르고 몇 개월을 함께 보내십시오. 당신은 그것을 위해 더 나을 것이고, 그것은 당신의 자기 교육의 다음 프로젝트를위한 디딤돌이 될 수 있습니다. 네, 무엇을 하든지 학습을 중단 하지 마십시오 . 두 번째로, 당신은 정체하기 시작합니다.


사실 나는 유닉스 / 리눅스를 시도 할 목적으로 오래된 컴퓨터를 가지고 있었다. 우분투가 이미 켜져 있었지만 xorg.conf 파일을 편집하거나 그래픽 카드가 작동하도록 뭔가 좋은 '재미'가있었습니다. 나는 그와 같은 일을하면 지식이 확장됩니다. 그러나 시간이 오래 걸리고, 실제로 원하는 것은 내년까지 일반적인 소프트웨어 / 웹 개발을위한 실무 후보가되는 것입니다. Google에서 일자리를 구하는 것이 아니라 고용주를위한 '안전한 내기'가되기 위해서입니다. 저는 더 이상 17 세가 아니고 25 세입니다. 우선 순위를 정하고 최대한 빨리 경력을 쌓고 싶습니다.
Andrew M

조언 해 주셔서 감사합니다. 웹 응용 프로그램 및 웹 디자인과 같은 가장 관심있는 부분을 물었습니다. 내 능력으로 판단 할 때, 내 틈새 시장은 아마도 미학이 중요하고 기술적 측면이 너무 하드 하지 않은 작업을 수행하고있을 것입니다 . WYSIWYG 도구를 사용하는 웹 디자이너는 프로그래밍을 통해 경쟁 우위를 확보 할 수 있지만 전문가 프로그래머는 때로는 나쁘지 않은 디자인 감각 / 스타일의 터치가 부족합니다.
Andrew M

0

1 년 안에 괜찮은 개발자가 되려고 노력하지 마십시오. 10 년 동안 좋은 개발자가되는 법을 배우십시오.

링크 된 기사에서 :

핵심은 심의적인 실천입니다. 반복해서하는 것이 아니라 현재의 능력을 넘어서고, 시도하고, 수행하는 동안과 수행 한 후에 성과를 분석하고, 실수를 수정하는 것만으로도 자신에게 도전합니다. 그런 다음 반복하십시오. 그리고 다시 반복하십시오. 진정한 지름길은없는 것 같습니다. 4 살 때 뮤지컬 신동 자였던 모차르트조차도 세계적 수준의 음악을 만들기 시작하기까지 13 년이 더 걸렸습니다.

1 년 후에도 여전히 도박이 될 것입니다. 그것에 대해 할 수있는 일은 없습니다. 좋은 회사는 후배를 투자로 생각합니다. 그들이 찾는 것은 현재의 기술은 아니지만 잠재적 인 기술, 기본에 대한 이해, 열정입니다. 엔트리 레벨 직업을 얻으려면 인터뷰에서 이러한 자질을 갖추어야합니다.

자신의 시간에 얼마나 많은 프로그래밍을하십니까? 그것은 아마도 당신이 빨리 향상시킬 잠재적 고용주를 설득하는 데 핵심 요소가 될 것입니다. 어떤 프로젝트를 완료 했습니까? 완성 된 프로젝트는 헌신을 보여줍니다.

저는 2 개의 다른 회사에서만 근무했지만 각 회사에는 생산성을 갖추기 전에 배워야 할 내부 기술이있었습니다. 초기 경험은 당신이 얼마나 많은 경험을하더라도 크게 줄어들지 않습니다. 좋은 고용주는 초기 학습 기간을 기대합니다.

걱정을 멈추고 프로그램을 시작하십시오. :디


1
Norvig는 엘리트 프로그래머 인 '우수성'에 대해 이야기하고있었습니다. 저는 단지 역량에 대해서만 이야기하고 있으며 고용주가 크게 신경 쓰지 않는 것에 대해서는 시간을 쓰지 않습니다. 그러나 귀하의 조언에 감사드립니다, 나는 내가하는 일을 더 많은 프로젝트를 완료하기 위해 노력할 것입니다. 말하자면 ... 쓸만한 GAE 핸들러가 있습니다.
Andrew M

@Andrew M, '대부분의 사람들에게 더 큰 위험은 우리의 목표를 너무 높게 설정하고 부족하게하는 데 있지 않습니다. 목표를 너무 낮게 설정하고 목표를 달성하는 데 '미켈란젤로. 괜찮은 것이 아니라 엘리트 프로그래머가 되길 바랍니다.
도미니크 맥도넬

0

나는 당신에게 영감을주는 독서의 단계와 지금까지 나의 가장 회전하는 순간을주고 싶습니다.

소프트웨어 경력에 "WOW"순간이 몇 번있었습니다. 그들은 다음과 같이 갔다.

Head First Design Patterns- 이것은 절대적으로 중요한 OOP / OOD의 세계를 열었습니다.

Robert C. Martin-Clean Code- 나는 이것으로 흥분해서 며칠 동안 자지 않았습니다! 간단하게, 소년은 깨끗한 코드를 갖는 것을 잊어 버렸고, 이것은 나를 다시 궤도에 올렸습니다.

Robert C. Martin-애자일 패턴 및 실습 – 이제 이러한 원칙을 기반으로 코딩 경력을 쌓았습니다. SOLID라는 단어는 내가 작성하는 모든 코드에 대해 마음 속에 떠 오릅니다. 이것은 Clean Code와 결합하여 그들에게 많은 영향을 받았으며, 당시 약 15 명의 개발자로 구성된 회사 전체에 알려줄 것을 고용주에게 확신 시켰습니다. 나는 선배도 아니고 프리젠 테이션에 능숙했지만 열정은 그렇게했다.

마지막 "WOW"순간은 TDD의 발견이었습니다. 나는 같은 "WOW"효과를 가진 다른 2 명의 친한 친구와 그것을 깨달았다. 우리는 모두 푹 빠져서 소프트웨어 개발 라이프 사이클에서 테스트의 중요성에 대해 항상 논의하고 가능한 한 많이 연습합니다. 테스트를 수행하는 훨씬 느린 인간 팀보다 자체 검증 코드를 사용하는 것이 좋습니다.).

내가 생각하는 마지막 요점은 내 마음에 매우 가깝다는 것입니다. 스크립트 파서, REST 라이브러리, 테스트 프레임 워크 등과 같은 기술에 대한 진정한 근본적인 이해를 원한다면 하나를 작성하십시오! 재미로! 당신은 그것을 즐길뿐만 아니라, 내가 아직 완전히 이해하지 못하는 것들을 쓰려고 노력할 때, 나는 그것을 훨씬 더 존중하고 훨씬 더 깊이 이해하며, 그것을 철저히 이해하도록 강요합니다.

죄송합니다. 질문에서 얼마나 많은 돈을 벌 었는지 깨달았습니다. 위에서 언급 한 것은 내 절대 핵심이었습니다. 위의 자료 중 어느 것도 나를 떠나지 않았으며 학습이 실제로 더 넓고 쉬워 졌다는 위대한 추상적 사고를 나에게주었습니다. 따라서 귀하의 질문에 대한 답변으로 코드 작성 및 소프트웨어 디자인의 핵심 원칙을 건너 뛰지 마십시오. 특정 문제를 해결하기위한 다른 특정 도구는 그리 중요하지 않습니다.


0

학습과 지식의 축적은 건물을 짓는 것과 같으며, 모든 벽돌은 다른 벽돌 위에 있으며, 기초에 의존합니다.

당신이 물건을 건너 뛰고 돌진하기 시작하면, 공중에서 지원되는 구루병 사실로 끝납니다. 당신은 그들이 넘어 질까 봐 두려워 감히 사용하지 않을 것입니다. 당신이 그들의 한계를 알아야 할 때, 그들이 이성과 파트너가되지 않으면 사실은 거짓 일 수 있습니다.

나는 기초, 수학, 알고리즘 및 그 친족을 건너 뛰고 싶은 것이 특히 걱정됩니다. 여기서 확고한 이해가 없으면 "가장 기본적인 중첩 루프"외에는 아무것도 할 수 없습니다 .

서두르지 말고, 일이 영원히 있고, 중단없는 학습을위한 시간은 없습니다. 필요한 순서대로 틈을 남기지 말고 가능한 모든 것을 배우십시오.


0

Jeff O가 제안한 것처럼, 훌륭한 프로그래머가 되려면 결코 배우지 않을 것입니다.

프로그래밍과 관련하여 잠재적으로 배울 수있는 것이 너무 많다는 것을 알고 있어야합니다. 따라서 인생을 좋게 만드는 것에 집중하십시오. 그것이 순수한 즐거움, 돈, 과학적 노력 또는 여러 가지 이유가 무엇이든 당신이 선택하고 시간과 수면에 투자 해야하는 것입니다.

괜찮은 개발자가 무엇인지 직접 물어보고 바로 그렇게하십시오. 실제 프로젝트에서 예술을 연습하여 시간을 잊게 만듭니다.

저에게 알맞은 개발자가 되려면 좋은 요구 사항을 얻고 쓰는 방법, 프로젝트 관리 방법, 테스트 방법, 결과 제시 방법, 누가 나를 도울 수 있고 누가 (채용)하지 않을 수 있는지 판단하는 방법, 상사와 고객을 기쁘게하는 방법.

기술 수준에서 나에게 좋은 개발자가되는 것은 설계, 검토, 코딩, 디버그, 테스트, 유용한 사용자 매뉴얼 작성, 의미있는 방식으로 동료 개발자를위한 코드 설명, 버전 관리, 시뮬레이션 및 항상 찾기 테스트, 디버깅, 부하 예측에 대한 데이터 분석 등 작업을 자동화하고 매일 생산성을 향상시키는 솔루션. 필요하거나 보증 할 때 빠르고 더러운 코드를 수행 할 수 있지만 코드를 통해 깨끗하고 잘 생각할 수 있다는 의미입니다.

그것을 위해 배우는 것이 아니라 목적을 위해 배우는 것만으로 필요한 것을 해결하기 위해 얻은 것입니다. 그것을 위해 배우는 것은 당신에게 확실한 기반을 제공하는 것이 좋지만, 목적을 위해 배우는 것이 그것을 실현시키는 데 좋습니다.

결국 좋은 개발자는 당면 과제에 필요한 것을 선택할 수있는 사람입니다.


0

당신이 여기 저기있는 것처럼 보입니다. 나는 사람들이 특정 영역에 집중할 때 가장 많이 배우고 실제로 파헤칠 것이라고 생각합니다. 그렇게 할 때 다른 도구를 배우는 데 필요한 특정 문제가 항상 발생하기 때문입니다. 이렇게하면 정신 도구 상자에 통합 된 각각의 새로운 아이디어 나 도구를 사용하면 다른 기술을 훨씬 쉽게 배울 수 있기 때문에 지식 세트를 유기적이고 고도로 상호 연결된 방식으로 발전시킬 수 있습니다.


-1

관심있는 좋은 오픈 소스 프로젝트를 선택하고 코드를 배우고 버그 수정 및 새로운 기능을 제공하십시오. 그것은 모든 프로그래머가해야 할 일입니다.

또한 지금 프로젝트를 시작하십시오. 배우는 유일한 방법은 실제 문제에 대한 해결책을 찾는 것입니다. 아무것도 구축하지 않으면 아직 해결해야 할 문제가 없습니다.

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