병훈's Blog

테크 리더 3인이 말하는 "개발자 원칙" 본문

IT 콘텐츠

테크 리더 3인이 말하는 "개발자 원칙"

thdqudgns 2023. 4. 15. 22:16

https://www.youtube.com/watch?v=DJCmvzhFVOI

[우아한테크세미나]

1. 제어할 수 없는 것에 의존하지 않기

🎙️ 강연자


둘 중에 어떤 개발자가 되면 좋을까. 정답은 80~90점 짜리 프로그램을 기한 내에 완성하는 것이다. 프로덕트 엔지니어의 일은 "고객이 원하는 기능"을 "고객이 원하는 시점"에 전달하는 것이기 때문이다. 하지만, 그렇다고 일정이 퀄리티보다 중요한 것은 아니다. 프로덕트 엔지니어로서 중요한 것은

이다.

 

일정 내로 80점 퀄리티의 프로그램을 개발하는 분들의 공통점이 있다. 자기가 세워둔 기준과 원칙으로 어느 코드가 좋은 코드인지 빠르게 결정을 내리는 것이다. 우리가 어느 코드가 좋은지 고민하는 사이에, 이분들은 이미 결정을 내리고, 정말 설계가 필요한 부분만 고민하여 일하는 것이다.

 

그래서 원칙에 따라 빠르게 결정하고 중요한 것만 고민하는 사람이 좋은 개발자라 생각하게 되었다.


현재 개발을 하며 지키고 있는 1원칙은 "제어할 수 없는 것에 의존하지 않기" 이다. <실용주의 프로그래머> 책의 내용 중 "현실 세계의 변화와 설계 사이의 결합도를 줄여야 한다. 전화번호를 식별자로 사용하는가? 자신의 힘으로 제어할 수 없는 속성에 의존하지 말라" 는 내용이 있다.

 

예를 들어, 주민등록번호를 PK로 사용하고 있었지만, 정부의 정책 변경에 의해 주민등록번호를 사용할 수 없게 되었다면, 프로그램 설계상 문제가 생긴다. 그래서 외부에서 전달 받은 값은 절대 PK로 선택하지 않는다. 다른 하나는, SQL보다는 애플리케이션에서 값을 다루는 것이다. 왜냐하면 DB로부터 받는 영향을 최소화할 수 있기 때문이다.

 

이렇게 내가 제어할 수 없는 것에 의존할수록 변화에 쉽게 흔들리는 SW가 만들어진다. 그러므로 프로그램 제어의 주도권을 내가 가지려면, 내가 다룰 수 있는 값을 PK로 설정하고, 내가 데이터를 다룰 수 있도록 코드를 작성해야 한다.

 

그러나 프로그램의 모든 부분을 내가 제어할 수 있는 것은 아니기에, 내가 제어할 수 는 부분과, 내가 제어할 수 는 부분을 나누어, 제어할 수 있는 부분을 최대한 늘려나가면서 확실하게 내가 제어해야 한다.


방금 전까지는 코드에 대해서만 이야기를 나눠보았다. 이제는 리더의 관점으로 보겠다. 개발팀의 리더로서 내가 제어할 수 있는 것은 팀원들의 성장 환경을 만드는 것이었다. 그래서 좋은 시니어 개발자의 사내 강연 시간을 정기적으로 가졌다. 그리고 잦은 피드백을 받을 수 있는 환경을 구성하였다. 할 수 있는 것에만 집중하여 긍정적으로 상황을 해석하는 것만이 내가 할 수 있는 것이라 생각한다.


2. 실패를 축하합니다: 실패가 내 성장의 동력이 되려면

🎙️ 강연자


위와 같은 상황을 실패한 것이라 여길 수 있을 것이다.

 

개발자로서 나는  아래와 같은 실패를 하였다.

 

제품 만드는 사람으로서는 이런 실패를 하였다.

 

관리자로서는 이런 실패를 하였다.


이러한 실패의 상황과 해결책 사이에서, 저만의 실패를 대하는 방법에 대해 말씀드리겠습니다.

첫번째는 실패를 회피하지 않고 직면하는 것입니다. 직면하고 실패에 충분히 빠지는 것입니다. 둘째는 빠졌던 실패의 감정에서 빠져나오는 것입니다. 셋째는 실패를 객관적으로 바라보며, 잘한 것과 놓친 것을 적는 것입니다. 손으로 직접 적어보는게 나에게 실패를 각인시키는 가장 정확한 수단이라고 합니다. 그렇게 실패를 정확히 각인해야 똑같은 실패를 반복하지 않겠죠. 마지막으로는, 여러 해결책을 적은 후에, 단 한 가지 해결책을 선택하여 실행하는 것입니다. 하나만 하는 이유는 많은 것을 하려고 하면, 제가 하기 싫어지게 되는 경우가 있어서, 그것을 방지하고자 하나만 합니다.

 


3. "덕업일치를 넘어서"에서 하고 싶었던 이야기

🎙️ 강연자


"전문가의 길"에 대한 이야기를 하려고 합니다. 이런 말이 있습니다.

그래서 저는 이러한 공식을 만들었습니다.

 

두번째로는 "나를 잃어버리지 않는 삶"에 대해 말씀드리고 싶습니다.

전문가란 단순히 스펙을 쌓는 사람이 아니라, 자신을 경영할 줄 아는 사람입니다. 자기 자신을 움직일 줄 알아야 하고, 실패하기를 두려워하지 않아야 합니다. 계속 성장시켜 나가야 합니다. 그러기 위해서는 자신이 어떤 사람인지 받아들이고, 거기서부터 출발해야 합니다.

 

매슬로 욕구 피라미드는 잘못 알려졌다고 합니다. 자아실현 욕구가 피라미드의 맨 위에 있지만, 사실 자아실현 욕구는 늘 있습니다. 그러니 본인이 무엇을 좋아하는지 계속해서 찾아가시면 좋겠습니다. 자신을 잃게 되는 두 예시를 설명드리자면, 하나는 자신의 내면에 너무 깊이 파묻혀서 세상과 단절되었을 때 자신을 잃어버리는 것입니다. 또 하나는 세상에 너무 매여서, 수동적으로 일하는 것입니다. 이런 것을 조심하며 자신을 잃어버리지 않길 바랍니다.

 

다시 "전문가"라는 주제로 이야기해보겠습니다. 시간이 지나면서 컴퓨터의 의미가 바뀌었습니다.

컴퓨터가 우리의 삶에 점점 가까이 다가오고 있고, 많이 친숙해졌습니다. 그만큼 점점 쓸모가 있어지고 있고, 더 중요해졌습니다. 그래서 우리 프로그래머들은 더 중요한 사람이 되어가고 있는 것입니다. 처음에 의사의 윤리 강령과 같은 개발자의 윤리 강령을 말씀드렸었는데, 이것에 대해 진지하게 생각해보시면 어떨까 합니다.

 

시간이 지나면, 컴퓨터는 우리가 생각하는 것과는 달라질 것입니다. 우리는 폭발하는 화산의 파편과도 같습니다.


Q&A

1. 테크리더의 가장 중요한 역량 하나만 꼽으라면 어떤 역량인가요?

동욱님 : 먼저, 위임하지 못하면 리더를 하면 안된다고 생각합니다. 그리고 호들갑을 떨면서 "이거 진짜 대단한 일이야.", "이거 하면 엄청 도움 많이 될꺼야" 와 같은 호들갑과 긍정적인 말을 하면 아주 강력한 팀을 만들 수 있다고 생각합니다.

미정님 : 팀원 한명한명을 이해하고, 그 각자에게 맞는 리더쉽을 보여줘야 한다고 생각합니다.

성철님 : 리더가 계속해서 성장하는 것입니다.

 

2. 유연성 있게 성장할 수 있는 개발 방법이나 습관이 궁금합니다.

미정님 : 제가 성장한 방법을 알려드리겠습니다. 제가 작성했던 코드를 다시 작성해봅니다. '이전에는 이 요구사항을 이렇게 만들었는데, 만약 이렇게 만들었으면 어땠을까? 확장성이 있었을까?' 고민하면서 다시 짜봅니다. 시스템 설계도 마찬기지로 다시 설계해봅니다.

동욱님 : "제가 틀렸네요"라고 말할 수 있는게 유연성 있게 성잘할 수 있는 방법이라고 생각합니다.

성철님 : 과정 자체를 즐기는 것이 중요하다고 생각합니다. 어느 수준에 자격미달이라는 생각이나 단계를 넘어가야 한다는 생각이 스스로에게 괴롭고, 압박으로 느껴질 수 있고, 재미가 없습니다. 그러니 과정 자체를 즐기길 바랍니다.

 

3. 좋은 피드백을 주는 방법?

미정님 : 팀원 각각의 성향에 맞는 속도와 문구로 피드백을 주려고 한다. 그러기 위해서 평소에 팀원들을 관찰한다.

동욱님 : 일기에 생각을 적고, 다시 보면서 '내 생각이 맞나?' 과정을 거치고 피드백을 준다. 그리고 회의 녹음을 하는데, 녹음을 공개한다. 그러면 다시 들으면서 각자 스스로 피드백을 하는 경우도 있었다.

성철님 : 안 좋은 피드백을 주지 않는다. 다만, 사람들의 다양성을 수용하고, 자신이 잘하는 일을 더 잘할 수 있도록 노력을 많이 하는 편이다. 그럼에도 한계를 넘어서면 그 사람의 fit이 조직과 맞지 않다 여기고, fit이 맞지 않는 것이지, 그 사람이 잘못한 것이라는 생각이 들게 하지 않는다. 그래서 회사 안에서 그 사람과 맞는 다른 조직을 찾아봐준다. 사람을 바꾸려고 하지는 않는다.

 

4. 같이 일해보고 싶다는 생각이 들게 했던 개발자가 있나요?

동욱님 : 집요한 태도로, 어떠한 문제를 드려도 해결해오시는 분이 계셨다.

 

5. 팀원들에게 성장에 대한 니즈를 불어넣어줄 방법이 있을까요?

성철님 : 일이 재밌고, 성취할 수 있는 경험을 만들어주면 될 것이다.

 

6. 번아웃을 극복한 경험을 알려주세요

미정님 : 휴가를 다 끌어모아서 푹 쉽니다. 아무것도 하지 않아야 돼요. 저는 일을 적당히 하면서 쉬지 못하고 하나에만 집중하는 성격입니다. 푹 쉬면서 회고록도 쓰고, 실패에 대한 루틴을 돌리고 있습니다. 지금은 직면하고 있는 단계입니다. '내가 뭘 더 해야 할까..'

성철님 : 스트레스는 '활력을 얻는 유스트레스'와 '과해서 견딜 수 없는 디스트레스'가 있습니다. 디스트레스로 넘어가지 않으면서, 유스트레스 상태를 유지하는 것이 중요합니다. 내가 자신감이 넘치면 유스트레스가 넓어집니다. 결국은, 자신감을 회복하는 것이 중요합니다. 그러기 위해서 제가 사용하는 방법은 이불을 개는 것입니다. 작은 성취로 시작하여 연속적으로 자신감을 얻습니다. 그러면 유스트레스 범위가 넓어져서, 더 많은 일에 도전하고 재미있게 할 수 있게 됩니다.

 

728x90
728x90