질문으로 시작하는 글은 또 처음인것같네요
오늘은 기존과는 다른 글을 한번 적어보려합니다
저는 iOS개발자를 꿈꾸고있고 본격적으로 iOS공부를 시작한지는 1년하고도 4개월정도지난 예비 개발자입니다
2022년에 1년간 Apple Developer Academy@POSTECH에서 공부를 했고 그해 여름즈음부터 본격적으로 iOS공부를 시작했습니다. 그리고 1년정도 되었을 2023년 여름, SOPT라는 동아리에서 활동을했고 많은 성장을 했으며 그렇게 2023년을 마무리했습니다
2023년의 개발자로서의 저는 참 많은 고민을 했었다고 생각합니다. 그 고민의 결과가 맞는지 틀린지는 모르겠지만 적어도 깊은 고민끝에 내린 결론이었다는데 의미를 두고 고생했다고 스스로에게 이야기해주고 싶습니다
2023년에 대한 회고는 짧게 마무리하고 이제부터는 2024년을 맞이하는 각오에 가까운 글이될것같습니다
2024년이 시작되고 다시 개발을 시작할때 약간의 불안감이 생겼습니다
나름 잘해왔다고 스스로는 생각하고 있지만 진짜 잘해온게 맞는걸까...?
2023년에는 이렇게 의심해본적이 없었는데 연말연초라서 그런지 모르겠으나 문득 이런 의문이 들었습니다
생각보다 이런 의심이 저같은 사람한테는 큰 흔들림으로 다가온다는걸 알고있으면서도 애써 부정하지못했던것같습니다.
주변에서 요즘 iOS취업시장이 얼어붙었다고 하니까 더 불안한거같기도하고 아무튼 그랬습니다
그런거있잖아요 내주변에는 다 나보다 잘하는 사람밖에 없는거같은 그런느낌...ㅎㅎ
혼자 공부하고, 정기적으로 교류하는 사람들은 스터디원? 혹은 같이 프로젝트팀을 했던 사람들밖에 없는 상황에서 조언을 해주실 분을 찾는다는건 현실적으로 어려울것같았습니다
제가 여행관련 책을 읽는걸 되게 좋아하는데 순간 예전에 읽었던 책의 한 챕터가 떠올랐습니다
어떤 내용이었는지를 간단하게 설명을하면
저자가 유럽여행을 하고있었는데 예전 부터 꿈꾸던 회사(디자인관련 유명한 회사였던것같은데 정확히는 기억이 안나네요 ㅎㅎ...)의 건물을 보고 그 앞에서 무작정 기다리면서 나오는 사람들한테 그 회사의 직원인지 어떤부서인지를 물어봤다고 합니다. 그러다가 디자인관련부서에서 일하는 직원을 만나게되었고 "제가 언젠간 이 회사에 다니고 싶은데 커피한잔하면서 이야기를 나눌수있을까요? 저는 한국에서 온 여행자 000입니다"라고 이야기를 했다고 합니다. 그 직원분이 흔쾌히 수락해주셨고 너무 흥미로운 대화를 했고 그 대화로 인해서 많은 용기를 얻었다고 하는 내용이었습니다
왜인지는 모르겠으나 과거의 언젠가 읽었던 책의 이 스토리가 갑자기 떠올랐습니다
차마 회사앞에서 기다리는건 못하겠고 face to face로 거절당하는건 아무리생각해도 좀 무서워서 좀 다른 방법을 생각해봤습니다
예전에 애플아카데미에서 linkedIn관련 세션을 들었던적이있었는데 그때 회원가입해놨던게 생각나서 무작정 linkedIn에 들어갔습니다
그리고 우선 제가 늘 꿈꾸던 회사의 개발자분들을 무작정 찾기시작했습니다
그리고 뭔가 설명할수없는 직관과 이끌림으로 개발자한분의 계정에 들어가게 되었고 정말 어떻게 해야 최대한 정중하게 커피챗을 요청할수있을까를 몇시간을 고민하면서 한글자한글자 신중하게 저의 상황과 어떤 이유로 커피챗요청 메세지를 썼습니다
그렇게 메세지를 개발자분께 보내고 답장을 기다리는데 이런 경험이 처음이라 정말 별의별생각을 다했던것같습니다. 기다리면서 평정심을 찾겠다고 유명한 거절당하기에 관한 TED영상을 몇번 돌려봤던것같습니다(너무 좋은 영상이니 링크를 달아놓겠습니다 ㅎㅎ)
너무 감사하게도 흔쾌히 커피챗을 수락해주셨고 카페에서 만나뵙고 제가 하고있는 고민에 대한 이야기, 개발에 대한이야기, 개발자에 대한이야기등 너무 다양한 주제로 대화를 나눌수 있었습니다. 커피챗을 통해서 정말 흥미로운 대화를 나눴던것같습니다. 정말 최근 1년을 돌아봐도 가장 의미있는 시간이었다고 생각합니다
대화를 하면서 스스로 해왔던게 틀리지 않았구나
라는 위로도 받았고 한편으로는 너무 시야가 좁아져있었구나
라는 반성도 할 수 있었습니다 그리고 앞으로 어떤 개발자가 되고싶은지에 대한 지향점이 조금 명확해지기도 했습니다
커피챗을 하고 돌아오는 길에 서점에 들러서 책을 고르면서 저는 생산성
이라는 단어에 꽂혀서 여러 생각들을 했던것같습니다
지금까지 했던 추상화, 여러 디자인패턴, 아키텍처, 모듈화에 대한 고민까지 모든게 생산성을 고려하지 않은 고민들은 아니었던것같습니다. 하지만 그게 정말 팀의 생산성을 높여줬을까를 생각해보면 스스로 차마 그렇다고 말할수가 없었습니다
예를들어서 추상화를 하다보니
너무 코드점핑이 심해져서 뭐 하나 만들려해도 만들어야할 파일이 많아졌고
간단한기능하나 구현하는데 전체 흐름을 다알아야하고
각 과정에서 모든 추상화된 프로토콜을 다 만들어야했습니다
그런데 추상화를 하게되면 장점이라고 이야기하는 확장성과 유연성을 느꼈던 경험은 못느꼇던것같습니다
(한 군데 정도 있었던거같은데 따지고보면 그건 다른 부분의 추상화였던것같아요)
추상화라는 개념자체는 분명히 장점을 가지고있지만 반대로 단점도 가지고있습니다(완벽한 이론은 없으니까요) 근데 그 장점을 보고 적용을 했는데 장점은 거의 느껴보지도 못하고 단점만 주구장창 느끼고 있었습니다
오죽하면 과한추상화가 이런 문제를 가지고있구나...추상화 그만해야겠다라는 생각을 하기도 했으니까요
근데 그 과한 추상화된 구조를 못버렸습니다
그럼에도 불구하고
맞다고 생각했으니까요
다만 우리가 장점을 못느낀건 우리 프로젝트가 뭐 기능추가를 안해서그런거겠지
, 만약에 기능이 이렇게 추가된다면 이 추상화는 분명히 빛을 발할거야
라는 생각을 확장성
이라는 아주 이쁘장한 포장지로 감싸면 뭔가 그럴듯해보여서 장식장에 두는 이쁜 장식품처럼 스스로 뿌듯함과 효능감을 채우기도 했던것같습니다
비슷한 기능이 있거나 이런기능이추가될거야하면서 인터페이스를 만들고 메서드를 따로 빼는 과정이 제딴에는 명확한 발전
혹은 좋은 코드로의 리팩터링
이라고 생각했습니다
https://velog.io/@gomjellie/The-Wet-Codebase (촉촉한 코드 건조한 코드 링크)
위 링크는 제가 이틀전에 읽었던 글인데 이 글의 내용과 커피챗을 하면서 대화했던 내용들을 곱씹어보면 그 동안 비슷한 기능을 하는데 메서드로 안빼거나 추상화가 안되어있으면 괜히 좋은 코드가 아닌거같은 느낌이 들었던것같습니다. 그러다보니 공통된부분을 빼거나 추상화하는것이 무조건적으로 좋다!
라는 좀 위험할수있는 생각을 가지게되었다는 사실을 깨달았습니다
진짜 이 세상엔 다양한 명제가 있지만 미래는 예측할수없다
라는 명제는 언제나 참이라고 생각합니다
같은기능이라고 묶은 저 프로토콜과 메서드가 언제나 완전히 동일할수있을까요? 그럴수도있지만 당연히 아닐수도있습니다 그건 아무도 모릅니다
오히려 나중에 같은 기능인줄알았는데 진짜 하나가 약간만 바뀌어서 같이 뺐던 판단이 틀린 판단이 될수도있고 그 부분을 보수하는데 더 많은 시간이 걸릴수도 있습니다(aka if문 천국...?)
실제로 기능의 요구사항이 전달되고 나서 변경해도 늦지 않고 오히려 그렇게 수정하는게 미래를 예측하지못하는 인간인 우리가 할 수 있는 최선의 변화의 대응하는 방식이라는 생각이들었습니다
그렇게 이런저런 생각을 하다보니 어떤 개발자가 되고싶은지 윤곽이 잡히기 시작했습니다
맡은 기능을 지금 내가 할수있는 최대한의 좋은 코드로 만들어 가능한 빠르게 시장의 평가를 받게하는 개발자
결국 개발자는 어떤 문제를 해결하기 위한 프로덕트를 만드는 사람이라고 생각합니다. 그런 의미에서 내가 작성한 코드의 의미는 전적으로 사용자에게서부터 비롯되어 온다고 생각합니다
내가 혹은 팀이 작성한 코드가 의미있으려면 사용자가 사용해야합니다. 그렇기때문에 좋은 코드퀄리티를 유지하면서(그렇다고 기능구현하는데 빠르게 하겠다고 가독성도 좋지않고 문제가 많이 발생할 요소가 뻔히 많이보이는 코드는 작성하면 안되겠죠) 빠르게 구현할수있는 실용주의 개발자
를 지향하고 싶다는 생각이 들었습니다
그러기위해
1. 내가 마주한 문제를 좋은 코드로 풀기위한 고민을 하는것
2. 문제를 해결할 수 있는 많은 도구를 내것으로 만드는경험을 하는것
3. 나와 팀의 생산성을 떨어뜨리는 요소가 있는지를 고민해보고 어떻게 해결할지에 대한 고민을 하는것
4. 덜어내야할 것과 그럼에도 불구하고 포기하면 안되는 것에 대한 명확한 기준과 이유를 고민하는것
이 네가지가 실용주의 개발자
를 지향하게된 제가 2024년에 해야할 일이라고 생각했습니다
물론 좋은코드는 어떤 코드일까에 대한 스스로의 답을 찾아가는 과정도 필요하겠죠 ㅎㅎ
(어쩌면 이건 평생 찾아야하는게 아닐까라는 생각도 드네요)
2024년 1년동안 아마도 지금하고 있는 프로젝트는 계속진행하게될겁니다
사람일이 어떻게 될지는 모르지만 새로운 팀에 들어갈수있는 기회가생기고 운이좋아서 합류하게된다면 또 다른 프로덕트를 만들게되겠죠
그렇다고 했을 때 분명히 팀의 생산성 측면에서 개선할수있는 부분을 분명히 찾아낼수있을거라고 생각합니다
그 부분을 발견하고 해결할수있는 방법을 찾고 적용시켜서 팀전체의 생산성을 높이는 경험을 해보고 싶습니다
그리고 그 기록들을 꼭 자세하게 남겨놓고싶습니다
2023년에 가장 잘했던일을 하나 뽑으라면 꾸준히 글을 하나씩이라도 써나아갔던것이라고 생각합니다
그렇게하다보니 1년동안 100여개의 블로그글이 쌓였더라고요ㅎㅎ
모르겠어요 취업의 관점에서봤을때 블로그라는게 약간의 꾸준함? 성실함?의 척도는 될수있지만 저는 뭔가 그런의미보다는 내가 쌓고있는 고민의 흔적들이라는측면에서 저에게 더 큰 도움이되었던것같습니다(적어도 2023년에는말이죠)
그래도 내가 많은 고민을 했고 정리했구나
라는 그 생각 한번이 참 많은 위로를 해줬던거같아요
그래서 올해도 일주일에 2개정도는 글을 쓰면서 200개의 글을 채우는걸 목표로 한번 꾸준히 블로그포스팅을 진행해볼 예정입니다
그리고 올해 6월에 글또라는 개발자 글쓰기 모임이 10기로 마지막활동자를 모집한다고 하더라고요
저는 글또라는걸 저번달에 처음알게되었는데 다행히 마지막기수에 지원할수있는 기회가 한번 남아서 꼭 지원해서 활동을 해보고 싶습니다
작년에는 오브젝트라는 책을 읽었었는데 그 책에서도 정말 새로운 인사이트를 많이 얻었던 기억이있습니다
근데 제가 그 책만 읽고 알게된 내용을 무작정 믿다보면 오히려 시야가 좁아질수있을것같다는 생각이 어제 커피챗을통해서 알게되었던것같습니다
그래서 조금더 다양한 개발서적을 읽고싶다는 생각이 들기도했습니다
물론 정말 지식을 습득할수있는 서적들도 있는데 이런건 정말 공부의 용도로 읽겠죠
하지만 지금 제 책상에 있는 실용주의프로그래머 혹은 내 코드가 그렇기 이상한가요같은 책들은 저에게 고민할 주제들을 많이 던져주는, 다양한 인사이트를 제공해줄수있는 책들이라고 생각합니다
그래서 올해 3달에 한권정도해서 4권정도는 읽고 기록해보고 싶습니다
어떤개발자가 되고싶냐는 질문에 지금까지는 좋은개발자
라는 대답을 해왔던것같은데 2024년에는 생산성을 고민하는 개발자
가 되고싶다는 답변을 할것같습니다. 물론 2025년의 저는 어떤개발자가 되고싶어할지는 모르겠네요
적어도 올해는 지금의 제가 되고싶은 개발자가 되기위해서 노력해보려합니다
그게 맞는지 아닌지는 가봐야하는거니까요
이 글은 제가 흔들릴때나 동기부여가필요할때 꺼내읽을 글이 될거같네요
혹시나 우연히 이 글을 읽게되신분이있다면 새해복 많이받으시길바라겠습니다:)
그럼 20000!
안녕하세요 cancellable 관련 글 읽다보니 애플디벨로퍼아카데미 선배님이셔서 댓글 남깁니다 ㅎㅎ
저는 2기 수료하고 취업준비중인데 cancellable 글만 읽어보아도 이해도가 엄청 높으시다고 생각했습니다..
올해 꼭 원하시는 바 이루길 바라고 화이팅입니다!