개발자가 알아야 할 필수 지식 5개

프로그래머가 되기 위한 지식

프로그래밍을 학습할 때 기둥이 되는 지식

개요

개발자의 수요가 많아지고 많은 사람들이 개발자가 되기 위해 도전하고 있습니다.

신입 개발자까지는 다양한 방법으로 달성하고, 성취감을 가지게 됩니다. 다만, 그 이후부터는 많은 선택지와 어려움을 마주하게 됩니다.

대학 과정과 부트캠프, 학원에서 가르치는 방식이 더 나은 개발자로 나아가는 데는 도움이 안 될 수 있습니다. 더 나은 개발자는 스스로가 공부하며, 주춧돌이 되는 지식을 쌓아야 합니다. 그래야 새로운 기술을 사용할 때, 접근 방법에 대해서 채득 할 수 있습니다.

주니어 이하의 개발자의 목표는 프로그래밍 기초 마스터 및 라이브러리와 프레임워크의 중요성을 이해하는 것입니. 클라우드, CI/CD 등과 같은 고급 주제는 즉시 배우는 것이 아닙니다. 먼저 기둥을 세우고 난 뒤에 배워도 늦지 않습니다.

5가지 기둥

테스트 주도 개발(TDD)

TDD에 대한 많은 예찬론이 있다. 맞다. TDD는 개발을 할 때, 프로젝트에 신뢰성을 주고, 나아가 기능 하나하나도 신뢰성을 부여할 수 있다. 코드가 변경될 때, 당연히 되던 것들이 오류가 나지 않게 하는 좋은 방법론입니다.

단, 신입은 바로 테스트를 작성해서는 안됩니다. 차라리 테스트를 사용하고 작업하는 방법을 배워야 합니다. 왜 테스트를 사용하는지, 시니어가 어떻게 테스트를 작성했는지를 알아야 합니다. 아무리 TDD가 좋다고 하더라도, 처음부터 테스트를 작성하기 시작하면 TDD를 받아들이기 어렵습니다. 즉, 먼저 사용해보면서 TDD의 이점을 직접 체험해야 합니다.

그다음 하나씩 단위 테스트로 테스트 작성을 연습해야 합니다. 단계적인 공부가 필수이며, 무조건 좋다고 주입식으로 진행하면 안 됩니다. 그렇게 TDD 작성하는 것을 습관화해야 합니다.

그리고 TDD를 하면서 디버깅 연습이 필수로 들어가야 합니다. TDD는 디버깅 기술의 자동화로 디버깅 기술이 없다면 TDD를 제대로 작성할 수 없습니다. 디버깅을 먼저 배우고, 단위 테스트 작성 습관을 가지게 해야 합니다.

직장 생활을 하면서 단위 테스트가 없다면 단위 테스트를 작성하는 노력을 해야 합니다.

기본 문법

신입 및 주니어 개발자는 기본적인 요소와 코드 작성에 익숙해야 합니다. 처음부터 프레임워크를 사용하는 것보다 언어의 기본 요소, 철학, 방향성을 알고 있어야 합니다. 거기서 파생된 프레임워크, 라이브러리를 이해하는데 프로그래밍의 기초를 이해해야 합니다. 초보자에게는 함수, 변수, 조건, 루프 등 기본 개념이 완전히 생소할 수 있습니다.

처음 개발을 시작하는 초보자는 프레임워크나 라이프러리보다 언어의 기본 요소, 철학, 방향성을 먼저 공부해야 합니다. 익숙해질 정도로 언어를 사용하고, 기본 문법과 요소 공부에 많은 시간을 할애하세요. 기본은 언제나 중요하며, 고급으로 올라갈수록 기본의 중요성이 발현됩니다. 고급 개발자가 됐을 때, 기본을 다시 공부하는 것만큼 어려운 것이 없습니다.

라이브러리 및 프레임워크

올바른 라이브러리 선택은 현대 개발자의 필수 소양이 되었습니다. 흔히 사용되는 라이브러리, 프레임워크의 기본 사용법을 공부하고, 어떤 문제에 대입해야 해결 할 수 있는지 확인해봅니다. 이 과정을 통해 고급 개발자의 생각과 방향성, 개발 철학을 엿볼 수 있고, 그들이 작성하는 방식을 공부할 수 있습니다.

추가로 과도한 라이브러리 도입에 대한 문제도 고민할 수 있습니다. 스스로 작성해도 큰 노력이 들지 않는 문제에도 거대한 프레임워크, 라이브러리를 도입하는 것은 자원 낭비가 될 수 있습니다. 또한, 코드 충돌 및 중복 라이브러리 사용 등 다양한 문제가 있고, 어플리케이션이 무거워지는 이슈가 있습니다. 이러한 고민을 할 수 있다면 주니어 개발자는 벗어날 수 있습니다.

라이브러리와 프레임워크를 사용해야 하는 이유와 사이드 이펙트에 고민할 수 있어야 합니다.

멘토와 멘티

멘토와 멘티는 어떤 도움이 될까요? 이 글을 쓰는 저자도 멘토에게 멘토링을 받을 적이 있습니다. 해외에서 일하시는 개발자였고, 오픈 소스 회사에서 일을 하고 있었으며, 깊이가 다른 지식을 가지고 있었습니다. 멘토에게 자신이 직접 쌓은 노하우를 들을 수 있었고, 독학했다면 몰랐을 깨달음을 공유해주셨습니다. 또한 잘못된 개발 습관을 피드백받았고, 문제 해결하는 여러 방법을 전수받을 수 있었습니다.

어떤 분은 독학으로도 충분하다고 할 수 있습니다. 저자도 그 이후에 멘토를 따로 만들거나 하진 않았습니다. 그러나 먼저 앞서간 사람의 강의나 책을 사는 것에 돈을 아끼진 않았습니다. 멘토는 지름길을 알려주는 사람입니다. 또한, 길을 찾기 위한 노력을 많이 단축할 수 있도록 도와 줍니다. 그리고 멘토가 있다면 도전을 했을 때, 피드백을 통한 오류 수정이 쉽게 이루어집니다. 좋은 멘토는 빠른 성장의 좋은 거름이 된다는 사실을 알아야 합니다.

멘토는 멘티를 가짐으로써 누군가를 가르치는 방법을 터득하게 됩니다. 멘토는 시니어 이상 개발자가 될 수도 있지만 주니어 개발자도 신입과 초보자에게 멘토가 될 수 있습니다. 자신이 아는 것을 설명하는 것은 매우 중요한 기술입니다. 자신이 알고 있는 것을 누군가에게 쉽게 이야기 하는 것은 시니어 및 CTO급에서 필요한 능력입니다. 멘티에게 조언할 때는 한 명씩 조언을 해야 합니다. 각자의 상황이 다르고, 각자의 지식이 다르고, 경험이 다르기 때문입니다. 초창기는 자신이 알고 있는 개발과 관련된 규칙을 알려주고, 멘티가 성장한다면 토론의 여지가 있는 문제를 주어 함께 토론하고 지혜를 나누는 멘토가 되어야 합니다.

도전과 동기부여

동기 부여는 개발 작업을 하는데 큰 원동력이 됩니다. 초보자는 아직 아는 것이 없고, 시야가 좁기 때문에 동기 부여가 없다면 나아갈 때 많은 어려움을 겪게 됩니다. 쉽게 포기할 수 있으며, 기술을 공부하는 이유를 잃어버리게 됩니다. 우리는 개발이 많은 연습을 통해 성장한다는 것을 알고 있습니다. 하지만 처음 개발을 하거나 아직 경험이 적은 개발자는 연습에 대한 목적을 잘 모를 수 있습니다.

우리는 생각보다 적은 코드를 작성합니다. 에러를 잡거나, 말도 안되는 일에 시간을 쓰는 등 다양한 이슈로 코드를 적게 작성할 수 있습니다. 이러한 상황은 많은 현업을 한 사람들은 알고 있습니다. 초보자와 주니어에게 현실을 알려주며, 현실에서 더 나은 상황을 만들기 위한 방법을 공유하고 이야기해줘야 합니다.

초반에는 이러한 경험을 즐겨야 합니다. 개발자는 문제 해결사이며, 코딩하는 원숭이가 아닙니다. 그렇기 때문에 코딩을 못하더라도, 문제를 해결하는 것을 즐겨야 한다는 것을 꼭 알아야 합니다. 코딩 한줄 작성하지 않고, 다른 사람의 문제를 해결했다면, 그 개발자는 매우 훌륭한 개발자라고 할 수 있습니다.

결론

개발자는 하루 아침에 뚝딱 되는 것이 아닙니다. 충분한 공부와 연습, 그리고 경험을 통해 완성되어갑니다. 1,2개월 만에 공부해서 취업이 가능할 순 있습니다. 각자의 지식량과 경험이 다르고, 시작점이 다르기 때문이죠. 하지만 지속적으로 발전하는 개발자가 되기 위해서는 단기간에는 불가능합니다. 지속해서 공부해야 하고, 연습하고, 경험해야 합니다.

참고하면 좋은 글

개발자가 대기업에 취업하는 방법

참고

아래 내용을 주관을 넣어 번역한 글입니다.

https://www.freecodecamp.org/news/the-main-pillars-of-learning-programming-and-why-beginners-should-master-them-e04245c17c56

1 thought on “개발자가 알아야 할 필수 지식 5개”

Leave a Comment