Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

좋은 프로그래머가 되는 것은 단순히 코드를 작성하는 것이 아닙니다

당신이 생각하는 이상적인 프로그래머는 무엇입니까? 7살 때부터 코딩을 해서 백만 달러짜리 앱을 만드는 컴퓨터 천재인가? 비즈니스에서 10년 또는 20년 동안 모든 언어를 알고 있고(물론 좋은 언어만 가능) 커피 한 잔을 더 마시는 데 걸리는 시간 안에 웹사이트를 구축할 수 있는 경험 많은 개발자입니까? 모두가 동시에 경외하고 부러워할 정도로 아름다운 코드를 작성할 수 있는 코드 아티스트입니까?

어, 아마도? 글쎄, 그 꿈의 프로그래머들은 모두 꽤 좋게 들린다. 하지만 미친 코딩 실력이 전부가 아니라는 제 말을 믿으시겠습니까? 그리고 그 좋은 프로그래밍은 좋은 프로그래머의 절반에 불과합니까?

이제 분명히 코딩하는 방법을 모른다면 좋은 코더가 될 수 없습니다. 그러나 프로그래머가 되는 것의 컴퓨터가 아닌 다른 측면이 약간 간과되는 경우가 있습니다. 코딩과 전혀 관련이 없는 전문 개발자가 되는 것과 모든 것이 전문가가 되는 것과 관련된 것이 많습니다. 진정한 전문가는 제시간에 작업을 완료하고 팀 플레이어가 되는 방법을 알고 있으며(단순히 급습하여 하루를 구하는 영웅이 아님) 궁극적으로 고용주나 고객의 자산이 되는 사람입니다.

그렇다면 좋은 개발자의 특징은 무엇일까요? 다음은 제가 수집한 몇 가지입니다. 더 많은 것이 있을 것입니다.

1. 깨끗한 코드를 작성하세요.

예, 이것은 실제로 코딩에 관한 것입니다. 코딩도 그 일부라고 말씀드렸죠? 🙂 그 핵심에서 좋은 코드는 무엇보다도 먼저 작동하고 다른 개발자가 이해할 수 있으며 너무 많은 고통을 일으키지 않고 리팩토링할 수 있습니다. 코드는 컴퓨터와 통신하지만 사람과도 통신해야 합니다. 몇 달 전의 코드로 돌아가서 과거에 무슨 생각을 하고 있었는지 기억하는 데 너무 많은 시간을 소비해야 했습니다. 잘 명명되고 잘 조직된 기능, 주석 및 문서는 미래에 다른 사람들(귀하를 포함하여!)을 구할 시간만큼 10배의 보상을 받을 것입니다.

좋은 코드 작성에 대한 추가 정보(제휴 링크, 걱정하지 마세요!):
클린 코드
실용적인 프로그래머
리팩토링:기존 코드 디자인 개선

2. 최신 동향을 파악하세요.

오늘날 웹 개발의 트렌드가 얼마나 미친 듯이 빠르게 변하는지 우리는 모두 알고 있습니다. 나는 당신이 까치 코더가되어 최신의 새로운 인기를 쫓을 필요가 있다고 말하는 것이 아닙니다. 그러나 스펙트럼의 다른 쪽 끝에서 편안해지고 안주하면 공룡 코더가 될 것이며, 이는 훨씬 더 나쁩니다. 몇 가지 핵심 기술을 잘 익히면서도 다른 트렌드와 진행 중인 뉴스에 대해 최소한 숙지하고 있어야 하는 행복한 매체가 있습니다.

다음은 끊임없이 변화하는 업계를 파악하는 데 도움이 되는 몇 가지 간행물입니다. 도움이 된다고 생각되는 다른 항목에 대해 자유롭게 의견을 말하십시오.

Hacker News
A List Apart
Smashing Magazine
CSS 트릭

3. 새로운 것에 마음을 열고 빠르게 배우십시오.

아직 코딩을 배우는 초기 단계에 있다면 스스로에게 너무 무리하지 마세요. 나는 당신이 일주일 안에 Angular를 마스터할 수 있어야 한다고 제안하는 것이 아닙니다. 그러나 주어진 문제에 대해 솔루션이 아직 모르는 것일 수 있다는 가능성을 열어두십시오. 그리고 "아직"은 중요한 구분입니다. 당신이 모르는 그 일 때문에? 수행 방법을 배우고 툴킷에 추가할 수 있는 것입니다.

새로운 것을 가능한 한 빠르고 효율적으로 배우려고 노력하는 것이 중요합니다. 무언가를 더 빨리 선택할수록 더 많은 시간을 코딩하고 다른 새로운 것을 배워야 하기 때문입니다. 코딩 기술을 배우는 것은 그 자체로 배울 수 있는 기술입니다.

4. 집중하고 효율적으로 일하세요.

인간의 두뇌는 단일 스레드로 작동하기 때문에 멀티태스킹이 불가능하다는 것은 모두 알고 있습니다. 우리가 할 수 있는 일은 한 작업에서 다른 작업으로 전환하는 것이지만 그다지 효율적이지 않고 솔직히 이상적이지 않습니다. 그러나 직업이나 상황에 따라 방해가 일상 생활의 일부일 수도 있습니다. 따라서 코딩에 주어진 유한한 시간을 최대한 활용하는 것이 더욱 중요합니다.

업무 시간과 휴무 시간을 최대한 분리하고, 너무 겹치지 않도록 하세요. 예를 들어, 몇 분마다 계속해서 Facebook으로 넘어가면 생산성이 저하됩니다. 작업할 때 다른 브라우저 탭을 닫고 합리적인 벤치마크에 도달할 때까지 꾸준히 작업을 시도하면 집중하는 데 도움이 될 수 있습니다. 뽀모도로 타이머를 사용하여 25분 정도의 버스트 작업을 하는 것도 눈앞의 단일 작업에 집중하는 데 도움이 됩니다.

추가 참고 자료:
Cal Newport의 Deep Work

5. 작업을 완료하는 데 필요한 시간을 정확하게 추정합니다.

이것은 어려운 일이며, 분명히 나 자신도 여전히 더 나아지기 위해 노력하고 있습니다. 그러나 시간의 관점에서 자신의 능력을 정확하게 평가할 수 있다는 것은 매우 귀중한 기술입니다. 회사에서 일하든 자신을 위해 일하든 잘못된 견적은 프로젝트 일정을 엉망으로 만들고 주변 사람들을 위한 작업을 생성합니다. 최악의 경우 프로젝트를 완료하는 데 걸리는 시간을 과소평가하면 귀하 또는 귀하의 고용주에게 비용이 발생합니다.

이것에 대한 한 가지 간단한 참고 사항:항상 시간을 정확히 X시간으로 지정할 수 있는 것은 아닙니다. 일반적으로 범위를 지정하거나 프로젝트 매개변수에 대한 추가 정보가 필요하기 때문에 실제 추정치를 제공할 수 없다고 말할 수도 있습니다. 프로젝트를 완료하는 데 걸리는 시간을 추정할 수 있는 한 가지 방법은 코딩할 때 시간을 추적하는 것입니다. (이것은 4번과도 관련이 있습니다. Reddit을 절반 정도 탐색하지 않을 때 예상 수치가 더 나을 것이기 때문입니다.)

6. 기술이 아닌 사람들에게 기술 개념을 설명할 수 있습니다.

네, 답답하지 않나요? 코드 블록과 메서드를 즐겁게 헤엄치다가 현실 세계로 돌아와 프로그래머가 아닌 사람들에게 모든 것을 설명해야 할 때? 소스 코드를 보고 이해하지 못하는 이유는 무엇입니까?

틀에 박힌 코더는 외부 세계의 방해를 받지 않고 지하 동굴에 몸을 웅크리고 키보드를 해킹하는 것 외에는 아무 것도 원하지 않는 외로운 사람입니다. 특히 성가신 문제를 파악하기 위해 깊이 노력하고 있을 때 방해를 받는 것이 내 보폭을 무너뜨리고 나를 짜증나게 할 수 있다는 점을 인정합니다. 그러나 당신과 마찬가지로, 당신과 함께 일하는 비기술자들도 중요한 기능을 가지고 있습니다. (처음에는 모든 사람들과 대화하기 때문에 그럴 필요가 없습니다!)

팀의 모든 사람과 잘 협력한다는 것은 그들에게 코드 내용을 설명하고 그들이 이해할 수 있도록 해야 한다는 것을 의미합니다. 이를 위한 첫 번째 단계는 해결해야 할 코딩 문제의 관점에서 세상을 볼 수 있지만 다른 사람들은 돈, 기한, 클라이언트와 같은 원칙을 중심으로 운영된다는 점을 이해하는 것입니다.

다른 사람의 용어와 어휘로 대화하는 방법을 알아낼 수 있다면 훌륭한 팀 플레이어가 되는 데 큰 도움이 될 것입니다. 프로젝트에 몇 가지 기능을 추가하라는 요청을 받았다고 가정해 보겠습니다. "아니, 바보야, 난 원하지 않아!"라고 소리치는 대신 그리고 다시 동굴로 돌아가서 그 기능을 사용하면 20시간의 작업이 더 추가되고 마감 시간을 뒤로 미루어야 할 수도 있다고 설명합니다.

7. 당신의 자존심을 일에 몰두하지 마십시오.

이 100%를 매일 달성하는 것은 우리 중 최고를 제외하고는 모두 불가능합니다. 그러나 우리는 적어도 일할 때 순전히 우리의 자존심에 이끌리지 않으려고 노력할 수 있습니다. 이것은 무엇을 의미 하는가? 그것은 당신이 단지 자신을 잘 보이게 하려는 것이 아니라는 것을 의미합니다. 당신은 당신의 프로젝트, 당신의 팀, 그리고 당신의 회사가 보기 좋게 보이기를 원합니다. 다른 사람을 돕기 위해 열심히 노력하고 자신뿐만 아니라 모든 사람의 성공을 보장한다면 사람들은 당신과 함께 일하는 것을 좋아할 것입니다.

자신이 원하는 것을 성취하기 위해 남을 짓밟는다면 다리에 불을 지르는 것입니다. 그리고 그것이 무너질 때 당신은 그 한가운데에 있게 될 것입니다. 물론, 단기적으로 약간의 이익을 얻을 수도 있지만, 다른 사람들이 함께 일하기 싫어하는 그 멍청이가 되고 싶습니까?

8. 실수를 숨기지 마세요.

어지럽히는 것을 좋아하는 사람은 없습니다. 인간일 뿐입니다. 하지만 전문가가 되려면 자신의 실수를 세상으로부터 숨기고 싶은 바로 그 인간적인 충동을 극복해야 합니다.

프로젝트에 부정적인 영향을 미칠 수 있는 실수를 저지른 경우 자신과 함께 일하는 다른 사람들을 위해 할 수 있는 최선은 즉시 정리하는 것입니다. 당신의 상사에게 말하고, 당신이 누구에게 말해야 하는지 클라이언트에게 말하고, 분류 작업을 시작하십시오. 자신의 잘못을 은폐하고 아무도 눈치채지 못하기를 바라는 것이 때때로 효과가 있을 수 있지만, 알게 되면 신뢰를 심각하게 깨고 프로젝트나 직업을 위태롭게 할 수 있습니다.

이제 모든 작은 혼란을 보고할 필요가 없습니다. 그러나 수정하는 데 추가 시간이 필요하거나 중요한 것을 깨뜨리는 실수에 대해서는 자신과 모든 사람에게 호의를 베풀고 화를 내십시오. 장기적으로 더 나아질 것입니다.

9. 다른 사람에게 도움을 요청하고 도움을 줄 수 있습니다.

막히거나 이해가 안되는 부분이 있으면 질문하는 것을 두려워하지 마십시오. 기한이 있는 프로젝트를 진행하고 있다면 도움을 요청하고 1시간 이내에 솔루션을 얻을 수 있을 때 스스로 무언가를 알아내려고 시간과 노력을 들이지 마세요.

Google, StackOverflow 또는 Slack을 사용하여 스스로 가능한 한 멀리 도달하는 것과 균형을 맞춰야 합니다. 그런데 이런 경향이 있는 것 같아요. 특히 회사에 있으면 혼자 있고 싶고, 도움 없이는 뭐든지 하고 싶어하는 경향이 있는 것 같아요. 시간이 많이 소요될 수 있습니다. 어렵지만 자존심을 삼키고 도움이 필요하다는 것을 인정하십시오. 더 빨리 배우고 작업을 완료할 수 있습니다.

물론 이것의 이면은 다른 사람들이 무언가에 도움이 필요할 때 돕는 것입니다. 웹 개발자로 일을 시작했을 때 회사에서 경험이 많은 사람들에게 많이 의지했고 실력 향상에 큰 도움이 되었습니다. 경험이 많아지면서 새로운 사람들이 종종 저에게 도움을 요청했습니다. 방해받는 것은 프로그래밍에서 가장 재미있는 부분은 아니지만 팀 플레이어가 되는 것의 일부이기도 합니다. 딥 코딩을 하고 있다면 몇 분 안에 다시 돌아올 것이라고 말할 수 있습니다. (문제가 정말 긴급한 경우가 아니면)

누군가가 당신에게 도움을 요청하면 다음에 성공할 수 있도록 도와주도록 노력하십시오. 그들에게 답을 주는 대신에 약간의 맥락을 주어 그들이 근본적인 원칙과 문제가 어떻게 해결되고 있는지 이해할 수 있도록 하십시오. "남자에게 물고기 잡는 법을 가르쳐라"라는 말은 모두 알다시피 🙂

이 항목 중 반향을 일으키거나 집에 와 닿았던 항목이 있습니까? 그들 중 하나에 동의하지 않습니까? 아래에 자유롭게 댓글을 남겨주세요!