본문 바로가기
개발자가 되기까지

[개발자가 되기까지 5] 질문하는 개발자가 중요하다 - Reason why asking a question as a software engineer is important

by 생각하는개발자 2021. 10. 30.
반응형

안녕하세요, 생각하는 개발자입니다. 

 

한동안 제가 의도치않게, 그동안 포스팅이 뜸해졌는데요.. 그래도, 이번주부터는 하루에 적어도 한 포스팅을 하려고 합니다. 앞으로의 글들도 기대해 주세요:)

 

오늘은 도대체 software engineer들은 왜이렇게 질문이 많을까 라는 생각을 해보고자 글로 써볼까 합니다. 물론, 저의 말들이 100% 모두에게 정답이 아니기에, 무조건 받아들이시지 않으시길 바라겠습니다. 이 글은 순수히 저의 경험들이고, 그 경험들이 우리모두가 다르게 경험하고 느끼기에, "아, 저사람은 저런 생각과 경험을 했구나~" 정도로 받아들이시면 좋을 것 같습니다. 


대학생활 회고 -A Computer Science student at Office hours


도서관안에, 엄청 큰 유리창으로 보여지는 학교대표종

일단, 회사안에서 어떻게 질문을 할까? 라는 질문 전에, 제가 생각한건.. "내가 학교에서 어떤 질문들을 했는가?" 였습니다. 저는 일단, 미국 Purdue University를 Computer Science 학위를 받고 졸업했습니다. 전공이 전공인지라, 아무리 학교에서 교수님수업을 눈에 불을 키고 들어도, 분명 들었는데... 전혀 프로젝트를 하거나, 숙제를 할때는, 도대체 내가 배운 그 이론이 "그래서, 어떻게 되는거야?" 라는 질문을 정말 많이 했던 것 같습니다. 그래서, 항상 저는 Office Hours에 자주자주 가던 학생중 한명이였습니다. 저는 한국대학을 안다녀봐서, office hours이라는 개념이 한국대학에도 있는지는 잘 모르겠지만, 이 시간은 대학생이였던 저한테는 정말 중요하고 꼭 시간을 항상 보면서 다녔던 기억이 납니다. Office Hours은, 교수님부터 조교들까지 일정 날짜와 시간을 정해서 그 시간에 아무 질문이던지 할 수 있는, 일종에 "우리 (교수님들과 조교님들이)들이 이 날짜와 시간에 정해진 빌딩 혹은 오피스로 오면, 우리가 너희가 가지고 있는 질문들을 답해줄께" 라는 정해진 시간입니다. 저는 1학년때부터, 교수님들이 제일 많이 하셨던 말씀이, "프로젝트/숙제 제발 일찍 시작해서, 너희들이 질문이 있거나 하면은, 제발 office hours 가서 도움을 받아라" 라는 것이였습니다. "마지막까지 기다리지말구" 라는 말씀이셨죠ㅎㅎ 저는 항상 프로젝트를 받으면, 그걸 끝내는 시간이 굉장히 타이트하다는걸 알았기에, 먼저 읽고 또 읽고, 그리고 난 후에 제가 가지고 있는 질문들을 office hours가서 질문하고 했습니다. 이 시간이 정말 좋은게, 교수님과 조교님들하고 정-말 친한 관계를 만들 수 있다는 겁니다. 물론, 성적이랑 이분들이랑 친한거랑은, 그 어떤 benefit하나도 없습니다. 하지만, 그분들과 좋은 관계를 만들어서 나쁠 이유는 없습니다ㅎㅎ 오히려 가끔 안바쁠때에는, 굉장히 casual 한 이야기도 할 수 있기에, 저는 추천드립니다:) 생각해보면, 그때 정말 정말 저는 question killer였던 것 같습니다. 이해가 안되면, 안된다고 당당하게 말하고, 설명해 달라고 몇번이라 물어보는 그런 학생. 한편으로는, "왜 쟤는 이해를 빨리 못하지?" 라는 뉘양스로 교만한 조교들도 가-끔 있었습니다. 하지만, 대부분은, 특히 교수님들은 그런 질문을 자신의 시간을 더 내서라도 설명해주시는, 굉장히 좋으신 분들이십니다. 그래서, 저는 혼자 찾아봐도 잘 이해가 안되고, 누군가의 도움이 필요하고, office hours시간조차 날짜와 시간이 안되면, 교수님들에게 따로 이메일을 보내서라도, 궁금한 점을 물어보는 학생이였습니다. 미국에서는, 그런부분이 굉장히 자유롭기때문에, 그렇게 질문이 가능합니다. 그리고, 가끔은 수업 후에 교수님께 바로 물어보러 직진한 적도 많았습니다. 그러면, 교수님이 그 뒤에 수업이나 미팅이 없으시면, 충분히 그 시간에 질문을 마음껏 복도에서 할 수 있었습니다. 

 


미국 코딩 인터뷰 - Software engineering position coding interview


제가 많은 회사들과 인터뷰는 아니지만, 그래도 저의 FAANG (Facebook, Amazon, Apple, Netflix, Google) 인터뷰들을 봐보면, 한가지 중요한 특징이 있는것 같습니다. 물론, 정말 전 세계적인 회사들이고, 그 중에서 software engineer 포지션은 굉장히 중요하기에, 정말 매 인터뷰 라운드가 굉장히 까다롭습니다. 기본적으로 코딩실력은 당연한거고, 저는 거기에서 나아가 더 중요한부분은 바로 "Do you know how to ask a question?"이였습니다. 그 말은, coding interview 코딩인터뷰중에, 단순히 interviewee 가 주는 문제를 읽고, 바로 답을 찾아나가는것이 아닌, 먼저 내가 그 질문을 정말로 "이해" 하고 있냐라고 생각합니다. 그 질문을 받고, 수동적으로 질문을 듣고 바로 답을 말하는것이 아닌 (여기서 "답" 이라는것도 애매한 표현입니다, 왜냐면 coding interview에서는 항상 어떤 방법이 '정답' 이다 라는 것이 없기 때문입니다, 그렇기에 더욱더 이 사람은 이런 문제에 "어떤" 질문을 할 수 있는 사람인가 를 더 볼 것 같습니다), 어떻게 그 사람의 머리에서는 프로세스가 되고 있는지를 더 듣고 싶어하는 것 같습니다. 더욱이, FAANG 회사만의 문화가 아니라, 적어도 제가 여태컷 보았던 미국 회사들의 인터뷰들은, 항상 그 사람이 어떤 방식으로 문제를 풀고 다가가는지를 더욱  궁금해 했었습니다. 단순히 혼자서 하는것이 아닌, 결국엔 how are you going to communicate to your co-workers까지로 저는 연결되는거라고 생각합니다. 그렇기에, 만약 코딩인터뷰 중간에 "질문"을 안한다면, (다른말로, 인터뷰가 티키타카가 안된다면) 과연 어떤 지표로 그 사람을 고용할 수 있는지 아닌지를 판단하기 쉽지 않을 것 같다는 생각이 듭니다. 

어디든 갈 수 있다구!! ㅎㅎ


미국 회사에서의 경험 - Be curious and ask to the team!


제가 처음 아마존에 개발자로 입사했을때, 항상 매니저, 제 멘토, 그리고 저의 모든 팀이 했던 말이, "Ask any questions, although you think that's too stupid question to ask" 이였다. 저는 정말로 그 말을 무기로 삼았고, 정말로 질문킬러답게 엄청나게 많은 질문들을 했습니다. 물론, 무작정 모르는 것들을 바로 바보처럼 물어보는것은 아니였습니다. 나의 시간이 중요한만큼, 저의 멘토, 매니저의 시간들이 중요했기에, 제가 가지고 있는 질문들은 일단 모아두고, 제가 혼자서 찾을 수 있는 부분은 혼자서 해결하면서 배워나갔습니다. 하지만, 정말 team specific domain같은경우이고 만약 그에 대한 document가 잘 안되어있는 경우에는, 제가 스스로 오히려 그 document를 만들어서, 팀과 공유했습니다. 그렇게해서 저 이후로 들어온 인턴 혹은 개발자분들이, 더욱더 빠르게 팀에 적응하고 배울 수 있는, 오히려 더욱 긍정적인 효과를 만들어내기도 했습니다. 오히려 이런 경우에는, 우리가 가지고 있는 질문을은 대부분 비슷한 것 같다는 생각이 듭니다. 그렇기에, 잘 질문하고 또한 그걸 잘 정리해서, 모든사람들이 같이 visibility 를 가지고 있는것이 중요하다는것 또한 배울 수 있었습니다. 

질문을 마음껏 하자!! Amazing Grace! 


Software engineer로서 또 질문은 모든 상황에서 제일 중요합니다. 정말 많은 경우를 설명할 수 있는데요, 예를 들면 Stand-up 혹은 scrumm meeting때의 질문도 중요합니다. Scrumm leader가 각 개인의 엔지니어들의 필요한 부분이 무엇인지, any blocker는 있는지, 어떤 도움이 더 필요한지 혹은 프로젝트가 제 시간안에 끝낼 수 있는지 같은 질문들은 정말 매일 매일에 필요한 중요한 질문들을 할 줄 알아야 합니다. 또한, project planning 을 할 때에도 잘 질문하는것이 필요합니다. "왜" 이 프로젝트는 x 만큼의 시간이 필요한지, 왜 y만큼의 시간은 촉박한지, 등등 다른 팀의 도움 혹은 우리가 더 체크해야할 부분은 없는지 등, 더욱더 정교하고 중요한 질문을 하는 개발자 동료들이 필요한 이유입니다. 그렇게 critical 한 질문들을 해야지만, 더욱더 그 뒤에 올 가능한 이슈들을 미리 대비할 수 있기 때문이기도 합니다 (그렇다고, 항상 우리가 bug없이 코딩을 할 수는 없습니다, 그게 coding 그 자체이기 때문이죠). 그 많은 상황중 하이라이트는, 아무래도 design meeting이 아닐까 생각됩니다. 왜냐면, "Design"meeting 자체에는, 프로젝트에 대한 굉장히 abstract and ambiguous 한 부분들이 많기 때문입니다. X 라는 프로그램을 만들기위해, 어떤 data structure 를 사용할것인지, "Why a approach is better than b" or  "Why don't we consider z approach?" 등등, 개인이 생각하는 정도의 일이 아니라, 다른 senior engineer분들 그리고 매니저에게 더욱더 좋은 질문들을 받을 수 있기 때문입니다. 아직도 저의 처음 design meeting이 기억납니다. 굉장히 멘탈이 털털 털렸었죠. 그 1시간동안 내가 온전히 질문들을 듣고 답하고 대변해야했기 때문입니다. 하지만, 정말 그렇게 멘탈은 나가지만 재밌는 미팅이 또한 저는 디자인 미팅이라고 생각합니다. From Architecture to data structure, 굉장히 많은 양의 정보들을 알아야하고 설명해야하고 글로 써야하고, 그 디자인을 다시 시니어 엔지니어분들과 미팅안에서 승인이 나야하고, 그러면 또 많은 다른 세부사항들의 프로젝트를 설정하고 결정하고 해야하는 부분들이 많기 때문입니다. 그렇기에, 연차가 적건 많건, 질문을 하지 않는 엔지니어가 제가 일하는 곳에서는 적어도 없었던 것 같았습니다. "당연한걸, 넌 왜 몰라?" 가 아니라, "아, 이렇게 생각할 수도 있구나, 이런 방법은 어때?" 혹은 "이럴땐 어떡할꺼야?" 라는 질문들을 던지면서, 더욱더 디테일하게 그 프로젝트를 다같이 볼 수 있다고 생각합니다. 그렇기에, 질문없이는 절대로 일을 잘 할 수 없는 곳에 있었던 것 같습니다.

질문을 하는게, 중요한데 왜 질문을 안하는거지?


한국에서 개발자 인터뷰

제가 실은, 한국에 돌아온 후로, 딱 2군데에 직접 지원서를 넣고 인터뷰를 했는데요. 한 회사는 완전히 coding만으로 알고리즘을 보는 회사였는데, 솔직히 실망이였습니다. 일단, 그 회사가 보내준 링크는 IDE자체에 linkedlist, hashmap, hashset 등등 아에 사용이 불가능했습니다. 개인적으로, 그 방법이 아니라 실제로 그 회사에서는 int[][] 같은 방식으로 정말 코딩을 하는지 의문이였습니다. 그렇게해서, 제 시간안에 못해서 떨어졌다는 통보를 받았습니다. 개인적으로 저는 단순히 software engineer는 알고리즘을 잘 하는 사람이, 일을 잘 한다고 생각하지 않습니다. 아는것이 중요하지만, 모르면 찾아보고 그걸 "응용" 할 수 있는 그 skill이 중요한거지, 그 자체를 아는것은 그걸 "활용" 할 수 있다는것은 아니기에, 정말 그런방법으로만 사람을 뽑는다는것이 당황스러웠습니다. 그리고 다른 회사는, 면접인데도 coding interview를 하는것이 아니였습니다. 그냥, RESTful에 뭐가 있냐, Quick sort의 최악의 시간 복잡도는 무엇이냐 (근데, 그분이 말한게 오히려 틀렸습니다.. 제가 집에와서 구글해보니;;) 혹은 X 라는 상황에서 너는 어떻게 할 것이냐 이런 질문이였습니다. 굉장히 Open question이 아니라, closed question이여서 너무 실망했습니다. 그리고, 제가 질문을 받으면 "제가 이해한 질문이 x 라는 상황이 맞나요?" 라고 말한 후 "그럼 이런 상황은 어떡하나요?" 라고 물어보면, 제가 느끼기에는 "어, 왜 이사람이 내가 한 말을 이해못하지?" 라는 굉장히 무례함으로 인터뷰를 이어가셔서 당황했습니다. 제가 질문을 하면 "제가 물어보는거에만 대답하시면 되요" 라고 말하는걸 듣고는, 너무 실망했습니다. 저는 오히려 정말 그 회사들에 되지 않아서 너무 감사한 것 같습니다. 결국 인터뷰과정을 통해서 나와 맞지 않는 회사구나 라고 저한테도 확신을 주었습니다. 그렇기에, 앞으로 만약 한국에 조금더 지원해보고, 답답해지면 그냥 다른나라로 가서 일을 할까 합니다ㅎㅎ

국회의사당 앞.. 날씨 무엇ㅎㅎ


결론


저는 software engineer뿐만 아니라, 어떤 일을 할 때에도 질문을 망설이게 하는 곳이라면, 정말 그 곳에서는 새로움이 창조되고 창의적인 일들이 일어날 수 있을지는 의문입니다. 연차가 많건 적건의 문제가 아닌, 내가 정말 하는 일에대해서 관심을 가지고 있느냐 아니냐가, 결국은 질문에서 나타난다고 생각하기 때문입니다. 그렇기에, 모두가 자유롭게 자신의 질문을 해도 되는, 그런 곳에서 일하기를 바래봅니다:)

커피나 마셔야겠다ㅎㅎ

 

댓글