How to get experience as a software engineer

비결은 다음과 같습니다. 더 많은 문제, 더 많은 경험

제가 커리어 소프트웨어 엔지니어로 일하면서 관찰한 한 가지가 있습니다. 경험에는 지금길이 없다는 것입니다. 시간을 투자해야 합니다. 하지만 시간을 효과적으로 투자하여 풍부한 경험을 쌓을 수 있는 몇 가지 방법이 있으며, 이 글에서 그 방법에 대해 이야기해 보겠습니다.

경험은 어디에서 오는 걸까요?

어떤 사람들은 시간이 지남에 따라 점진적으로만 경험을 쌓을 수 있다고 생각하는 것 같습니다. X 회사에서 Y년 동안 일하다 보면 신비한 무언가가 생겨난다고 생각합니다. 이런 사람들은 “경험”이 부족하다는 이유로 유능한 엔지니어를 거절하는 실수를 저지르기도 합니다. 하지만 시간과 경험은 상관관계가 있지만, 시간이 엔지니어의 경력이나 특정 엔지니어링 역할에서 얼마나 잘 수행할 수 있는지를 알려주지는 않습니다.

“기술 경험”은 다양한 상황을 경험하고 그 경험을 통해 학습하여 향후 동일하거나 유사한 상황에 대한 자신의 대응을 개선하는 데서 비롯됩니다. “상황”을 다른 말로 표현하면 “문제”입니다. “경험 시간 투자”를 가장 잘 활용하는 엔지니어는 의도적으로 다양한 소프트웨어 관련 문제에 노출된 후 이를 극복하거나 해결책을 찾거나 구축하기 위해 열심히 노력하는 엔지니어입니다.

따라서 자신의 기술 경험 수준을 높이고 시간 투자에 대한 수익을 높이고 싶다면 “문제”를 찾아보세요.

어디에서 문제를 찾을 수 있나요?

원하는 경험의 종류에 따라 다르겠지만, 제가 겪은 경험을 통해 문제를 발견한 몇 가지 장소를 알려드릴 수 있습니다. 직장과 오픈소스. 대부분의 회사(물론 제가 일하고 싶은 모든 회사)에는 소프트웨어 문제가 끝없이 계속 늘어나고 있으며, 오픈 소스 커뮤니티에는 여러분이 참여하고 해결책을 찾을 수 있는 소프트웨어 문제가 있습니다.

그리고 제가 말하는 것은 “이봐요, 내 Github 문제를 분류하는 데 문제가 있는데 이 문제를 해결할 수 있는 앱을 만들어 주실 수 있나요?”라는 질문이 아닙니다. 이 문제는 해결하기에 좋은 문제이고 확실히 경험을 쌓을 수 있지만, 저는 더 낮은 수준의 문제에 대해 이야기하고 있습니다. 예를 들어 “이 라이브러리에 버그가 있어요.” 또는 “이 테스트가 엉성해요.” 또는 “앱을 배포할 때 500개의 오류가 급증합니다.” 같은 문제입니다. 이러한 종류의 문제는 곳곳에 존재하며, 무슨 일이 일어나고 있는지 파악하려면 코드를 자세히 살펴봐야합니다.

또 다른 방법은 개선하고자 하는 특정 도메인의 문제를 전담하는 사람이 되는 것입니다. 조직에서 ‘접근성 전문가’가 되고 싶으신가요? 조사를 좀 하고 회사 내부에서 강연을 하세요. 사람들이 질문을 하도록 초대하세요. 주제에 대해 더 많은 질문을 받을수록 더 다양한 문제를 접하게 되고, 더 많이 파헤쳐야 할 것입니다. 이것이 사이클입니다.