그야말로 주관적인 글이니 판단은 각자가...
대 개발자 시대가 온 것인지, 시국을 떠나서 개발자를 찾는다는 취업 공고는 여전히 활발하다.
이런 공고의 홍수 속에서도 신입으로 들어가는 사람이나 경력으로 들어가는 사람이나 각자 목표로 하는 회사가 있을텐데, 채용 조건을 자세히 들여다보면 미묘하게 분류된다는 것을 알 수 있다. 한 번 들여다보면...
LinkedIn에서 가져온 회사 A의 Job description이다.
[Minimum Qualifications]
- Bachelor's degree in Computer Science or equivalentpractical experience.
- 8 years of experience with one or more general purpose programming languages including but not limited to: Java, C/C++, C#, Objective-C/Swift, Kotlin, Python, JavaScript, or Go.
- Ability to speak and write in English fluently and idiomatically.
[Preferred Qualifications]
- PhD in engineering, computer science or other technical field.
- Experience architecting and developing solutions to ambiguous problems.
- Experience working with two or more of the following: web application development, Unix/Linux environments, mobile application development, distributed and parallel systems, machine learning, information retrieval, natural language processing, networking, developing large software systems, or security software development.
- Experience developing accessible technologies.
- Ability to learn other coding languages as needed.
요구하는 기술에 대해 명시해놓긴 했지만, 상당히 포괄적이다. 필요한 프로그래밍 언어 조건도 'not limited to'라는 단서가 붙어있고, 경험한 업무 분야에 대해서도 다양한 분야를 기재해 놓고 '2가지 이상 경험자'라는 단순한 조건만을 걸어놓았다. 그 이외에는 '영어 가능', '문제 해결 경험' 같은 일반적인 조건들 등, 그냥저냥 무난하다고 볼 수 있는 항목 뿐이다.
그리고 이것은 회사 B의 것
[Required Skills to have]
- Knowledge of one or more high-level statically-typed languages (i.e. Java, Scala, Haskell, Kotlin, Rust, C++, OCaml, C#, F#, etc), plus an interest in Functional Programming
- Knowledge of Git
- Quality code and testing: Legibly-written code that is easily understood by others
- Approaches debugging with a systematic approach
- Understands automated testing with a curiosity to suggest performance improvements
- Ability to understand code independently and make intelligent inferences to code in the broader context
- Understanding of software architecture and design with the ability to align the overall service architecture
- Basic understanding of security measures and how they may implicate the wider system
- Comfortable with knowledge sharing, working on a team and building relationships
- Shows interest in the organization's engineering strategy, product development strategy and how that aligns to the overall business strategy
- Ability to define task outlines and deliverablesDemonstrates a sense of urgency when required
- Ability to manage some ambiguity and exercises good judgement when needed
- Ability to give and receive constructive feedback tactfully upstream and downstream
- Entrepreneurial spirit and eager to learn how to grow the business!
[Good to have]
- Scala, Cassandra, Kafka, Postgres, Functional Programming, REST API, microservices architecture, JSON, Avro, CI/CD, AWS, Fargate, Terraform, Git, Data streaming, ElasticSearch, Redis, Event Sourcing, unit/functional testing, cats, cats-effect, tagless final, CQRS, event sourcing.Understands cross-team interdependencies and work streams
- Ability to envision delivery roadmap and articulates this clearly for others to follow
- Builds relationships with stakeholders throughout the organizationUnderstands product opportunities, differentiators and competition
- Knowledge of cloud computing platforms such as AWS
- Experience building distributed systemsExperience working on a payment platform or other fintech field
A에 비해 상당히 구체적으로 적어놓았다.
필수 조건만 해도 (예시 범위가 넓긴 하지만)'정적 타입 언어 경험', 'Git 경험', '보안에 대한 지식', '테스팅 경험' 등 원하는 항목들이 구체적으로 되어 있고, 희망 조건은 더 상세하게 'Scala, Kafka 등 경험', 'AWS 경험' 등 특정 기술스택이 표기되어 있다.
회사 A는 Google, B는 도쿄에 있는 중견 핀테크 회사의 이력서이다. 예시로 이 두 회사의 description을 쓰긴 했지만, 보통 회사의 규모에 따라 지원자에 대한 요구조건은 이렇게 분류된다(내가 일본에 살다보니 여기 위주의 포스팅을 올리긴 했지만 아마 한국도 같을 것이라고 생각한다). 왜 이렇게 되냐면
대기업(여기에서 말하는 대기업은 개발 담당 직원만 적어도 천단위가 넘어가는 글로벌급 IT회사)의 경우
- 보통 이런 곳의 서비스는 사용자수도 트래픽도 스타트업과는 차원이 다름
- 때문에 한 가지 기능을 만들더라도 많은 것을 고려함
- 프론트엔드라면 DOM구조를 고려한 HTML/CSS 설계나 네트워크 트래픽을 최소화하기 위한 API call 디자인
- 백엔드라면 프론트엔드의 디자인에 적합한 API 디자인, 최적화된 DB호출, 트래픽 폭증에 대한 대비
- 그 외 보안을 고려한 설계, 상세한 유닛테스트 및 E2E 테스트 등
- 인력에 여유가 있으니 채용 후 당장 실 제품 개발에 투입되는 것보다 내부 시스템에 대해 상세히 이해하는 것이 중요하다. 그래서 특정 언어에 대한 지식보다 기본기를 중요시한다.
- 이게 면접에도 드러나는데, 글로벌 대기업들은 특정 프레임워크에 대한 지식보단 알고리즘 및 구현 원리를 더 중시한다.
- 구글에서 트리, 정렬, 검색 등에 대해 물어봤다는 얘기는 있어도, React나 Spring에 대해 물어봤다는 건 못 들었다...
Google SDE의 phone screening 까지 후기
그렇다. 나도 후기 한 번 써본다. 제목의 'phone screening까지' 에서 알 수 있듯이 결국 실력의 미숙함을 극복하지 못하고 온사이트 면접까진 가지 못했다. 그냥 후기도 쓰지 말까 하다 이것조차 안 �
kaffeit.tistory.com
- 기능이 돌아가는 것 자체보다 '안정적으로' 돌아가는 것이 중요하다. 그래서 하나의 기능을 만들 때 그 원리를 아는 것을 요구한다. 때문에 컴퓨터구조, 보안, 통신, 운영체제 등의 지식이 필요하다. 프론트엔드라면 브라우저의 구동 및 렌더링 원리도 추가로...
- 한 기능에 여러명의 개발자가 참여한다. 인력에 여유가 있기 때문에 본 기능의 개발 이외에 자신들에게 맞는 모니터링 툴, 배포 툴 등을 직접 만드는 경우도 많다. 때문에 특정 툴에 대한 경험을 요구하지 않는다.
반면에 중/소규모 개발 회사의 경우
- 서비스 개발에 있어 아직 성장하는 중이기 때문에 스피드가 중요하다. 보통은 기능이 '안정적으로' 돌아가는 것보다 일단 만들어지는 것이 중요.
- 회사의 주력 제품에 당장 투입되어야 하니 내부적으로 쓰는 프로그래밍 스택에 대한 경험을 필수로 요구한다. 면접 때에도 실제 쓰는 언어 및 프레임워크에 대해 구체적으로 물어볼 것이다.
- 인력이 상대적으로 모자라다. 하나의 기능(예를 들어 로그인 처리)이 있다면 프론트엔드(Web or App) 1명, 백엔드 1명? 좀 더 빡빡한 회사면 혼자 풀스택으로 다 구르는 경우도 있다.
- 인력은 모자라고 시간도 타이트하니 '일단 구현 vs 최적화'에서 최적화는 뒤로 밀릴 수밖에 없다. 큰 문제가 되는 게 아니라면 보통은 구현을 한 뒤 시간에 여유가 있을 때 리팩토링과 함께 검토하는 정도...
- 시간이 없으니 제품 구현 이외의 모니터링, 배포 등에 잘 알려진 유료 툴(Datadog, NewRelic, Bitrise 등)을 사용한다. 때문에 이런 걸 설치해보거나 사용해 본 사람들을 원한다.
- 테스팅 설계는 마감의 압박으로 못 하는 경우가 대부분. 프로덕트 매니저나 사장이 개발경험자라면 테스팅 구현을 고려한 스케줄을 주기도 하지만...그런 기대는 버리는 게 좋다.
대략 이런 특징들을 가지고 있는데, 월급이나 외부에서 보는 평가를 빼고 순수하게 '개발자로서 성장할 수 있는 기회'라는 측면에서 보면 어느쪽이 더 좋다고 말하기 힘들다.
대기업에서는 한 기능에 대한 깊이있는 지식, 대규모 시스템의 운용경험을 얻을 수 있다는 장점이 있는 반면, 서비스의 A to Z를 파악하기 어렵고 시야가 좁아질 수 있다는 단점이 있다(물론 이런 부분 때문에 많은 대기업들은 내부 컨퍼런스나 All-Hands meeting 등을 꾸준히 진행하며 현재 상황이나 개발 경험들을 공유한다).
중/소규모 회사의 경우는 전반적인 서비스 개발 경험을 통해 프론트부터 백엔드, 배포와 서버 운영등 넓은 범위의 경험을 얻을 수 있는 장점이 있다. 하지만 특정 분야에 대한 최적화나 안정성에 대한 경험을 얻기 힘들고, 대규모 트래픽(물론 상대적으로)을 체험할 일이 별로 없다.
사실 이러한 장/단점들은 순수하게 회사 업무 차원에서 경험하게 될 부분만을 봤을 때의 이야기고, 실제로 능력있는 개발자가 되려면 자신이 모자란 부분을 스스로 공부해야 한다. 다행히 유튜브나 블로그 등 자료들은 충분하니, 성장하려면 일 이외 공부를 위한 시간 투자를 당연한 것처럼 여겨야 한다고 생각한다.
다만 스스로 목표로 하고 있는 회사가 있다면, 자신을 어필하고자 하는 방향을 정하는 데 약간의 기준은 될 수 있지 않을까 한다...
'IT' 카테고리의 다른 글
티스토리 '수익' 기능 - 사용 후기 및 변화 (0) | 2020.11.07 |
---|---|
티스토리 신규 업데이트 - '수익' 기능 연결 후기 (0) | 2020.10.27 |
Google SDE의 phone screening 까지 후기 (0) | 2020.06.23 |
일본 이직 이야기 - 구직 방법 (0) | 2018.12.24 |
[번역] 구글의 이전효과는? 시부야 오피스 빌딩에서 첫 입찰 (0) | 2018.12.02 |