on
인정할게, 내 경력에서 링크된 목록을 뒤집어야 했던 적은 없었어. 더...
인정할게, 내 경력에서 링크된 목록을 뒤집어야 했던 적은 없었어. 더...
반응형
이것은 매우 흔한 느낌이다. 고등학교 때 구글이나 페이스북에서 일하는 것에 대해 몽상하는 동안 철학이나 파리의 생물학, 심지어 삼각법에 대해 배울 때도 있습니다.
"저는 이것을 알 필요가 없습니다. 저는 그것을 절대 사용하지 않을 것입니다. 요점이 뭡니까?"라고 10대들마다 말했습니다.
그리고 나서 우리는 컴퓨터 과학을 공식적으로 공부하려고 할 때 같은 정신적 과정을 거치고 알고리즘에 대해 배우기 시작합니다.
"왜 이진수 트리와 링크된 목록에 대해 배워야 하나요? 프리랜서 고객을 구할 수 있을 만큼 자바스크립트를 이미 충분히 알고 있습니다. 저는 이것을 알 필요가 없습니다. 요점이 뭡니까?"라고 우리 대부분은 경력 중 한 시점에 말했습니다.
하지만 우리가 옳았나요? 우리는 이 지식을 전혀 사용하지 않았는가? 아니면 우리가 자기도 모르는 사이에 그것을 이용했을까요? 이것에 대해 잠시 이야기 좀 합시다.
업계 18년 동안 링크된 목록을 뒤집어야 했던 적이 없습니다.
사실이야, 난 그런 적 없어. 저는 웹 개발 분야에서 일해왔고, 결국 빅 데이터로 옮겼습니다. 연결된 목록? 그게 다 뭐에요? 누가 필요하죠? 내 말이 맞니?
아니, 난 아니야.
사실 우리가 이런 주제들을 검토하는 이유와 우리가 업무에서 결코 볼 수 없는 데이터 구조를 다루는 방법을 배우는 데는 아주 좋은 이유가 있습니다. 바로 추상화입니다.
개발자의 대부분의 작업은 개념을 나중에 여러 가지 방법으로 조작할 수 있는 중요하지 않은 구조로 추상화하는 작업을 다룬다. 배열, 해시맵, 사전, 변수, 열거형 등을 말하는 것입니다.
비개발자에게 변수가 무엇인지 설명하려고 노력해 본 적이 있습니까? 우리는 보통 "그것은 물건을 안에 넣을 수 있는 상자 같다" 또는 "그것을 마시기 전에 약간의 데이터를 넣을 수 있는 컵"과 같은 현실 세계의 개념을 빌려야만 한다. 하지만 우리는 코드를 생각할 때 그렇게 생각하지 않죠, 그렇죠?
수년 동안 개발자들은 개념을 추상화하고 솔루션의 비현실적 표현을 다루는 데 숙달자가 되었습니다. 또는 물리적 세계에 기반을 두지 않은 문제에 대한 해결책입니다. 생각해보면, 우리가 그것으로부터 왔고, 우리는 그것 안에서 자라고 발전한다는 것은 매우 놀라운 일입니다.
그런데 왜 우리는 절대 사용하지 않는 것들을 배우도록 끊임없이 요청 받는 걸까요? 이를 통해 문제 및 솔루션을 추상화할 수 있도록 역량을 확장할 수 있습니다.
제 말은, 물론, 이런 데이터 구조를 지속적으로 사용해야 하는 일을 하게 될 가능성은 아주 적지만, 우리 업계의 모든 사람들이 그렇지는 않다는 겁니다. 그것도 괜찮아요.
추상 근육의 스트레칭에 관한 것입니다.
가끔 당신이 필요로 하는 것은 일별이다.
제가 이런 "불필요한" 개념들을 배우는 것에 대해 생각할 때 볼 수 있는 또 다른 큰 이점은 그것들을 배우는 것으로 인해 여러분이 지금 당장 속하지 않는 세상을 엿볼 수 있다는 것입니다.
그게 왜 도움이 되죠? 개발자로서 우리는 항상 새로운 것, 새로운 기술, 새로운 언어 등을 배워야 합니다. 무엇이 이 특별한 지식을 새로운 언어와 다르게 만드는가? 아무 것도 없어요.
저는 얼마 전에 여러분이 알아야 할 4가지 프로그래밍 패러다임에 대해 썼습니다. 여러분이 그것들을 사용하지 않더라도, 그리고 여러분이 지금 그것들을 적극적으로 사용하지 않더라도 다른 작업 방식을 보여주는 5가지 언어에 대해서도 썼습니다. 내가 왜 그랬을까? 저는 특히 여러분이 일상적으로 사용하지 않는 분야와 분야에 대한 특별한 지식이 다른 세계로 통하는 창문과 같다고 굳게 믿고 있기 때문입니다. 그것을 들여다보기만 해도, 여러분은 너무 많은 이점을 얻을 수 있어서 여러분이 보고 싶지 않다고 생각하는 것은 무섭습니다.
아마 여러분은 평생 그래프를 만들지 못할 것입니다. 하지만 다음 주에는 Neo4J 데이터베이스에 있는 데이터를 다루어야 할 것입니다. 그리고 그거 아세요? 몇 년 전에 접한 그래프 이론이 도움이 될 거예요. 전체 개념을 기억하지는 못할 수도 있지만, 구글과 다른 도구를 통해 필요할 경우 확장하기에 충분할 것입니다. 몇 년 전에 그래프 이론을 잠깐 살펴보셨다면 그걸로 충분했습니다.
아마도 여러분은 그것이 필요하고 아직 깨닫지 못했을 것입니다.
좋아, 개인적인 이야기 시간.
저는 14살 때 코딩을 시작했습니다. 그 당시에 저는 막 인터넷을 사용하기 시작했고 "해커"라고 불리는 사람들이 있다는 것을 알게 되었습니다. 저는 그들에 대한 생각에 반했고, 그래서 저는 그들 중 하나가 되고 싶었습니다.
조사를 통해 - 2.400 bauds 모뎀으로 부모님으로부터 전화 시간을 빌릴 수 있는 것은 무엇이든 - 저는 해커가 되고 싶다면 코더가 되어야 한다고 생각했습니다. 그래서 거기서 시작했습니다.
스무 살에 첫 직장에 도착했을 때, 저는 한 가지를 깨달았습니다. 나는 내가 무엇을 하고 있는지 전혀 몰랐다. 저는 스스로 기본적인 프로그래밍 개념을 배웠습니다. 네, 제어문, 루프, 변수에 대해 알고 있습니다. 사실, 저는 그래픽과 게임 프로그래밍에 대해서도 어느 정도 알고 있었습니다. 하지만 저는 웹 개발자로 일하기 시작했습니다. 그래서 이것들 중 거의 아무도 저를 도와주지 않을 것입니다.
하지만 걱정하지 마세요. 저는 꽤 빨리 배웁니다. 그래서 몇 주 후에 HTML과 CSS를 다운받고 PHP와 자바스크립트를 배우기 시작했습니다. 그것은 매우 쉬웠다.
몇 달 후, 저는 완전한 스택 개발자가 되었습니다. 거의 20년 전의 일이라는 것을 기억하십시오. 그 용어는 지금쯤 바뀌었습니다. 제가 할 수 없는 일은 없었습니다. 그게 다예요. 절정에 달했었죠.
내가 몰랐다는 것을 깨닫는 데 시간이 좀 걸렸다. 팀원들과의 대화를 통해, 저는 그들이 제가 배우는 동안 불필요하다고 생각했던 개념을 어떻게 사용하는지 보기 시작했습니다. 디자인 패턴 같은 것 말이죠. 저는 디자인 패턴이 필요하지 않았습니다. 저는 제가 필요한 모든 것을 알고 있었죠.
그리고 네, 부분적으로 사실입니다. 저는 그것들이 필요하지 않았고, 그들 없이도 일할 수 있었지만, 제가 그들 없이 할 수 있는 최선의 일을 하고 있었을까요? 대답은 아니오 입니다.
간단히 말해서, 마치 아직 길지 않은 것처럼, 저는 결국 학교로 돌아가서, 학위를 마치고, 교육을 공식화해야 한다는 것을 깨달았습니다. 왜일까요? 왜냐하면 내가 보지 못했던 세상을 보여줄 누군가가 필요했기 때문이다. 저는 다른 사람들이 말하는 단어들에 대해 알아야 했고, 결국 그렇게 했을 때, 저는 완전히 새로운 개발자가 되었습니다.
이제 제가 싱글톤 패턴이 옵저버보다 더 말이 되는지에 대한 토론을 열 수 있었기 때문이 아니라, 제가 그것을 비롯한 많은 다른 "불필요한" 개념들을 일상화했기 때문입니다.
저는 모든 프로젝트에 패턴을 구현하지는 않았지만, 그것들은 제 도구 벨트 아래에 있는 새로운 도구였고, 덕분에 개발자로서 훨씬 더 안전하다고 느꼈습니다.
개발자가 되는 데 필요한 초보 수준의 지식과 기술을 마스터하는 데 필요한 지식을 혼동하지 마십시오. 코드쓰기를 시작하기 위해 어떤 기술적인 지식도 필요하지 않습니다. 저는 많은 배경을 가진 사람들이 코드쓰기를 하고 문제없이 코더로 일하는 것을 보았습니다.
하지만, 만약 여러분이 프로그래밍의 기술을 마스터하고 싶다면, 여러분은 시간을 들여서 여러분의 시야를 넓혀야 합니다. 과감하게 새로운 것을 배우는 것에 대해 불평하지 마세요. 비록 여러분이 지금 그것을 보지 못하더라도, 그들은 장기적으로 도움을 줍니다.
from http://top-poster.tistory.com/60 by ccl(A) rewrite - 2021-10-16 03:27:11