티스토리 뷰

끄적일기

좋은 엔지니어란

소영 2022. 6. 19. 21:32

저번에 애디 오스마니가 쓴 글을 읽고 좋은 엔지니어란 무엇일까를 고민한 글을 적어보고자 한다

 

먼저 좋은 기술적으로 올바르게 일할 수 있는 철학은 이렇다

 

노동시간을 늘리지 말고 질 좋게(가치 있게) 일을 해라

시간을 채우기 위한 일보다는 가치있는 시간을 보내 질 좋은 코드를 작성해야 한다. 항상 하릴없이 시간을 보내도 해야 할 일이 쌓여있으면 바쁘다고 착각하기 쉬우나, 그건 시간을 보내는 거지 쓰는게 아니다, 하루에 회사에서 시간을 가장 많이 쓰기 때문에 내가 시간을 어떻게 사용하는건지 항상 고민하며 계획해야 한다. 또한 기술적으로 아는게 많이 없다면 그만큼 헤매기 때문에 시간을 더 많이 사용하게 된다. 

헤매는 시간을 없애기 위해서는 항상 기술적으로 배우는 습관을 들여놓아야 한다.

내목표는 무엇인지 그리고 회사의 목표는 무엇인지 그게 나의 목표와 어느정도 부합하는지 아는게 중요하다.

 

비판적으로 생각하고 객관적인 시각을 가져라

코딩을 하다보면 바로 앞에 닥친 문제(시련?)이 크게 느껴질 때가 있다. 그래서 이 부분만 해결하고 넘어가자 하는 경우가 있는데, 그 부분을 넘어가면 또 다른 문제가 닥칠때 그 문제를 해결할때 더 큰산을 마주할 수 도 있다. 그렇기 때문에 어느정도 숲을 보면서 코드를 작성해야 할때가 있다. 내가 어떤 문제를 해결하고 있는지, 이 문제의 원인이 정확히 무엇인지, 내가 해결하고자 작성하는 코드는 확장성을 고려하는 코드인지를 판단하여 작성해야 한다.

 

기본을 중요시해라

기본기를 익힌 후 다음 새로운 기술을 습득해야 한다. 그렇지 않으면 새로운 기술을 사용할 때마다 계속 레퍼런스를 찾게 될 것이다. 이 기술이 왜 이렇게 작성되는지 알지 못하기 때문이다. 그렇게 몇번의 복붙을 하면 아마 개발보단 편집실력이 더 늘게 될 것이다..

코드를 이해하고 작성하는 것과 사용해야 하기 때문에 작성하는 것의 차이는 크다. 

코드를 이해하고 작성하게 되면 어떤 식으로 이 서비스를 구축할 수 있을지에 대한 생각의 틀이 정해진다. 하지만 코드를 사용하기 위해 작성하게 되면 이 서비스에 부합하는 레퍼런스를 찾을 때까지 코드를 작성할 수 없을 것이다.

 

"당신은 도구를 사용하지 말아야 할 때를 이해할 때까지 도구를 마스터한 것이 아닙니다." - @kelseyhightower


사용자에게 초점을 맞춰 사용해라

우리는 개발을 하기 이전에 이걸 누가 사용할지에 대한 고민을 해봐야 한다. 먼저 개발자들 또한 메이커 이기때문에 이걸 왜 만드는지에 대한 이유가 필요하다. 그렇기 때문에 사용자가 이걸 왜 사용할지 어떻게 잘 사용할지 먼저 고민한 후 개발을 들어가야 한다.

 

최신 기술보다는 사용사례에 적합한 것을 사용해라

항상 새로운 기술이 이전 기술보다 더 좋은 기술은 아니다. 최신기술은 이전 기술의 보완점으로 나오는 경우가 있으나, 프로젝트를 진행할 때 이전기술이 더 나은 경우가 분명히 있다. 그러니 장단점을 잘 확인하여 기술을 적용해야 한다.

그리고 배울 때 간편한 최신기술을 먼저 적용하기 보다는 무거우나 더 깊이 있는 이전 기술을 사용해보고 최신기술을 배우는게 더 좋다. 최신기술은 이전기술과 꽤 닮은 점이 많기 때문에 이전기술을 배우고 최신기술을 배우면 더 쉽게 기술을 배울 수 있을 것이다. 

 

새로운 프로젝트에 새로운 기술을 사용해라

하지만 새로운 기술은 꼭 배워나가야 한다. 이전기술의 보완점이 있다면 그 기술을 사용해야 한다고 생각하기도 하고.. 

그 기술은 지금 하고 있는 큰 프로젝트에 바로 적용하기는 어려우니 새로운 토이 프로젝트로 새로운 기술을 적용해보면 좋다.

사용해야 제대로 익힐 수 있고, 프로젝트를 진행해봐야 흐름의 이해가 더 쉽기 때문이다.

 

호기심을 가져 배움을 멈추지 말아라

배움은 계속되어야 한다. 그 기술에 대해 다 안다고 주장하는 사람은 사실 다 알고 있지는 않다. 항상 새로운 것이 나오며, 그 새로운 것은 기존것을 대체하기도 하고, 개선하기도 하기 때문이다. 

기술의 학습은, 개발자로 있는 이상 꾸준해야 한다. 꾸준함은 사실 어느정도 고통스럽다. 공부는 지루한 것이기 때문이다. 그렇기 때문에 즐기는 태도, 이것을 탐구하고 싶은 욕구는 있어야 한다. 배우는게 지루해도 배우지 않고는 도저히 잠이 오지 않는다거나, 머릿속에서 맴돌아서 보지 않고는 참을 수 없는 기분이 드는 것도 어느정도 필요하다고 본다. 

배움이 아닌 인터넷 쇼핑을 하듯 찾는 태도나 마음가짐이 좋은 것 같다 그건 보통 가볍게 다가가니까.

그렇게 배운 기술은 누굴 위해 사용되지 않아도 된다. 나를 위한 배움이다.

애디 오스마니는 이렇게 말한다. 

당신이 쓴 것을 아무도 읽지 않아도 괜찮습니다. 당신을 위해 하는 것만으로도 많은 것을 얻을 수 있습니다.


아무것도 모르면 인정해라

애디 오스마니는 리더가 아무것도 모를 때 인정하는 게 중요하다 했으나, 리더와 팀원 모두에게 중요한 태도라고 생각된다..

코드를 작성할 때 내가 이걸 다 안다고 자만할 때가 있으나, 내가 아는게 틀릴 수도 있고 없어졌을 수도 있다. 

내가 이걸 안다고 다가가기 보단, 이문제를 어떻게 해결할 수 있을지를 고민하며 다가가야 한다.


불확실한 상황에서 결정을 내리는 것을 망설이지 말아라

코드를 작성할 때 불확실한 상황은 언제든 생길 수 있다. 하지만 모든게 불확실하다 해서 언제까지도 시간을 미룰 수는 없다.

모든게 불확실하다면 일단 결정하는 태도가 중요하다 결정하고 부딪힌 다음 경험을 쌓아 다음 단계로 넘어갈 수 있게 목표에 도달하기 위해 노력하다보면 불확실한 일도 어느정도 가능한 일로 만들 수 있을 것이다.

 

아니라고 말하는게 지나치게 일하는 것보다는 낫다.

우리는 언제나 열심히 일하길 원한다. 하지만 효율적으로 일을 하는게 더 중요하다고 생각한다.

내가 할 수 있는 일을 내가 객관적으로 파악하고 상대방과 일의 효율을 맞춘 뒤 다른 사람과의 협업을 통해 일을 제대로 끝마치기 위해서는

내가 하는 범위가 아닐 때는 할 수 없다고 말하고 상대방과 효율에 관해 논하는 태도가 중요하다.

 

내의견은 말하되 다른 의견이 있을 때마다 검토해라

우리의 의견을 강력히 옹호하되 이에 반하는 새로운 증거가 있을 때마다 검토해야 한다고 한다.

일의 효율성을 위해서는 항상 커뮤니케이션이 필수적인데, 그럴때마다 중요한 태도는 다른 의견이 어떤게 있는지 귀를 기울이는 것이다. 

문제를 어떻게 해결할지, 어떤 방법이 가장 좋을지에 대한 의견은 사람마다 갈리기 때문에 그중에 무엇이 가장 적합할지 생각하고 검토해야 한다.

 

시간은 유한하니, 더많은 시간을 구하려고 하기보단 불필요한 작업을 제거하자

모든것을 하려고 애쓰지 말자, 우리의 체력과 시간은 항상 유한하다. 모든 것에 에너지를 쏟으며 하게 된다면 금새 번아웃이 올 것이다.

중요한 것과 중요하지 않은 것을 나눠 어디에 얼만큼 체력과 시간을 배분할지 고민해봐야 한다.

 

 

그렇게 해서 가장 인상깊은 결론이 나왔다

"우수함으로 자신을 둘러싸고 최고의 사람들과 함께 일하십시오" - Brian Staufenbiel

 

배울 수 있는 사람들과의 우정과 관계에 투자하십시오. 그들의 지도, 멘토링, 성공 및 실패에 대해 열린 마음을 가지십시오. 도움이나 통찰력을 요청하는 것을 두려워하지 마십시오. 많은 경우에 그것은 단지 질문일 뿐입니다.

 


항상 도움을 받고 항상 통찰해야 한다 

무엇을 배울 때는 부끄러워하지 말고 호기심을 가지고 배워나가야 한다 그리고 배우고 싶은 사람에게 잘 알려줘야 한다.

그러다보면 배울 수 있는 사람들과 성장하고자 하는 욕구를 가진 사람들과 같이 있게 될 것이고, 

그 관계들은 인생에서 좋은 가치를 형성해주는 좋은 협력관계가 될 것 이다.

 

https://addyosmani.com/blog/software-engineering-soft-parts/

 

Software Engineering - The Soft Parts

Today I will share some of the software engineering soft skills I have learned from my first 10 years on Google Chrome, where I am a Senior Staff Engineering...

addyosmani.com

 

댓글