반업주부의 일상 배움사

[손끝독서] 이펙티브 엔지니어 본문

취미생활

[손끝독서] 이펙티브 엔지니어

Banjubu 2022. 8. 8. 12:12
반응형

레버리지(ROI)를 효과성의 측정 기준으로 삼아라

레버리지 = 생산한 효과 / 투자한 시간


레버리지를 늘리는 세 가지 방법

1. 특정 활동을 완료하는데 드는 시간 줄이기
2. 특정 활동의 생산량 늘리기
3. 레버리지가 높은 활동으로 전환하기

이와 관련된 질문들
1. 이 활동을 더 짧은 시간에 완료하려면 어떻게 해야 할까?
2. 이 활동으로 생산되는 가치를 증가시키려면 어떻게 해야 할까?
3. 이 시간을 투자해 더 큰 가치를 생산할 수 있는 다른 활동이 있을까?

회의 레버리지 높이기
1. 똑같은 목표를 더 짧은 시간 내에 달성할 수 있게 회의 시간을 1시간에서 30분으로 줄이기
2. 회의가 명확한 목표를 향해 더 생산적으로 진행되도록 사전에 회의 의제를 준비하고 목표를 설정하여 참석자에게 배포하기
3. 꼭 직접 만나 의논할 필요가 없다면 회의를 이메일 논의로 대체하고, 회의 시간을 중요한 기능을 제작하는 데 사용하기

개발 시간의 레버리지 높이기
1. 수동으로 작업하던 개발/테스트 프로세스 중 일부를 자동화해서 개발 주기를 더 빠르게 반복하기
2. 출시했을 때 중요한 정도에 따라 작업의 우선순위를 정해서 최종 배포할 제품의 가치를 최대한 높이기
3. 고객지원 팀과 소통하면서 고객이 가장 불편해하는 부분을 파악하고, 이를 바탕으로 적은 노력으로 더 큰 가치를 창출할 수 있는 새로운 기능이 있을지 생각해 보기

성능 개선을 위한 레버리지 높이기
1. 프로파일링 도구를 효과적으로 사용하는 방법을 배워서 병목 지점을 파악하는 데 드는 시간 줄이기
2. 각 웹 페이지의 성능과 방문 빈도를 측정하여 트래픽에 특히 영향을 미치는 병목을 먼저 해결하고, 더 큰 효과를 낼 수 있는 순서로 해결하기
3. 제품 팀과 협력하여 애플리케이션 속도를 제품 개발 시 우선적으로 개발할 기능으로 두어 처음부터 성능이 우수한 소프트웨어로 설계하기. 이러면 추후 애플리케이션 속도가 수정해야 할 버그로 취급되지 않을 것이다.

레버리지를 활용해서 자신의 엔지니어링 효과성을 측정하라. 투자한 시간에 비해 가장 높은 투자 자본 수익률을 내는 활동에 집중하라.
시간의 레버리지를 체계적으로 높여라. 활동을 더 빨리 마치거나, 영향력을 더 크게 기우거나, 더 높은 레버리지를 지닌 활동으로 바꿀 방법을 찾아라.
레버리지 포인트에 노력을 집중하라. 시간은 가장 제한적인 자산이다. 투자한 시간에 비해 월등히 더 큰 효과를 내는 습관이 무엇인지 알아내라.


학습을 목표로 모든 것을 최적화하는 것이 이펙티브 엔지니어를 위한, 레버리지가 높은 활동이다.
성장 마인드셋이 능력을 발전시키기 위한 전제 조건이다.

성장 마인드셋을 갖춰라.

스스로가 자신의 지성, 성격, 능력을 어떻게 보느냐에 따라 삶을 이끌어 나가는 방식은 크게 달라진다. 현 상황에 그대로 안주할지, 아니면 가치 있다고 생각하는 목표를 성취할지 결정한다. 성장 마인드셋을 가진 이들은 자신의 지능과 기술을 노력으로 기르고 성장시킬 수 있다고 믿는다. 처음에는 소질이 부족하다고 느낄 수도 있으나, 도전과 실패를 학습의 기회로 본다. 그래서 성공으로 가는 도중에 포기할 가능성이 훨씬 적다.

성장 마인드셋을 가진 학생의 73%는 추가 학습 과정에 등록한 반면 고정 마인드셋을 가진 학생은 13%만 수업에 등록했다.
성장 마인드셋을 가진 이들은 발전하려고 기꺼이 노력하지만, 고정 마인드셋을 가진 이들은 그렇지 않았다.
이 연구들을 통해 한번 더 이해할 수 있다. 스스로 개발자로서 지니는 효과성을 어떤 마인드셋으로 보느냐에 따라 배우고 성장할지, 아니면 한자리에 정체할지가 결정된다. 자신의 능력을 통제할 수 없는 고정된 양으로 볼 것인가? 아니면 자신을 발전시키는 데 자신의 노력과 에너지를 쓸 것인가?


자신의 학습률에 투자하라!
학습에 도움이 되는 근무 환경을 찾아라!


다른 근무 환경에 비해 개인적으로나 직업적으로나 높은 성장률을 유지해주는 곳이 있기 마련이다. 새로운 직장이나 팀을 선택할 때 고려해야 할 여섯 가지 핵심 요소와 각 요소마다 생각해봐야 할 사항을 소개한다.

1. 빠른 성장

  • 핵심 사업 지표(예: 활성 사용자, 연간 고정 매출, 제품 판매량 등)의 주간 또는 월간 성장률은 얼마인가?
  • 회사는 여러분이 맡은 프로젝트를 성장시키기 위해 충분히 지원해 주는가? 맡은 프로젝트가 회사로부터 지원받는, 우선순위가 높은 프로젝트인가?
  • 지난해 회사나 팀이 얼마나 적극적으로 인력을 충원했는가?
  • 뛰어난 팀원이 얼마나 빨리 리더의 자리에 오르는가?

2. 교육
- 훌륭한 온보딩 프로그램이 있다는 건 조직이 신입 개발자 교육을 중요하게 생각한다는 증거다. 마찬가지로 탄탄한 멘토링 프로그램 또한 팀이 직업적인 성장을 우선시한다는 것을 나타낸다. (구글의 engEDU, 페이스북의 부트캠프)

  • 신입 개발자가 스스로 문제를 해결해야 하는가? 아니면 공식적인 신입 개발자 온보딩 절차가 준비되어 있는가?
  • 공식적인 또는 비공식적인 멘토링이 존재하는가?
  • 회사는 팀원이 계속 학습하고 성장하는 것을 보장하기 위해 어떤 조치를 하는가?
  • 팀원들이 최근 새롭게 배운 것은 무엇인가?

3. 개방성
- 직원들끼리 서로의 결정에 이의를 제기하고 여기서 얻은 피드백을 다음 개발 주기에 반영한다면 성공 가능성은 더 커진다.
- 질문을 장려하는 호기심의 문화, 피드백과 정보를 사전에 공유하는 개방적인 문화를 추구하라.
- 실패한 프로젝트 반성하기, 서비스를 중단한 원인 알아내기.
- 제품별 투자 자본 수익률 검토하기는 모두 올바른 교훈을 체득하는 데 도움이 된다.

  • 직원들은 다른 팀이 집중하고 있는 우선 과제가 무엇인지 알고 있는가?
  • 팀끼리 만나서 과거에 수행한 제품을 수정하거나 기능을 출시하는 일이 수고할 만한 가치가 있었는지 재검토하는가? 서비스 중단 이후에는 사후 분석을 실시하는가?
  • 회사 내에서 지식이 어떻게 기록되고 공유되는가?
  • 팀이 배운 교훈의 예는 무엇인가?

4. 속도
- 개발 주기를 빠르게 반복하는 근무 환경에서는 피드백 주기도 빠르고, 학습 속도도 더 빨라진다.
- 너무 긴 배포 주기, 공식화된 제품 승인 절차, 우유부단한 리더십은 개발 주기가 늘어지는 원인이 된다.
- 자동화 도구, 가벼운 승인 절차, 실험을 장려하는 분위기는 진행 속도를 높이는 데 도움이 된다.

  • 빠른 속도가 회사의 가치나 엔지니어링 가치로 인정받는가?
  • 개발 주기 속도를 높이기 위해 팀에서는 어떤 도구를 쓰는가?
  • 아이디어 구상부터 출시 승인까지 시간이 얼마나 걸리는가?
  • 새로운 제품과 기능을 개발하는 시간과 유지 보수하는 시간의 비율은 어느 정도인가?

5. 사람
- 자신보다 더 똑똑하고 재능 있고 창의적인 사람들과 함께하는 것은 잠재적인 선생님 또는 멘토와 함께하는 것이나 다름없다.
- 새로운 자리에 가기 전에 팀원이 될 사람들과 만나보라. 자신이 실력 있는 팀에 배정될지, 평균 이하 팀에 배정될지를 운에 맡기지 마라.

  • 면접관이 여러분보다 똑똑해 보이는가?
  • 그들에게 배울 만한 기술이 있는가?
  • 면접이 엄격하고 포괄적이었는가? 면접관과 잘 지낼 만한 사람들과 함께 일하고 싶은가?
  • 1인 프로젝트가 많은가? 아니면 팀워크와 협력을 중요시하는가?

6. 자율성
- 우리의 학습 능력은 어떤 일을 어떻게 할지 선택할 수 있는 자유가 주어지고, 자유를 효과적으로 활용하는 데 필요한 지원이 뒷받침될 때 발휘된다.

  • 직원들은 어떤 일을 어떻게 할지 자율적으로 선택할 수 있는가?
  • 직원들이 팀이나 프로젝트를 얼마나 자주 바꾸는가?
  • 한 직원이 1년간 작업할 수 있는 코드베이스의 규모는 어느 정도인가?
  • 개발자들이 제품 설계 관련 논의에 참여하고 제품 방향에 영향을 미치는가?

구글은 '20% 시간'이라고 부르는 참신한 아이디어를 최초로 도입했다. 개발자가 일주일 중 하루에 해당하는 시간을, 회사를 더 발전시킬 사이드 프로젝트에 쓰는 것이다. 처음에는 수익 향상에 지장이 있을 것이라며 회의적이었으나, 지메일, 구글 뉴스, 애드센스 같은 제품이 제작되고 출시될 수 있었다.

자신의 성장에 투자하려면 스스로 20%의 시간을 개척해야 한다. 매주 하루를 통째로 내는 것보다 매일 1~2 시간 정도를 내는 것이 더 효과적이다. 그래야 기술을 발전시키는 습관을 기를 수 있기 때문이다. 당신에게 20%의 시간이 주어진다면 무엇을 하겠는가?

어떤 분야의 개발자든지, 직장에서 이용할 수 있는 자원을 활용하는 10가지 방법을 다음과 같이 제안한다.

1. 회사에서 가장 뛰어난 개발자가 작성한 코어 추상화 코드를 연구하라.
- 자신이 사용한 적 있는 코드부터 시작하라.
- 특정 선택을 한 이유와 구현 방법을 이해하고, 이전 버전 코드의 어떤 결점을 고치기 위해 재작성했는지 살펴보라.
2. 더 많은 코드를 작성하라.
- 자신의 프로그래밍 실력이 부족하다고 느낀다면 회의나 제품 설계 같은 다른 활동을 줄이고 코드를 작성하는 시간을 늘려라.
- 기억에서 지식을 불러오기 위해 더 많이 노력할수록 그 아이디어를 더 잘 익히고 유지할 수 있다고 한다.
3. 내부에서 제공되는 기술 교육 자료를 꼼꼼히 살펴보라.
- 구글은 코어 추상화를 가르치는 코드랩, 다양한 언어로 만들어진 모범 사례 가이드를 갖추고 있다.
4. 자신이 사용하는 프로그래밍 언어를 마스터하라.
- 각 언어의 고급 개념을 제대로 이해하는 데 집중하고, 해당 언어의 코어 라이브러리에 익숙해져라.
- 빠른 작업을 위해 파이썬이나 루비 같은 스크립트 언어를 최소한 하나는 익혀라.
5. 코드 리뷰는 가장 혹독한 리뷰어에게 부탁하라.
6. 발전하고 싶은 분야에 관한 수업을 수강하라.
7. 관심 있는 프로젝트 설계 논의에 참여하라.
- 초대받기를 기다리지 마라.
8. 다양한 프로젝트에 참여하라.
- 낯선 문제를 잘 해결하려면 하나의 기술을 집중적으로 연습하는 것보다 여러 기술을 교차로 연습하는 것이 더 효과적이라는 사실이 학습에 관한 한 연구에서 확인된 바 있다.
9. 보고 배울 만한 것이 있는 시니어 개발자가 최소한 몇 명 이상 되는 팀에 머물러라.
10. 모르는 코드에 용감하게 뛰어들어라.
- 페이스북의 보비 존슨은 '자신이 모르는 코드에 뛰어드는 것을 겁내지 않는 것'이 엔지니어링 분야에서의 성공과 큰 연관이 있다는 결론을 내렸다.

항상 배워라.

1. 새로운 프로그래밍 언어와 프레임워크를 배워라.
2. 수요가 많은 기술에 투자하라.
3. 책을 읽어라.
4. 토론 그룹에 참여하라.
5. 강연, 콘퍼런스, 모임에 참여하라.
6. 강력한 인맥 네트워크를 구축하고 유지하라.
7. 엔지니어링 정보를 공유하는 블로그를 팔로우하라.
8. 블로그를 개설해 설명하고 가르쳐라.
9. 사이드 프로젝트를 하라.
10. 좋아하는 것을 추구하라.






영어, 중국어 공부중이신가요?
홈스쿨 교재. 한 권으로 가족 모두 할 수 있어요!

한GLO 미네르바에듀 : 네이버쇼핑 스마트스토어

한글로 영어가 된다?! 한글로[한GLO]는 영어 중국어 일어 러시아어 스페인어가 됩니다!!

smartstore.naver.com

반응형
LIST
Comments