클린 코드는 개발자 커뮤니티에서의 `최고의 실천 방법`(Best Practices) 중 하나로 여겨지며, 소프트웨어 개발 과정에서 가독성, 유지보수성, 생산성 등의 측면에서 큰 장점을 제공합니다.
가독성: 클린 코드는 읽기 쉽고 이해 용이
코드의 의도와 동작을 쉽게 파악 가능
가독성이 높은 코드는 코드 리뷰, 유지보수, 버그 수정 등의 작업 효율성 극대화
유지보수성: 클린 코드는 유지보수 쉬움
코드의 구조가 명확하고 일관성이 있기 때문에 새로운 기능을 추가하거나 버그를 수정하는 작업이 간단
코드의 중복을 제거하고 모듈화하여 변경 사항에 대한 영향을 최소화 가능
버그 감소: 클린 코드는 버그가 발생하기 어려운 구조
작은 함수와 모듈을 사용하면 코드의 일부분만 수정해도 되므로 다른 부분에 영향을 미치는 버그 감소
명확한 변수명과 주석을 통해 개발자는 코드를 더 정확하게 이해하고 버그 예방 가능
생산성 향상: 코드를 이해하고 수정하는 데 소요되는 시간 감소
가독성이 높은 코드는 협업을 향상
다른 개발자와의 코드 공유와 리뷰가 원활하게 진행
개발자의 생산성을 향상시키고 프로젝트의 진행 속도 안정화
테스트 용이성: 클린 코드는 테스트 최적화 됨
작은 함수와 모듈은 단위 테스트를 작성하기에 이상적
테스트 가능한 코드는 버그를 발견하고 수정하는 데 도움을 주며 소프트웨어의 품질을 향상
예를 들면 다음과 같습니다.
✅Good
def calculate_total_price(items):
total_price = 0
for item in items:
total_price += item.price * item.quantity
return total_price
🚫Bad
def calc(items):
tp = 0
for i in items:
tp += i.p * i.q
return tp
가독성: 첫 번째 예제는 변수와 함수의 이름이 명확하게 지어져 있어 코드를 읽기 쉽고 이해하기 쉽습니다. 변수명인 total_price, item.price, item.quantity는 코드의 의도를 명확하게 전달합니다. 두 번째 예제의 경우, 약어와 알파벳 하나로 이루어진 변수명인 tp, i.p, i.q는 코드의 의미를 이해하기 어렵게 만듭니다.
유지보수성: 첫 번째 예제는 구조가 명확하고 일관성이 있습니다. calculate_total_price 함수는 단일 기능을 수행하며, 변수명과 주석을 통해 코드의 동작을 명확히 설명합니다. 이는 새로운 기능 추가 또는 수정 시 코드의 변경 범위를 최소화하고 유지보수를 쉽게 만듭니다. 반면, 두 번째 예제는 변수명이 알기 어려우며 함수의 목적과 동작을 파악하기 어려워 야근을 겪을 수 있습니다.
버그 감소: 첫 번째 예제는 변수와 함수의 이름을 명확하게 지어 코드를 이해하기 쉽게 만듭니다. 따라서 코드를 더 정확하게 이해하고 버그를 예방하는 데 도움이 됩니다. 두 번째 예제는 변수명이 약어로 되어 있고, 코드의 의도가 분명하지 않기 때문에 버그 발생 가능성이 높아집니다.
과학(科學) 또는사이언스(영어:Science)는사물의구조,성질,법칙등을 관찰 가능한 방법으로 얻어진 체계적이고 이론적인지식의 체계를 말한다. 좁게는인류가경험주의와방법론적자연주의에 근거하여실험을 통해 얻어낸자연계에 대한 지식들을 의미한다.[1]과학자들은 자연계에서 관찰되는현상들을과학적 방법에 따라 자연적인 (초자연적이지 않은)이론으로 설명하려고 시도한다.
영어와 프랑스어인 ‘science’는 ‘자연 현상에 대한 체계적인 지식’이자 ‘추상적 논리체계’를 뜻한다. 과학은 어떤 사물을 ‘안다’라는 라틴어 ‘scire’에서 유래됐다. 그리스어 sophia(知)에 바탕을 둔 philosophia(哲學 : philosophy)와 관계가 있다. 그래서 19세기 초까지 자연과학(natural science)을 자연철학(natural philosophy)이라고 했다.
취업하거나 이직할 때 좋은 팀장을 만나는 것은 직무 만족도와 성장에 매우 중요한 영향을 미칩니다. 아래는 취업하거나 이직할 때 좋은 팀장을 찾는 데 도움이 될 수 있는 몇 가지 방법들입니다:
회사 연구 및 조직 문화 이해: 취업하려는 회사나 이직하려는 회사의 조직 문화와 가치를 이해하세요. 회사의 리더십 스타일과 문화가 팀장에게 어떤 영향을 미칠지 파악하는 것이 중요합니다.
인터뷰 과정 활용: 면접 과정을 활용하여 팀장 후보의 리더십 스타일, 커뮤니케이션 능력, 문제 해결 능력 등을 평가해보세요. 질문을 통해 그들의 리더십에 대한 관점을 알아낼 수 있습니다.
현직 팀원과의 대화: 가능하다면 현직 팀원들과 대화해보세요. 그들의 경험을 듣고 팀장의 역량과 팀 내 환경에 대한 직접적인 정보를 얻을 수 있습니다.
사내 소셜 미디어 및 평판 조사: 회사나 팀장 후보에 대한 사내 소셜 미디어 또는 리뷰를 조사해보세요. 이를 통해 그들의 리더십과 팀 내에서의 평판을 파악할 수 있습니다.
업계 리더십 평가: 해당 업계에서 어떤 팀장들이 성과를 거두고 있는지 조사해보세요. 업계 내에서 좋은 평가를 받고 있는 리더들을 살펴보는 것이 도움이 될 수 있습니다.
멘토 및 네트워킹 활용: 전문적인 멘토나 네트워크를 통해 팀장 후보를 찾아보세요. 업계 내에서의 커넥션을 통해 믿을 수 있는 정보를 얻을 수 있을 것입니다.
회사 내부 리더십 개발 프로그램: 회사 내부에서 리더십 개발 프로그램을 제공하는 경우, 이를 통해 팀장 후보를 발굴하고 평가해볼 수 있습니다.
자신의 가치와 목표와의 일치 검토: 자신의 가치관과 목표와 팀장 후보의 리더십 스타일 및 조직문화와 얼마나 일치하는지를 고려해보세요. 이를 통해 팀장과의 궁합을 평가할 수 있습니다.
취업하거나 이직할 때 팀장은 업무 경험과 성장에 큰 영향을 미치는 요소 중 하나입니다.
이상적인 대답입니다만, 접근제한이 있을 뿐 이상한 대답은 없네요.
서류 통과 후 면접 시간에는 개발팀장이 오게 되어 있습니다. 이때 회사에 대한 팀장에 대한 질문을 잘해야 합니다. 관상을 볼 줄 안다면, 저 분이 왕이 될 상인가도 볼 수 있겠죠.
팀원들에게만 좋은 팀장은 오래 가기 쉽지 않습니다. 왜냐하면 회사에 개발팀만 있는 것이 아니기 때문이죠. 좋은 팀장이 오래 가려면 회사내의 위상이 중요합니다. 회사에 큰 공을 세워도 내쳐지는 경우가 대부분입니다. 왜냐하면 회사는 계속 새로운 성과가 매년 필요하기 때문이죠. 팀 자체가 프로젝트(비즈니스)라고 생각하시면 될 것입니다.
익숙하지 않은 것에 대한 두려움은 인지상정입니다. 누군가에겐 도전일 수 있지만, 다른 누군가에게는 도박으로 느껴지기 때문입니다.
경험의 동물인 인간은 경험하지 못한 것에 대한 두려움이 있습니다. 특히 프로그래밍에 있어서 경험은 손가락 근육으로 집중됩니다. 입으로 코딩하는 것은 아니니까요. 심지어 개발툴도 바꾸기 쉽지 않습니다. 단축키가 다르면 스트레스를 많이 받게 되기 때문이죠.
자바 개발 20+년 경력자라도 파이썬이나 React쪽으로 가면 익숙하지 않은 환경을 거치게 됩니다. 프로그래밍이라는 행태는 같지만, 맥락이 다르기 때문입니다. 익숙하지 않은 환경을 경험하는 것은 모험가 기질이 있다면 재미가 되지만, 관성을 좋아하는 성격이라면 스트레스 만빵입니다.
제가 84년 처음 프로그래밍을 할 때는 인터넷이 없던 세상이었습니다. 그저 책과 잡지만 있었지요.
94년 복학했을 때 처음으로 PC통신을 경험했고, 웹 페이지도 처음 만들어 봤습니다.
98년 두루넷 사용하는 사람들이 ADSL보다 빠르다고 말했을 때는 믿기지 않았지만, 2001년 집에 두루넷 깔리고, 몇 개월동안 okjsp 사이트를 집에 있는 PC로 운영했던 적도 있습니다.
2016년 이세돌 vs 알파고 바둑이 1:4로 끝났을 때, 임계점을 넘었다는 생각이 들었습니다. 더 이상 마차 타고 다니는 시대가 아니구나 느낌이었습니다. 그래서, TensorFlow도 공부하고 그랬지만, 제 일에 적용하기는 어려웠습니다. 덕분에 파이썬만 조금 배웠죠.
빠르게 세상이 변하는 중에 아직도 AI를 안 쓴다면, 도전해 보라고 추천합니다. 익숙하지 않지만, 자꾸 경험해야 익숙해지기 때문입니다. ChatGPT(https://ai.com) 무료로 사용할 수 있습니다. 그리고 플러그인 GitHub Copilot도 30일은 무료입니다. 경험해 보지 않은 세상은 상상조차 안되기 때문입니다.