아이가 보드 게임을 선물로 받아왔는데 설명서가 글로 빼곡하다. 규칙을 이해하기가 쉽지 않다. 주말에는 머리를 좀 쉬고 싶다. 다른거 하면 안되겠냐고 몇 번 양해를 구하고 돌아 섰는데 오늘은 첫째가 실망한 얼굴을 하고 있음이 느껴져 물어보니 정말 하고 싶단다.설명서를 다
새로오신 분에게 Netty 프레임워크에 대해 설명해 주는 시간이 있었다. 분명히 스스로 잘 써왔는데 막상 설명을 하고 질문에 답변을 하려니 분명하게 모르고 있는 부분 많았다. 그 분에게 설명하려고 애쓰다 보니 나의 지식이 분명해 짐을 느낀다. 독자가 있는 것은 학습에서
한 창업자의 강연을 들었다. 요즘 아침에 일어나면 회사에 빨리 가고 싶어 설레인다고 했다. 그가 엄청나게 열정 넘치는 사람임을 안다. 부럽고 멋있었다. 그러나 나는 오히려 스스로 앞으로 경계하야 할 조언으로 삼는다. 혼자 설레지 말아야지, 함께 설레는 조직을 만들어야지
내가 작성한 코드를 다른 사람에게 설명하기 위해 다시 들여다 보고 있다. 꽤 유익한 경험이다. 나는 주석을 잘 달지 않는 편인데 가능하면 코드를 읽고 의미가 드러나도록 노력하기 위해서 그리고 코드에 드러난 의미를 다시 주석으로 다는 중복을 피하기 위함이다. 그런데 내
작년에 기록해 두었던 트러블슈팅 관련 글들을 다시 읽어보고 있는데 코드를 함께 기록해 두지 않은 글들은 내가 뭘 한 것인지 나도 이해하기가 힘들다. 항상 문제 코드와 해결한 코드를 같이 기록하는 습관을 들여야겠다!
코딩테스트 연습하듯 현업의 코드 작성을 해보았다. 주석으로 문제를 쪼개서 단계적으로 접근하니 복잡한 문제가 쉽게 보여서 좋았다. 그러나 확실히 다른점은 현업에서는 문제 자체와 오늘 해결할 문제의 크기를 스스로 정의해야 한다는 점에서 많이 다른 것 같다. 오늘 문제를 조
어떤 제약으로 클래스에 some1, some2, some3 처럼 List 없이 쭉 펼쳐진 멤버들이 있었는데 루프를 돌 수 없어 괴로웠다. 현업에서 Reflection을 제대로 사용해 본적이 없었는데 getMethod("some"+index).invoke(...)와 같이
한 두달 내가 작성한 코드와 일들을 공유하기 위해 정리하고 문서화해서 가르쳐주는 일을 반복하게 될 것 같다. 신기한게 일주일 정도 했는데 업무에 만족도가 꽤 높다. 어디 이런 일은 없나 모르겠다.
인수인계를 진행하며 배우는게 많다. 내가 잘 알고 있다고 느끼던 지식을 다른 사람(특히 완전 초보자)에게 가르쳐 주기 위해 고민하고 설명하다 보니 지식이 훨씬 견고하고 확실해 짐을 느낀다. 이 보다 더 좋은 배움의 길이 없다는 생각이 든다. 뿐만아니다. 오늘은 내가 쓰
익스트림 프로그래밍이라는 책을 작년에 부분부분 읽었다. 몇 장 읽지 않은 책의 내용 중에 "위기를 기회로 바라보라"는 말이 요즘 자주 맴돈다. 다들 위기라고 하는데 기회로 바꾸어 바라보아야지! 이 말이 다만 말이 아니라, 약간의 확신으로 다가온 이유는 내 삶의 작은 단
부하 테스트란 걸 처음 시도해 보았다. 일단은 내 컴퓨터에 있는 CPU 코어들을 풀로 활용해서 2048개의 클라이언트를 CompletableFuture를 사용해 최대한 동시 접속 처럼 되도록 시도해 보았다. 생각해 보니 그래 봤자, 동시에 실행되는건 코어수 정도고 나머
파일 다운로드 클라이언트의 REST API를 구현해 기존에 구현한 코어 파일 클라이언트 모듈과 연결했다. 그리고 RestAssured를 사용해 통합 테스트를 간단히 작성해 보다. 처음에 러닝커브만 넘어서니 개발이 정말 쉽고, 테스트도 간편했다. 나의 첫첫첫 경험들.그리
오랜만에 하루 종일 내 책상에만 앉아 프로그램을 설계하는 일을 할 수 있었다. 이틀간 쓴 휴가 때문인지 마음이 많이 차분해져 있었고 복잡한 머리도 한 결 가벼워져 있었다. 예전에 임베디드 시스템에 소프트웨어 업데이트 도구를 개발했던 경험이 생각나는 하루다. 예전에 해봤
오늘은 신입사원으로 지원한 분의 면접이 있는 날이다. 면접 질문을 미리 준비하지 못해 면접 직전까지 질문 목록을 정리한다. 면접을 준비하는 시간도 데드라인이 있으니 불필요한 질문들은 신속히 버리고 정말 묻고 싶은 질문만 남기게 된다. 하루 전에 여유롭게 준비했다면 꼭
계속해서 면접이 잡혀있다. 오늘은 미국에 있는 대학교에 다니는 3학년 학생의 인턴 포지션에 대한 면접이 있었다. 잠시 대화를 나눠보며 아주 훌륭한 엔지니어 같다고 느껴졌다. 고등학교 때 친구들과 창업을 한 경험이 있었고 학교에서 교과 과목도 매우 우수한 성적으로 패스하
연차를 쓰고 이직 기간 자주 오던 도서관에 오랜만에 왔다. 괜찮은척 했지만 괜찮지 않았던 그 시절의 불안한 감정이 새록새록 떠올랐다. 다행이다. 내일이면 돌아갈 회사가 있고, 내게 일이 있고, 정해진 시간에 어김 없이 들어오는 월급도 있다. 아무 이유 없이 회사가 있다
C++ 이라는 언어를 오랜만에 다시 접한다. 2024년에 접한 C++은 내가 10여년 전 접하던 것과는 많이 다른 느낌이 든다. 언어적으로 많은 부분 발전한 것 같다. 오늘은 객체지향의 다형성으로 해결할 수 없을 것 같은 다소 어려운 문제를 만났다. 코드가 동일한 구조
큰 불확실성과 어려움을 안고 회사 일을 한다. 회사이기에 온갖 역경이 있어도 어떻게든 일을 밀고 나가야만 한다. 이렇게 하면 완벽하지 않더라도 어떻게든 일이 되어지곤 한다. 개인적으로 하는 일은 조금 다르다. 불확실성과 어려움을 마주하면 안되는 것으로 쉽게 생각하게 된
이제 정말 코드로 제품을 개발하는 일에 집중할 때가 온 것 같다. 이제 무엇을 구현하면 되는지 많이 확실해 진 느낌이다. 그 동안 우리가 의존하는 것들이 가진 많은 불확실한 것들을 확실한 것으로 만드는데 혼신의 힘을 다했다. 스케치를 하듯 여러번 반복해서 질문을 하다보
엉뚱한 얘기를 하는 협력사를 질책하고 싶은 마음이 든다. 그런 그들에게 아무런 대응도 하지 않는 우리 내부의 사람들이 답답하고 도리어 무책임하게 느껴진다. 이 회사에 오고 존경하는 마음이 들었던 한 분이 있다. 부정적이고 어려운 상황에서 온화함을 잃지 않고 침착하게 일
대화가 잘 통하고 함께 원활히 협력하며 일해온 동료가 슬랙으로 일과 관련된 질문을 해온다. 그가 하는 말이 무슨 말인지 잘모르겠다. 어떻게 답을 해야할지도 잘 모르겠다. 텍스트로 다시 내가 모르는 것과 너의 의도를 묻자니 쉽지가 않다. 그래서 잠깐 보자고 하고 휴게실에
요즘 아주 척박한 일정 속에서 처음 만들어 보는 신비로운 제품을 만들고 있다. 실패할 것을 각오하고 도전하는게 진짜 스타트업 같기도 하다. 촉박한 일정, 처음 만들어 보는 제품, 오랜만인데 진화해 있는 C++ 언어 덕인지 내 걸음이 한치 앞을 내다볼 수 없는 안개 속을
때때로 프로그래밍은 벽돌을 쌓아올리는 듯 지루하고 고통스러운 작업이 된다. 무슨 재미와 즐거움만 있기를 기대했다면 오산이다. 일이란 때때로 그런 것들을 참고 해나가는 것이다.
결과적으로 설명의 흐름을 정리한 몇 줄의 메모와 코드만 있으면 되는 거였다. 동료에게 내가 작성한 코드를 설명하기 위해 UML까지 꺼내들었던 걸 보면 과한 솔루션을 상상했었던 것 같다. 프로그래밍은 이렇듯 현재의 제한된 시간과 자원 안에서 정말 할 수 있는 최선의 것을
제품을 X축, Y축, Z축으로 각각 흔든다. 어떨 때는 눈에 보일 정도의 떨림을 주면서 흔들고, 어떨 때는 진동으로 인해 고주파 소리는 나지만 눈에는 거의 보이지 않을 정도의 흔들림도 있다. 소프트웨어 분야와 마찬가지로 여기도 흔들림이라는 외부 요인을 잘 입력하는 것만
회사에서 다른 사람에게 구애 받지 않고 온전히 내 의지대로 행동할 수 있는 일은 많지 않은 것 같다. 많은 것들이 연결되어 있고 일은 뜻하지 않게 일어난다. 최근에 약간의 스트레스를 받는 나를 위해 점심 식사를 혼자 해보자고 스스로에게 제안하게 되었다.배민으로 먹고 싶
sftp를 사용해 1Gbps 네트워크에서 대용량 파일을 전송하는데 50Mbps 속도가 나온다. 우리만 사용하는 로컬 네트워크라 다른 부하는 없다. 우리는 제한된 전력을 사용함으로 미션 시간 제한이 있는데 이 문제로 인해 파일 크기 제한이 생겼다.문제를 조금 더 분석해
다른 사람이 만든 코드와 내가 만든 코드를 한 제품 안에 어우러지게 만드는 일은 쉬운 일이 아닌 것 같다. 특히 스프링 같은 정돈된 규칙을 가진 프레임워크 없이 순수 프로그래밍 언어로만 개발하고 있다면 더더욱 그런 것 같다.서로의 다름을 빨리 알아서 다행이라고 생각한다
특정 기능을 구현해야 하는데 실시간 요구사항이 있다. 사용자가 요청한 시간과 실제 응답한 시간이 얼마 시간 내에 들어와야 한다고 한다. 우리는 일반 리눅스를 쓰고 있어서 달성이 불가능하다고 판단하고 설명했다. 그런데 가만히 듣고 있던 동료 한 명이 최신 리눅스 버전에
프로젝트에서 만나는 불확실성이 싫다. 싫은데 늘 내 곁에 있어서 아침에 너무 싫다 싫다 혼잣말을 했다. 잠시 생각을 정리하며 이 불확실성을 묵묵히 황소처럼 뚫고 나가는 사람이 되어야 겠다고 생각했다. 오후가 되고 이리 저리 노력한 덕분에 불확실한 것이 확실한 것이 되었
대학생 때 처음으로 의사코드(Pseudo Code)란 것을 접했다. 시스템 프로그래밍 수업에서 였던 것 같다. 컴파일러, 링커, 로더 같은 프로그램들이 어떻게 동작하는지 의사코드로 교과서에서 설명하고 있었다. 오늘 여러 모듈이 상호작용하며 시간 동기화를 이루고 미션을
여러 사람들이 시간지연 문제에 모여들어 해법을 내놓는다. 여러가지 기법들이 검토되고 있는데 다들 문제가 뭔지 놓치고 있다는 생각이 든다. 모두 각자의 전문 분야와 관련된 부분적인 해법에 포커스를 맞추고 있다. 문제로부터 시작하고 전체를 아우르는 가장 경제적인 해법이 필
원하는 시간에 특정 지역을 정확히 촬영해야 한다. 이를 위해 시스템의 시간 정밀도를 높이기 위한 여러 방법을 오랫동안 고민한다. 그러던 중 한 가지 간단한 대안이 있다는 것을 알게 된다. 정밀함을 포기하고 앞 뒤로 여유롭게 촬영을 하면 큰 범위 안에는 그 지역이 항상
면접관으로 참여해서 사람을 뽑고 뽑은 사람과 일해보는 경험을 쌓다 보니, 내가(우리가) 취해 온 면접 프로세스(단순히 경력이나 기술 요소에 대해 질문하는 방식)로는 정말 사람을 제대로 알 수 없다는 생각이 든다. 그런 방법으로 뽑은 사람 중에는 정말 멋지다 생각했는데
소프트웨어 공학을 공부하면서 분석이라는 단어의 뜻을 한자로 찾아본 적이 있다. 나눌 '분' 쪼갤 '석'자다. 나누고 쪼개어서 내가 만들 시스템은 무엇으로 구성되고, 어떻게 동작하는지 점점 자세히 이해해 나가는 과정이 분석이라고 생각했다.분석하는 능력은 겉으로 잘 드러나
새로운 프로젝트를 시작하며 일정을 조율한다. 몇 주 지나지 않았는데 여러 사정으로 일정이 고무줄처럼 늘었다 줄엇었다 한다. 문득 올해 마무리한 이전 프로젝트가 생각난다. 처음에 3월에 일이 끝나야 한다고 달렸는데 다 달리고 보니 일이 10월이 되어있었다.생각하는 일정에
생각을 남이 이해할 수 있게 문서로 남기는 것이 곧 설계라는 생각이 든다. 의논했던 것과는 조금 다른 설계 문서에 대한 피드백을 주고 고치는 과정을 반복하니 이제 됐다 싶은 순간을 맞이한다. 이 문서와 관련된 사람에게 변경사항에 대해 설명도 해주는 것으로 일을 마무리한
프로젝트를 진행하다보면 피치 못할 변경의 요구를 맞이한다. 리더로서 이 사실을 동료들에게 알려야만 하는데 변경에 유난히 거북하게 반응하는 동료가 있다.아마도 자신도 그런 자기를 잘 모르는 것 같아서 피드백을 줬다. 우리가 처음부터 모든걸 완벽히 예상하고 만들지 못하기
사람이 성장하는데는 자유가 필요함을 느낀다. 코드도 내 마음대로 바꿔보고 이게 좋은지 나쁜지 경험해 봐야 성장할 수 있는 것 같다. 지나치게 선배의 가이드 안에서만 개발하게 해서는 성장이 어렵겠다. 뒤돌아보면 나에게도 이런 자유가 있었고 나는 그 안에서 성장했다. 다만