-다양한 직종! 면접 노하우를 전파하다-
<Software Engineer – Web/App Engineer>
실리콘밸리에서 가장 ‘핫’하다는 소프트웨어 엔지니어 미국 Entry level 기준 평균 $100,000불에 가까운 연봉을 받는 이 직업 취업에 관해 알아보는 시간을 갖도록 하겠습니다! Software Engineer는 크게 프로그램의 개발, 운용, 유지보수 등의 일반적인 공학 기술을 소프트웨어에 적용하는 학문으로 광범위한 학문입니다. 그중에서 최근 각광받고 있는 Web/APP Engineer에 관해서 알아보려 하는데요.
Web software Engineer는 크게 Front-end 개발자와 Back-end 개발자로 나뉘게 됩니다. Front-end 개발자는 쉽게 말해서 웹에서는 사용자에게 보이는 부분 및 보이도록 하는 요소들을 개발하는 분들을 프런트 앤드 웹이 아닌 곳에서는 UI 엔지니어라고 불립니다. Back-end 개발자는 사용자에게 보이지 않는 부분을 개발합니다. 그 외에도 정말 많은 분야의 소프트웨어 엔지니어 관련 직업이 있는데요. Job research 사이트에서 software engineer를 job title로 검색했을 때 Front-end, Back-end개발자 말고도 App developer, Full stack 등등.. 정말 다양한 직종들이 나옵니다...
우선 가장 먼저 Web/App 관련 엔지니어 중에서 Front-End Engineer의 실제 구인 광고의 Job Description과 Requirement를 알아보도록 하겠습니다.
<실제 iOO 사의 구인광고>
Entry Level Front-End Developers:
Understand requirements, design, code, and test high-quality web and mobile apps
Take wireframes from conception to implementation and design and improve user interfacing
Work in frameworks such as: Backbone.js, Angular.js, React, Ember.js, Bootstrap, Node.js, and JQuery
Are skilled in UI Development technologies such as HTML, CSS, Sass, and JSON
Have an interest in, understanding of, or experience with Design Thinking Methodology
Have an interest in, understanding of, or experience with Agile development
What You will Do:
You will work in an Agile, collaborative environment to understand requirements, design, code and test innovative applications, and support those applications for our highly valued customers.
You will employ OOO’s Design Thinking to create products that provide a great user experience along with high performance, security, quality, and stability.
You will have an opportunity to work with a variety of relational databases (SQL, Postgres, DB2, MongoDB), operating systems (Linux, Windows, iOS, Android), and modern UI frameworks (Backbone.js, AngularJS, React, Ember.js, Bootstrap, Node.js, and JQuery).
Who You Are:
You are highly motivated and have a passion for creating and supporting great products.
You thrive on collaboration, working side by side with people of all backgrounds and disciplines, and you have very strong verbal and written communication skills.
You are great at solving problems, debugging, troubleshooting, designing and implementing solutions to complex technical issues.
You have a basic understanding of software development and programming languages.
Key Tech Skills:
HTML, CSS, Sass, JASON, Backbone.js, Angular.js, React, Ember.js, Bootstrap, Node.js, and JQuery
Required Technical and Professional Expertise
Must have basic knowledge in one of the following technology areas: HTML, CSS, Sass, JASON, Backbone.js, Angular.js, React, Ember.js, Bootstrap, Node.js, and JQuery
2. Job description을 바탕으로 한 곰 대리의 생각
Front-End Entry level 지원자의 경우. Entry Level 구인의 경우 경력보다는 능력이 된다면 즉 그 회사가 요구하는 Skill에 대한 이해가 많으 실 경우 채용을 합니다. New Grad를 뽑는다는 광고의 경우 경험이 없더라도 지원하기가 다소 수월 합니다. 위의 경우 Key Tech Skills에 나와 있는 기본적인 프로그래밍 언어들을 숙지하셔야 합니다.
가장 처음 I 사의 Job Description을 보자면 디자이너가 만든 Wireframe을 HTML과 CSS를 이용하여 실제 웹페이지로 구현하는 등 다양한 Web 개발에 관련한 일을 함을 알 수가 있습니다. 그리고 또한! 팀이 추구하는 개발 방향을 알 수 있는 <Agile> 이란 단어가 많이 나오는데요. 이 부분에 대하여 미리 파악하고 준비할 필요가 있어 보입니다.
* Agile Methodology란? 과거 소프트웨어 개발에 있어서 아무런 계획이 없는 개발 방법과 지나치게 계획 위주의 개발 방법의 사이에서 타협점을 찾고자 하는 방법론으로 일정한 주기를 가지고 끊임없이 프로토타입을 만들어내며 그때그때 필요한 요구를 더하고 수정하여 하나의 커다란 소프트웨어를 개발해 나가는 adaptive style이라고 할 수 있다. * 출처 Wikipedia
What you will do란을 보면 팀의 많은 일들 중에 내가 해야 할 일들에 관해서 설명을 합니다. 역시나 Agile을 강조합니다. OOO사의 Design Thinking을 이용하여 보안, 품질향상 및 안정성을 위한 코딩 및 테스팅을 하며 Framework 툴을 이용한 작업을 하게 되는 것 같습니다.
최종적으로 Who You Are을 보게 되면 기본적으로 프런트엔드 엔지니어는 UX팀이나 백엔드 팀 등 여러 부서 사람들과 협업을 해야 하기 때문에 커뮤니케이션 스킬이 중요하며, 디버깅과 문제점을 찾아 복잡한 기술적 문제를 해결을 잘해야 하는 사람이어야 하는 것 같습니다.
다른 S사와 A사 및 동일 분야의 Job description에서도 CSS와 HTML 숙련자 및 Framework를 위한 program들에 대한 숙련 여부를 물었으며 problem solving 및 trouble shooting skill 등을 중요한 개인의 능력으로 꼽았습니다. 하지만 대부분의 New graduation level과 Entry Level 구인을 하는 몇몇 소수의 회사를 제외하고는 대부분 5년 이상의 Field 경험을 중시하였습니다. Software Engineer로써 Job Experience를 커버할 수 있도록 Intern경험과 자신의 능력을 어필할 수 있는 노하우가 필요할 것 같습니다!
3. 실제 Front-End Engineer가 전하는 취업 노하우
위의 Job Description과 취업 면접을 생각하시는 Software Engineer 분들에게 실질적인 도움이 될 수 있는 부분을 실제 관련 분야에 취업을 하신 분들을 통해 알아보는 시간입니다!
* 손세훈(현 구 O, 전 애 O) Software Engineer의 인터뷰 내용을 바탕으로 정리하였습니다.
손세훈 씨는 조지아 Tech 대학에서 석사 취득, 애 O사에서 Back-End Engineer로 근무 후 현재 구 O로 이직 후 Front-End Engineer로 일하고 계십니다. 실제 이번 애 O사에서 구 O으로 이직하는 도중 약 10군데 이상의 면접 인터뷰 보면서 또 처음 졸업 후 Software 엔지니어로 근무를 시작하면서 겪었던 시행착오들을 공유하여 다른 분들이 취업을 하실 때 1번이라도 시행착오를 줄이 실 수 있게 도움을 드리고자 인터뷰에 응하여 주셨습니다.
<일반적인 면접 진행 방식>
실제 면접은 1차는 서류전형 그리고 2차 면접은 전화 인터뷰 및 원격 코딩 면접으로 진행되었고, 1차 면접은 단순 서류전형입니다. 위의 Job Description과 Requirement에서 본인의 강점을 잘 어필해서 적는 것이 중요하고 또한 미국의 경우 Linkedin을 잘 이용하는 것이 중요하다고 합니다.
서류면접을 통과하면 다음은 전화 면접입니다. 처음 전화는 recruiter와 하게 되는데, 간단한 대화 및 관심분야, 일하고 싶은 location, 인터뷰 스케줄링 등을 하게 됩니다. 그 다음 1차 인터뷰가 45분, 길게는 1시간 정도 하는데 5분정도 간단한 소개, background 얘기 등을 하고 나머지 시간은 코딩 문제 풀고 끝에 시간 조금 남으면 물어보고 싶은 질문을 하게 됩니다. 1차 인터뷰 결과에 따라 전화 인터뷰를 하나 더 할 수도 있고, 잘 풀렸을 경우 onsite 인터뷰를 하는데 이건 45분에서 1시간 인터뷰를 4-5개 정도 한다고 합니다. (New grad는 조금 더 짧게 인터뷰를 보게 되고 경력이 있으면 조금 더 길어 질 수 있다고 합니다.) algorithm/ data structure (coding), behavior, system design, 등을 보게 된다고 합니다.
<줄여야 할 시행착오!>
첫째로 많은 사람들이, 오해를 합니다. Job Description을 보고 그들이 요구하는 모든 Coding 프로그램을 다 알아야 하는가? 에 대해서 많은 고민을 하게 됩니다. 하지만 대부분의 인터뷰는 위에서 말씀드렸듯 본인이 선택한 또는 Requirement에 적혀있는 프로그램 중 가장 자신 있는 것을 사용하여 Coding을 풀어나가는 방식의 면접을 진행하게 되고, 얼마나 창의적으로 빠르게 풀어 나가는가에 대한 부분 등등을 많이 반영합니다. 하지만 이 부분은 대기업과 스타트업의 경우 다를 수 있습니다.
스타트업의 경우 한정된 인원이 일하므로, 다양한 프로그램에 대한 지식이 있으면 도움이 될 순 있습니다. 사람들이 일반적으로 범하는 오류의 부분이 ”스타트업은 더 취업하기 쉽다? “입니다. 하지만 실제로 스타트업은 한정된 인력 안에서 많은 일들을 처리해야 하는 경우가 있기 때문에 오히려 대기업보다도 경력직을 우선하여 뽑는 경우가 많습니다. 하지만 반대로 대기업의 경우는 부서가 좀 더 세분화되어 나뉘어 있고, 자신이 선택한 프로그램을 통해 Coding을 잘 풀이하면, 본인이 맡게 될 분야가 전문 분야가 아니라도 교육프로그램을 진행하여 잘 따라갈 수 있게 도움을 줍니다. 따라서 개인적으로는 여러 가지의 프로그램을 애매하게 다루는 것보다는 하나를 특출하게 잘하는 것이 취업 면접 때에는 더 도움이 된다고 생각됩니다. 일단 취업이 되어야 하니까요.
실제로 세훈 씨가 일했던 부서에서 비전공자 분들도 다수 계셨다고 합니다. Physics, business 등등.. 요새는 Recruiter들이 복잡한 코딩 문제를 Web page에 올려놓고 그것을 잘 풀이하는 사람들에게 개별적으로 Contact을 합니다. 그러한 오픈된 기회를 잘 활용하시면 도움이 됩니다. 단순히 비전공자 분들 뿐만 아니라 전공자 분들도 취업에 어려움을 겪고 계시다면, 그러한 웹사이트를 이용하시는 것도 큰 도움이 된다고 합니다.
실제로 관련 웹이나 애플리케이션 팀의 경우 각 포지션별로 다수의 인원이 배치되고(Front-end 몇 명, 백 앤드 몇 명, 디자이너 몇 명, 등등..) 그분들과의 협업으로 프로젝트가 진행됩니다. 당연히 각 팀원 간 소통이 중요합니다. 현재 ”핫“한 실리콘밸리의 소프트웨어 엔지니어 – Front End로써 목표하신 꿈을 이루 시길 바라겠습니다!