20가지 조언에 대처하는 나의 자세
20 principles I learned from 10 years of developing software 글을 보며 공감 가는 부분들이 있어서 앞으로도 업계에서 함께 일하고 싶은 개발자가 되기 위한 원칙을 기억하고 생활화하기 위해 글을 남긴다. 또한 감명받고 공감 가는 조언에 대해서 그저 공감이 아닌 행동으로 어떻게 연결할 수 있을까? 고민하며 앞으로의 방향을 생각해봤다.
💡 주관적 해석과 영어를 번역하며 오역이 있을 수도 있으니 원본을 기반으로 읽어주세요! 🙇🏻♂️
생각
Be humble
→ 겸손해라
나 스스로 모든 것을 할 수 없으니 내가 조금 더 아는 것에 대해 오만하지 않고 겸손하기
Make it work, make it right
→ 동작하게 만들고, 제대로 만들자
어설프게 만드는 것보다 제대로 만드는 것이 중요하다. (하지만 때때로는 빠르게 하는 것도 중요하다.) → 유연함 키우자
Always write tests
→ 테스트 환경 고려하기
테스트 환경이 없다는 것은 그 모든 일을 손으로 해야 하는 것이다.
Optimize for change
→ 변경 최적화
어설픈 추상화보다는 복제해서 쓰는 것이 더 낫다. → 개발 초기에 이런 실수를 한 적이 있는데 어설프게 추상화했다가 확장성이 안 돼서 조건이나 기타 기능이 많이 추가하다 보니 키메라가 되어 있었다.. 🥲
Solve 80% of use cases
→ 상황의 80%부터 해결하기
모든 상황을 고려한 완벽한 해결법은 없으니 완벽한 방법을 찾으려 시간을 너무 지체하지 말자 (기회비용을 고려하자는 의미 같다.)
Prefer functional programming
→ 가독성이 좋은 쉬운 코드를 추구하라
코드 보기 위해 너무 깊이 있는 지식을 요구한다면 그것은 잘못 작성되어 있을 가능성이 크다. (분리가 잘 되어 있는 코드를 추구하자)
Good Enough is Better than Perfect
→ 충분한 것이 완벽한 것보다 낫다.
완벽하지 않다는 이유로 조건에 부합하는 적당한 것을 버리지 말자
Do not generalize early
3의 규칙을 생각하며 섣부른 추상화를 하지 말자
섣부른 추상화보다는 3의 규칙을 생각하면서 최소 3번의 중복된 코드가 보일 때 고려하자
Perfect code doesn't exist
→ 완벽한 코드는 존재하지 않습니다
시간을 낭비하고 불가능을 쫓는 것보다 이것을 사실로 받아들이는 것이 좋습니다.
행동
Delete as much code as you can
→ 최대한 많은 코드 삭제
중복되는 코드나 불필요한 코드를 지속해서 지우자
Criticize in private, praise in public
→ 비판은 개인적으로 하고 칭찬은 공개적으로 하자
사실 이 부분에 대한 설명이 없어 고민했는데 망신을 주거나 공격적인 말을 공개적으로 하지 말고 개인적으로 하며 칭찬은 공개적으로 더 칭찬해주자 이런 내용인 것 같다(?)
Make notes
→ 메모하기
메모라고 쓰고 기록이라 읽는다. 요즘 느끼는 것이 확실히 내용을 그저 읽고 이해할 때보다 적고 정리할 때 진짜 내 것이 되는 느낌을 받는다.
Talk to your users
→ 사용자의 소리를 듣기
결국 이 코드도 누군가의 불편을 해소하기 위해서 만들어진다는 것을 기억하자. 그들을 위한 코드를 최고의 소프트웨어는 사용자에게 공감하는 엔지니어가 만듭니다.
Learn with intention
→ 목적을 갖고 배우기
공부를 위한 공부보다 어떤 목표나 이 공부를 통해 내가 가진 문제 중에 어떤 개선점이 생기는지 생각하며 공부하기
Fix broken windows
→ 빈틈을 잘 메꾸자
이미 끝난 코드들도 새로운 코드와 부딪히며 빈틈이 생길 수도 있고 그 빈틈은 여러 버그로 이어진다. 평상시에도 빈틈을 잘 수정하고 고치자.
Fix the problem
→ 문제를 해결하자
누구의 잘못인지 중요하지 않다. 서비스에 문제가 생겼다면 그것은 곧 그 일원인 나의 문제이다. 어떤 문제라도 해결하려 달려들자.
Do what works, not what's fashionable
→ 유행에 선동되지 말자
유행에 선동되지 말고 작은 단위(Proof Of Concept)를 만들어 테스트 하고 더 확장할지 말지 결정하자
The best work requires a good rest
→ 일의 밀집도를 올리기 위해서는 충분한 휴식이 필요합니다
최고의 성과를 내기 위해서는 정기적인 휴식이 필요합니다. 또한 전문 단거리 선수가 항상 전력 질주하기를 기대하지 않습니다.
Take small steps
→ 천릿길도 한 걸음부터
처음부터 대형 공사를 하려다 보면 중간에 집중력을 잃기도 하고 목적과 의도가 희석될 수도 있다. Step by Step으로 짧은 목적과 함께 신속하게 달성하며 방향과 가능성을 확인하자
Praise for good work
→ 잘한 것에 대한 칭찬을 아끼지 않기
칭찬을 고래도 춤추게 한다는 이야기가 있듯이 잘한 것은 잘했다고 칭찬하며 찬사를 보내자.
글을 마치며 👋🏻👀
어찌 보면 당연하다고 생각할 수도 있고 공감이 안 되는 부분이 있을 수도 있다. 그렇지만 10년 동안 이 업계에서 일하면서 나름의 원칙을 만든 이분의 이유가 있지 않을까? 나보다 먼저 된 자의 말에 귀를 기울여 나 또한 좋은 방향을 설정하고 나의 원칙을 만들어 지켜가는 것이 어떤 결정에 있어 감정적으로 움직이지 않을 수 있는 하나의 방법이 되는 것 같다.
Reference 📎
20 principles I learned from 10 years of developing software