Nonamed Develog
[TIL] AI 웹 개발 7기 사전 캠프 2-4 본문
일일 알고리즘 코드카타 풀어보기
Q. 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
def solution(num):
if num % 2 == 0:
answer = 'Even'
else:
answer = 'Odd'
return answer
def solution(num):
return 'Even' if num % 2 == 0 else 'Odd'
두가지 방법으로 풀어봤다. 조건문은 어느 정도 이해가 가는데 반복문이 익숙하지 않아서 걱정이다.
[데일리미션] 아티클 스터디
오늘의 아티클: 영리한 개발자와 현명한 개발자의 차이점
https://yozm.wishket.com/magazine/detail/1769/
대부분의 개발자들은 코드 작성에 있어 영리함을 가지고 있지만 그 것은 장점이자 약점이 될 수 있다. 개발자는 코드를 작성할 때 경험을 통해서 언제, 어떻게, 무엇을 써야할지 또는 쓰지 않아야할지를 아는 것이 중요하다. 그것이 현명한(시니어) 개발자와 영리한(주니어) 개발자의 차이이다.
영리함과 현명함의 차이
시니어 개발자는 현명하고, 주니어 개발자는 영리한 편이다. 주니어 개발자는 현명함을 갖추기에는 시행착오가 부족하다. 그들의 차이를 나타내는건 경험이다. 개발자는 실수를 하기 마련이고 그 실수를 통해 더 많은 실수를 안하는 방법을 경험적으로 알아내기 때문이다.
문제를 해결하기보단 문제를 만들지 않기
시니어 개발자는 코드를 작성해야 할 때 코드를 작성할 필요성이 있는지 명확히 식별하고 필수적인 요구사항에 집중한 코드를 작성한다. 이에 반해 주니어 개발자는 모든 요구사항과 문제점을 코드로 해결할 수 있다고 믿는다. 단기적으로 코드를 만드는 것이 훌륭한 솔루션이 될 수 있지만 장기적으로 바라봤을 떈 복잡성을 증가시켜 유지, 관리가 까다롭게 된다.
코드 생성이 필요한 때
영리한(주니어) 개발자는 코드 작성이 능숙하며 이러한 기술을 자주 활용하길 원하지만, 현명한(시니어) 개발자는 언제 코드를 작성해야 하는지, 아니면 코드 작성 대신 검토를 해야할지 알고 있다.
단순성
주니어 개발자는 무작정 코드 작성부터 시작하는 경우가 있는데, 시니어 개발자는 코드 작성에 앞서 요구사항을 검토하고 변수를 체크한다. 느릴 수도 있지만 검증된 요구사항을 바탕으로 올바른 소프트웨어를 개발하면서 결국 가장 빠른 속도로 나아간다.
질문할 때, 경청할 때, 말할 때를 구분하기
소프트웨어를 만드는 것은 비지니스 전문가와 기술 전문가와의 협업이다. 따라서 상호 소통과 이해가 필요하다. 시니어 개발자는 이 관계를 잘 이해하고 있기 때문에 소프트웨어의 목적을 이해할 수 있도록 업무의 목표와 프로세스에 집중한다. 이는 필요에 맞는 소프트웨어 개발에 큰 도움이 된다.
하지만 주니어 개발자는 이런 소통에 어려움이 있다. 요구 사항을 잊어버리거나, 듣지 않고 기술 솔루션을 내려고 하니, 문제점과 예외 사항이 나타날 때마다 코드 수정을 해야하기 때문에 뒤쳐진다.
이렇듯 질문할 때, 경청할 때, 말할 때를 아는 즉, 소통을 할 줄 알아야 현명한 개발자가 될 수 있다.
자신이 맡은 바를 다하기
소프트웨어를 개발하기 위해서는 팀이 필요하고 그 안에서 자신이 맡은 바를 충실히 실행해야 한다. 주니어 개발자는 다른 사람의 일을 해주는 경우가 있다. 물론 다른 팀원들을 도와주는 것도 좋지만 장기적으로는 자신에게 해가 되기 때문에 좋지 않다. 결국 시간은 한정돼 있고 자신의 일을 할 시간은 줄으들기 때문이다.
현명한 개발자는 업무를 처리하는 사람들의 시간을 보호해주고 그들을 위해 책임과 결정을 내려야 한다.
현실적으로 대처하기
일을 하다보면 문제도 발생하고, 예기치 못한 상황이 발생하기도 한다. 이러한 환경에 적응하고 변화하는 것이 시니어 개발자의 덕목이다. 주니어 개발자는 현실과 싸우고 시니어 개발자는 현실에 맞춰 일을 한다.
-
아티클을 읽기 전 영리함과 현명함의 차이점에 의문이 들었다. 결국 똑똑하다를 다르게 표현한 것일 뿐 아니겠는가? 원문 제목을 보니 'The Differene Between Clever developer & Wise developer'를 봤을 때 Cleverness vs Wisdom의 대결구도로 볼 수 있었다. 구글링을 해보니 Sharp, Skillful, Witty, Inventive은 영리함(Clever)를 의미하는 요소고, Discernment, Good judgment, Discretion은 현명함(Wise)를 의미하는 요소였다.
모두 갖추면 좋은 요소들이다. 하지만 좋은 것 중에 개발자의 취해야할 것은 현명함의 영역이었다. 왜일까? 주니어 개발자는 시니어 개발자 보다 더 나은 환경에서 양질의 교육을 받은 개발자일 것이다. 따라서 자신이 역량을 최대한 끌어올려 업무를 수행하고자 할 것이다. 그런 자신이 있기 때문이다. 그런 와중에 아티클에서 언급된 주니어 개발자들의 실수들이 발생하기도 할 것이다. 실수는 영리한 개발자에게 현명한 개발자가 될 수 있는 훌륭한 날개가 되어 줄 것이다.
아티클에서 시니어 개발자는 현명한(Wise) 개발자라고 하지만 결국 개발자는 영리하면서 현명한 개발자가 되어야 할 것이다. 결국 주니어 개발자는 시니어 개발자가 되는 과정을 겪기 때문이다.
'WHAT I LEARN > TIL' 카테고리의 다른 글
[TIL] AI 웹 개발 7기 사전 캠프 3-1 (2) | 2024.06.03 |
---|---|
[TIL] AI 웹 개발 7기 사전 캠프 2-5 (0) | 2024.05.31 |
[TIL] AI 웹 개발 7기 사전 캠프 2-3 (0) | 2024.05.29 |
[TIL] AI 웹 개발 7기 사전 캠프 2-2 (1) | 2024.05.28 |
[TIL] AI 웹 개발 7기 사전 캠프 2-1 (0) | 2024.05.27 |