개인적인 여정
여정이 시작되다
20년 전 호기심의 불씨로 시작된 나의 여정. 그것은 컴퓨터 자체에만 궁금증을 갖은 것이 아니라, 인터넷을 통해 정보를 표시하는 마법 같은 것이 나를 사로잡은 거대한 퍼즐이었습니다.
당시 우리 학교에는 반짝이는 새로운 컴퓨터 실이 있었는데, 거기에는 우리에게 컴퓨터를 탐구하고 "코드"란 무언가를 통해 컴퓨터와 어떻게 소통하는지 가르쳐 주신 멋진 선생님이 계셨습니다. 그리고 믿을 수 없겠지만, 이 컴퓨터들은 명령에 따르고 화면에 그래픽, 팝업 창, 버튼을 만들었습니다. 나에게 그것은 든든한 게임보다 더 재미있는 일이었습니다.
컴퓨터에 대한 간단한 애정과 그들이 어떻게 작동하는지에 대한 관심은 몇 년 동안 나에게 더 커져왔어. 대학에서 대부분이 다른 학문을 선택하는 가운데, 나는 소프트웨어 엔지니어링과 컴퓨터 공학 분야에서 경력을 쌓기로 결심했어.
그 결정이 얼마나 많은 노력이 필요한지 곧 깨닫게 되었어. 전공은 학생들을 전기 공학 분야에서 전문가로 양성하는 것이 목적이었고, 컴퓨터 공학과 소프트웨어 엔지니어링 전공은 세 번째 해에만 이수할 수 있었어. 그 이후 세 해 동안, 나에게는 스스로의 역량과 지식을 쌓는 책임이 있었어.
첫 해 끝나는 삼개월 여가 기간 동안 프로그래밍 언어를 배우기 시작했어. 다른 친구들이 명실상부한 휴식을 즐기거나 인턴으로 일하느라 바빴던 반면, 나는 스리랑카 칸디에서 세 달간 자바 프로그래밍 언어를 배우며 자격증을 취득할 준비를 했어. 그 공백 기간이 끝나기 직전에 자격증 취득에 성공했어.
새로 습득한 기술을 가지고 대학으로 돌아간 것은 무한한 가능성의 세계로 들어간 기분이 들었어. 이 지식을 맛본 것은 더 배우고 싶은 열정을 불러일으켰어. 몇 달 후, Servlet과 JSP를 활용한 웹 애플리케이션 개발에 관한 책을 사서 스스로 학습에 몰두했어.
주말은 내게는 다른 느낌이었어. 친구들이 기숙사를 떠나 가족을 만나러 갈 때, 나는 일찍 일어나 차를 끓여 이 책들에 몰두했어. 각 페이지가 도전이었고 몇 페이지 이해하는 데 한 시간 이상이 걸렸어. 하지만 세상이 아직 잠든 채인 조용한 아침은 나에게는 학습과 성장의 성소가 되었어.
대학에 직업 자격을 얻으려고 가지 않았어요. 궁금증을 충족시키고, 작동 방식을 배우며, 평생 무언가를 잘하기 위해 공부하려고 했어요. 하지만 학위 과정은 그 목적으로 설계되지 않았기 때문에, 저는 자발적 학습자가 된 듯 했어요.
이 탐구는 저의 주말과 평일을 더 많이 차지하기 시작했어요. 한 때 흥미로웠던 전기 공학 강의가 이제 부담스럽게 느껴졌어요. 새로운 것을 만들고 배우는 것에 흥미를 느꼈기에, 코딩에 대한 열정과 학업 책임 사이에서 지속적인 싸움이 벌어졌어요. 이 두 세계 사이에서 균형을 찾는 것은 지속적인 도전이었어요.
이 학습과 성장의 시기는 제게 놀라운 특별한 능력을 가르쳐 주었어요: 알려지지 않은 것을 알려진 것으로 바꿀 수 있는 능력을 말이에요. 이것은 미스터리를 풀어내고 불확실성을 숙련으로 바꾸며, 자신감과 호기심으로 풀지 않은 지식의 광활한 풍경을 탐험하는 법을 가르쳐 주었어요. 이 능력은 제 나침반이 되어, 오늘에 이르기까지 앞으로 오는 도전과 발견을 안내해 주었어요.
인턴십
세 번째 해 말에는 산업에서 인턴십을 할 수 있습니다. 그러나 배치가 확정되기 전에 회사 면접을 보셔야 합니다. 저는 콜롬보에서 60km 떨어진 마을 출신이었는데, 그곳은 저에게는 낯선 곳이었습니다. 집에 돌아가서 자매로부터 엘리트가 사는 고급 지역 주소에 대한 지시를 받고, 이 면접을 보러 일찍 찾아간 버스를 탔습니다.
사무실은 향기가 너무 좋았지만 동시에 긴장도 했습니다. 분위기는 고급스러웠고, 콜롬보 외곽에서 온 아이들에겐 익숙하지 않은 분위기였습니다. 몇 명의 동기가 저와 함께 면접을 위해 준비를 하고 있었습니다. 그들도 제가 느끼는 섞인 감정을 가진 것 같아 보였습니다. 제 차례가 오자, 긴장한 채로 안으로 들어갔습니다. 한 선임 엔지니어가 따뜻하게 맞아주셨고, 대화가 시작되었습니다. 기초적인 질문부터 점차 복잡한 질문으로 나아갔습니다. 이 순간, 주말마다 열심히 일한 보람이 실리기 시작했습니다. 질문들이 이해가 되었고, 숨겨진 도전에 대처할 수 있었습니다. 이 응용프로그램들을 여러 차례 작성하고 재작성하면서 실패를 겪고 그로부터 배웠습니다. 그 경험을 통해 무엇이 잘못될 수 있는지, 그리고 무엇이 더 중요한지 알아가는 길을 배웠습니다.
몇 일 후, 대학으로부터 확정이 왔습니다 - 콜롬보의 주요 스타트업에서 첫 인턴십을 확보했습니다. 이 기회로 알지 못했던 문을 열 수 있었습니다. 리눅스를 제대로 사용하는 법을 배우게 되었고, 학교 시절의 클릭하여 실행하기만 하던 방식을 넘어갔습니다. 버전 관리 시스템, 유닛 테스트(소프트웨어 개발 방식을 혁신시킨), 활기찬 오픈소스 커뮤니티를 처음으로 알게 되었습니다. 나와 같은 사람이 지식, 재능, 기술을 통해 오픈 소스에 기여할 수 있다는 사실을 깨달았을 때 변화가 왔습니다. 나보다 더 똑똑하고 성공한 경력을 갖춘 사람들을 많이 만나게 되었고, 그들로부터 배울 점이 많았습니다. 이 인턴십은 제 전체 경력의 방향을 바꾸는 계기가 되었습니다.
프로젝트
한 해가 훌쩍 지난 후, 졸업 프로젝트로 내부 대학 프로젝트를 선택한 다른 사람들과는 달리, 나는 비슷한 마음가짐을 가진 동료들을 데리고 도전했다.
산업계에서 프로젝트를 가져와 보자는 아이디어를 내놓았다. 그들은 날 믿어주었기에 다시 Comlobo에 가서 내 인턴십 때 알던 몇 사람들을 만났다. 우리가 그들과 공동 프로젝트를 할 수 있을지 물어보았다. 다른 대부분의 대학들이 이 공동 프로젝트를 진행하는 것을 좋아했다.
매 학기 중간마다, 우리는 Galle에서 Colombo로 이동했다. 우리의 임무는 회사의 공동 감독자에게 진행 상황과 결과를 발표하는 것이었다. 우리는 아침 일찍 타서 세 시간 동안 지속되는 기차를 타고 갔다. 우리는 결과물을 선보이고 다음 단계를 논의했다. 대학으로의 귀향 여행은 잘 되었던 점과 잘못 되었던 점을 돌아보는 시간이었다.
일자리-도전-학습
첫 번째 단계
또 한해가 흘렀고, 우리는 프로젝트를 성공적으로 완료했습니다. 같은 회사에서 소프트웨어 엔지니어로 첫 직장을 시작했습니다. 놀라운 학습 경험이었습니다.
웨비나를 진행하는 기술을 배우고, 마케팅 기초를 이해하며, 사전 영업 및 사후 영업 통화에서 효과적으로 의사 소통하는 법을 배웠습니다. 릴리스를 관리하고 위기를 극복하며, 대학이 준비하지 않았지만 산업이 요구한 도전에 도전했습니다.
두 번째 단계
나의 여정의 두 번째 단계는 오스트레일리아에서 첫 직장을 얻으면서 시작되었습니다. 사람들, 문화, 업무 방식, 속어, 그리고 장난까지 모든 것이 완전히 새롭게 느껴졌습니다.
갑자기 시스템을 연결하고 보안을 유지하며 핵심 제조 환경을 지원하고 이해당사자를 업데이트하고 다른 소프트웨어 업체와 소통하는 등의 일들을 한꺼번에 처리하게 되었습니다.
이런 도전들은 엄청난 것들이었습니다. 네트워킹과 보안에 대한 내 지식과 기술 수준이 기대치를 만족시키지 못하는 것을 깨달았습니다.
대부분의 시간을 배우고 실력을 갈고 닦는 데 투자했습니다. 수많은 시간을 코딩하고 버그를 고치며 글을 읽고 Stack Overflow를 뒤적였습니다.
1.5개월이나 늦은 상태로 이미 지연된 첫 프로젝트를 완료하기 위해 팀과 함께 8주간 연속으로 일했습니다. 이 강도 높은 작업과 학습 기간은 제 커리어에서 가장 어려운 단계 중 하나였습니다.
기초로 돌아가기
3년 반 후, 첫 직장을 떠나는 시점에 나는 계속成長하기 위해 더 멀리 도전해야 한다는 것을 깨달았습니다. 그 당시에는 컴퓨터 과학의 기초 지식이 무딘 상태이고 같은 문제를 다른 방식으로 해결하는 것에 지겨움을 느꼈기 때문에 5주간 유럽을 여행하며 휴식을 취했습니다.
돌아온 후에는 일을 한 지 2개월 돼 쉬어야겠다고 결심했습니다. 이 기간 동안에는 케빈 웨인과 로버트 세지윅의 "알고리즘"에 몸담아 기초를 다졌습니다. 데이터 구조를 기반부터 코딩하고 GitHub 프로필에 공유했습니다. API 설계하는 법을 배우고, 강력한 시스템 구축하는 법, 캐싱 활용하는 방법, 그리고 API 보안의 기초를 이해했습니다.
"알고리즘" by Kevin Wayne and Robert Sedgewick
"The Pragmatic Programmer" by Andy Hunt and Dave Thomas
"Clean Code" written by Robert Cecil Martin
"Advanced API Security" by Prabath Siriwardana
These are a few books that really boosted my skills during a particularly intense period. They reignited my passion and helped me strengthen my abilities.
세 달이 지난 후, 나는 고객을 대상으로 하는 API를 구축하는 팀에서 페이스 페이즈된 디지털 뱅크에서 자리를 잡았습니다. 지금까지의 경력에서는 제가 제품에서만 일했거나 백엔드에서 깊숙이 일해왔습니다.
그러나 여기서는 프론트엔드 엔지니어, 모바일 엔지니어 및 사용자 경험 디자이너들과 함께 일했습니다.
새 팀의 마음가짐은 확연히 다르게 느껴졌습니다. 그들은 사용자 여정에 진심으로 신경을 쓰며, 다양한 연령층이 어떻게 우리 애플리케이션과 상호 작용하는지를 고려했습니다.
나의 동료들은 네트워크 대역폭 사용을 지나치게 싫어하며, 우리 고객을 위한 신중한 에러 메시지의 중요성을 강조했습니다.
사람들의 재정 거래를 다루다 보니 이러한 책임감이 더 커진 것 같아요. 은행 계좌에 문제가 생기면 매우 민감한 문제가 될 수 있습니다. 이 환경 덕분에 저는 공감, 정확성, 그리고 사용자들의 삶에 미치는 깊은 영향을 깨달았어요. 이런 환경에서 시스템을 설계하고 구현하는 데에는 세심함이 필요해요. 이곳에서 이루어지는 것들은 코드 작성과 시스템 구축과는 별개인 조심스러운, 외교적인 이해 관계자와의 협상이라는 것이죠.
이런 환경을 어떻게 다루어야 하는지 배우기 위해 저는
"Dale Carnegie의 "윈 친구와 영향력을 끌어내는 법"
으로 독서를 시작했어요.
"Negotiate Without Fear: Strategies and Tools to Maximize Your Outcomes" by Victoria Medvec
When I started exploring negotiation strategies, I stumbled upon Victoria Medvec's book "Negotiate Without Fear: Strategies and Tools to Maximize Your Outcomes." The insights shared in this book have been enlightening and empowering.
One hurdle I encountered was language barriers, particularly when expressing complex ideas in English as my second language. Despite being fluent in my native tongue, I found myself struggling to convey my thoughts effectively in English.
Victoria Medvec's book not only provided valuable negotiation techniques but also offered guidance on overcoming communication challenges. It's a must-read for anyone looking to enhance their negotiation skills and navigate language barriers with confidence.
그것을 깨닫고, 나는 Medium에 기술 콘텐츠에 초점을 맞춘 블로그를 쓰며 스킬을 향상시키기로 결정했습니다.
시간이 흘러 이 노력이 열매를 맺었습니다. 내 아이디어를 명확히 전달하도록 글쓰기에 노력하면서 동료들과 매니저들로부터 정기적으로 피드백을 받았습니다. 이는 다른 소프트웨어 엔지니어들도 향상시켜야 하는 품질 높은 문서 작성 능력을 키우는 데 도움이 되었습니다.
엔지니어링의 인간적 요소
복잡한 개념을 일반 대중에게 쉽게 설명할 수 있어야 진정으로 훌륭한 소프트웨어 엔지니어가 될 수 있다는 것을 배웠습니다.
효과적으로 협상하고, 어떤게 중요한지 이해하며, 기술적 의견에 직설적이면서도 예의를 갖춰야 합니다.
또한 다른 사람을 지도하고 진정한 인간 관계를 육성하는 법을 배우고 시간과 에너지를 투자하는 것이 중요합니다.
이러한 기술은 개인 및 전문적인 성장을 위해 필수적이며, 팀과 넓은 커뮤니티에 의미 있는 기여를 할 수 있도록 해줍니다.
Bitter Bits
야근 문화
소프트웨어 스타트업 문화의 일부는 종종 일주일에 60시간 정도 일하는 오랜 시간을 포함합니다. 이 속도가 어느 누구에겐 적합할 수 있지만, 다른 이에게는 도전적일 수도 있습니다. 저는 이 강도를 이끌어가는 높은 승부와 열정을 이해합니다. 그러나 우리의 인간적 한계를 인정하는 것이 중요합니다. 힘든 일과 웰빙을 균형있게 유지하는 것은 중요합니다. 제가 이 부분에서 어려움을 겪었었죠.
당직
이 기간 동안, 산업의 암울한 면을 접하게 되었습니다. 시스템을 구축하는 것은 어려울지만, 그것들을 운영 중인 상태로 유지하는 것은 더 복잡합니다. 이는 업무의 일부입니다. 개발한 시스템에 대한 당직은 당신이 가장 잘 알기에 공정합니다.
그러나 많은 비소프트웨어 기업들은 주말과 평일에도 연락이 가능하도록 요구하는 현장 교대근무제를 선호합니다. 저는 처음에는 보상 없이 이를 수락했습니다. 그러나 기술에 대한 자신감을 가지면서 커리어를 쌓을수록, 공정한 보상을 요구하기 시작했습니다.
추정
대부분의 비소프트웨어 기업들은 현실적인 추정을 소중히 여깁니다. 추정을 하는 것은 중요하지만, 이러한 기업들이 원하는 수준의 정확성을 달성하는 것은 어려울 수 있습니다.
계획과 마찬가지로 추정도 완벽하지는 않지만, 필요한 프레임워크를 제공합니다. 여러분의 참여 없이 다른 사람이 여러분을 대신하여 추정을 할 수 있습니다. 저는 자주 잘못 추정하는 편입니다.
코딩, 그 중요성과 더불어
여러 해 동안 코딩은 소프트웨어를 통해 문제를 해결하는 작은 부분이었으나 중요한 부분이었습니다.
복잡성은 사람, 프로세스, 재무, 규제 및 윤리적 측면의 복잡한 네트워크를 탐색하는 데 있습니다.
우리 작업의 진정한 도전과 예술은 이러한 요소들을 동적 시장과 예측할 수 없는 세계 안에서 균형을 맞추는 데 있습니다.
여정이 계속됩니다
소프트웨어 엔지니어로 이 분야에서의 여정을 시작한 지 13년이 지났습니다. 그 동안 엄청나게 많은 것을 배웠지만 더 배워야 할 것이 얼마나 많은지를 깨닫게 되었습니다.
이 분야는 끊임없이 발전하고 오늘 진실한 것이 내일은 구식이 될 수도 있습니다. 인공지능의 부상은 이 산업의 변화를 시사합니다. 그럼에도 성공적인 프로덕션 시스템을 구축하고 유지하는 복잡성은 계속해서 증가하고 있습니다.
프로그래밍이 더욱 접근하기 쉬워져 코드 작성이 루틴한 작업으로 변모했습니다. 그러나 사람들의 필요를 이해하고 그에 부합하는 시스템을 디자인하며, 이러한 시스템을 유지하는 사람들을 관리하고 이를 비용 효율적이고 지속 가능하게 만드는 것에 어려움이 있습니다.
인공 지능이 발전하더라도 인간의 손길은 대체할 수 없습니다. 공감능력, 혁신, 복잡한 문제 해결 능력이 우리 산업에서 중요한 역할을 하도록 합니다.
나는 희망과 탄력을 가지고 이러한 변화에 적응하고 받아들일 것이며, 나의 여정이 아직 끝나지 않았음을 알게 되었습니다.