6.1 커리어 단계
프로그래머도 자격에 따라 등급이 있습니다. 예전에는 "코더", "프로그래머", "해커" 같은 용어가 사용되었지만, 이제는 모두 미국 IT 명칭으로 전환되었습니다.
개발자는 6가지 주요 등급이 있습니다:
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- Tech Lead
- Principal Software Engineer
국가마다 약간의 차이가 있을 수 있지만 대체로 다음과 같습니다:
Intern Software Engineer — 인턴입니다. 이들은 프로그래밍을 배우는 과정에 있으며, 상업적 경험이나 대형 프로젝트 참여 경험이 없습니다. 보통 더 경험 많은 동료의 감독 하에 일합니다. 이들의 주요 업무는 코드 베이스와 소프트웨어 개발의 기본을 배우면서 간단한 코딩 작업을 수행하고 테스트에 참여하는 것입니다.
Junior Software Engineer — 이미 프로그래머지만 심각한 상업적 경험이 없거나 1년 미만의 경험을 가지고 있습니다. 더 경험 많은 개발자의 지시 하에 프로젝트의 일부분을 구현하고 코드 리뷰 사이클에 참여합니다. 이 단계에서 커리어는 기술 스킬을 심화하고 프로젝트의 과제를 이해하는 데 중점을 둡니다.
Middle Software Engineer (또는 단순히 Software Engineer): 기술적 결정을 내리는 데 더 많은 자율성을 가지며, 프로젝트의 중요한 부분을 책임지고, 덜 경험 많은 동료를 멘토링하기 시작하며, 아키텍처 논의에 더 적극적으로 참여합니다. 보통 2–5년의 실무 경험을 가지고 있습니다.
Senior Software Engineer: 복잡한 시스템 설계와 구현을 책임지고, 팀 내 멘토링과 리더십을 제공하며, 프로젝트의 전략적 계획에 참여하고, 종종 고객 및 다른 이해관계자와의 커뮤니케이션에서 팀을 대표합니다. 보통 5–10년의 경험을 가지고 있습니다.
TechLead: 기술 리더로서 프로젝트의 최종 기술 결과에 책임을 지며, 개발을 지휘하고, 가장 복잡한 문제를 해결하며, 기술 표준을 준수하고, 개발자의 활동을 조정합니다.
Principal Software Engineer: 가장 높은 기술 수준에서 일하며, 종종 회사의 기술 전략 수립, 혁신적인 솔루션 개발 및 기술 표준을 설정하는 데 참여하며, 기술 리더에게 주요 멘토 역할을 하고 복잡한 기술 문제에 대한 주요 전문가입니다.
대기업에는 추가적인 역할과 하위 역할이 있을 수 있습니다. 예를 들어, Google에는 다음과 같은 역할이 있습니다:
- Staff Software Engineer (L6): 자신의 부서의 기술 정책에 상당한 영향을 미칩니다.
- Senior Staff Software Engineer (L7): 대규모의 복잡한 프로젝트에서 일하며, 회사의 기술 개발의 전략적 방향을 설정합니다.
6.2 레고 제품
옛날엔 (1975년) 니클라우스 비르트, Pascal 언어의 창시자가 '알고리즘 + 데이터 구조 = 프로그램'이라는 책을 썼어. 그 이후로 많은 것들이 변했지.
현대 소프트웨어 제품은 10년 전과 확실히 다르고, 20년 전과는 더욱 다르지. 1975년은 말할 것도 없고: 그 때부터 50년이 흘렀어.
요즘 프로그래머는 더 이상 수작업으로 프로그램을 작성하지 않아. 오히려 준비된 부품(라이브러리)들을 사용해서 프로그램을 조립한다고 보면 돼.
현대의 소프트웨어 제품은 수십, 수백 개의 프로그램으로 구성될 수 있어. 그 중 일부는 사용자 컴퓨터나 모바일 기기에서 실행되고, 대부분은 데이터 센터의 서버에서 실행되지.
이들 중 많은 프로그램은 웹 서버나 데이터베이스와 같이 이미 작성되어 있어. 단지 제대로 구성해서 작동하게 하면 돼. 하지만 구성 과정이 점점 복잡해져서 실질적으로 개발이 되기도 해. 🤦♂️
프로그래머는 항상 자신과 싸운다. 비슷한 코드를 여러 프로그램에서 다시 작성하는 대신 라이브러리를 작성해서 필요에 맞게 구성(설정)하고 필요한 모든 곳에 간단히 연결해.
지난 20년 동안 프로그래머들은 아주 많은 라이브러리, 프레임워크, 오픈 레포지토리를 작성했어. 그 수는 실제로 수백만 개에 달해. 이제 모든 코드를 처음부터 작성하는 것은 예의가 아니야. 대신 검증된 솔루션을 모아서 프로그램을 만들면 돼 - 라이브러리, 프레임워크, 패키지, 모듈.
하지만 이런 접근 방식도 이제는 낡아가고 있어. 지난 10년 동안의 추세는 클라우드로의 이동이었지 - 당신의 프로그램이 필요로 하는 모든 것을 제공하는 거대한 데이터 센터들 말이야. 데이터베이스를 원하니? 선택할 수 있는 수백 개가 있어. 희귀한 웹 서버가 필요해? 나한테 있어. 당신이 원하는 모든 것을 돈을 주고 가져갈 수 있어.
6.3 "나는 엔지니어다" (c) 엘론 머스크
이제 복잡하고 지루한 것들을 작성할 필요가 없어. 멋지고 복잡한 기능이 필요할 때 항상 라이브러리가 있지. 그냥: a) 그것이 있다는 것을 알고, b) 필요한 것을 찾아(다른 품질의 유사품이 많이 있을 수 있음), c) 프로젝트에 통합하는 방법을 숙지하면 돼.
이런 접근 방식 덕분에 일은 더 재미있어졌어. 제품에 새로운 기능을 10배 더 빨리 추가할 수 있게 되었어. 30년 전에는 웹 서버가 필요하면 작성해야 했어. 20년 전에는 구매하고 설치하고 설정해야 했지. 지금은 "클라우드" 관리자에 들어가서 활성화하기만 하면 돼.
이게 바로 프론트엔드가 인기 있는 이유 중 하나야. 복잡한 백엔드는 이제 JavaScript와 Node.js를 사용해 작성할 수 있고, 클라우드 데이터 센터에서 다양한 서비스를 "활성화"할 수 있어. 프론트엔드는 이제 백엔드의 제한에 덜 의존하게 되었고, 완전히 새로운 차원으로 발전했어. 그의 인기를 보면 그 역할을 아주 잘 수행하고 있다는 것을 알 수 있어.
그리고 프론트엔드 개발자의 직업이 프론트엔드 풀스택 소프트웨어 엔지니어로 변모했어. 현대의 프론트엔드 개발자는 데이터베이스가 어떻게 작동하는지 이해해야 제대로 작동할 수 있어. HTML & JavaScript, NginX를 이해해서 프론트엔드와 백엔드의 작업을 조정해야 해. 심지어 Docker도 필요해 - 이건 이미 업계 표준이야.
현대의 개발은 20년 전에 비해 완전히 다르게 보입니다. 현대의 프로그래머는 전체 시간의 50% 이상을 코드 작성에 사용하지 않아요. 남은 시간은 문서를 읽고, 새로운 기술을 배우고, 회의에 참석하는 데 사용해. 혼자 일하는 프로그래머는 이미 과거의 것이야.
GO TO FULL VERSION