프로덕트

아티클

전체 보기
ki hyun Lee

ki hyun Lee

소프트웨어 개발 방법론 (1)

“소프트웨어 개발 커뮤니티에서 소프트웨어 개발 방법론과 이를 구현할 방법이라는 주제보다 더 많은 논쟁을 불러일으키는 주제는 없을 것이다" - 존 소메즈

소프트웨어 개발 방법론은 소프트웨어 제작 절차를 정의한다. 몇 가지 원칙 외에 크게 요구하는 게 없는 가벼운 방법론도 있고, 익스트림 프로그래밍처럼 지켜야 할 규칙이 무척 많은 방법론도 있다. 이번 글에서는 여전히 많은 조직에서 사용하고 있는 폭포수 프로세스와 오늘날 소프트웨어 개발계에서 가장 유행하고 있는, 누구나 하지만 아무도 제대로 하지 않는 애자일 개발 모델에 대해 살펴볼 예정이다. 마지막으로는 소메즈가 가장 중요하다고 생각하는 애자일 개발 방법론 세 가지를 소개하겠다.

전통적인 폭포수 개발

소메즈가 처음 개발을 배울 무렵에는 모두가 전통적인 폭포수 프로세스를 썻다고 한다. 폭포수라는 이름조차 없었고 이 방법을 비웃는 사람도 없을 정도로 당연하게 사용되는 방법론이었다.

폭포수 개발은 이름 그대로 바닥에 닿을 때까지 한 단계가 끝나면 다음 단계로 내려가며 소프트웨어를 한 번에 한 단계씩 만들어가는 방식이다. 폭포수 개발 방법론에는 소프트웨어 개발 생명주기(SDLC)가 포함되어 있다. 사실 폭포수 개발은 SDLC를 점진적으로 따라갈 뿐이라고 보아도 무방하다.

SDLC를 반대하는가?

소메즈는 SDLC를 반대한다고 한다. SDLC는 소프트웨어를 개발하기 위해 요구사항 분석부터 시작해 설계, 구현, 테스트, 배포, 유지 보수로 끝나는 일련의 과정을 가리킨다. 한 번에 한 단계씩 앞으로 전진하고 절대로 뒤로 가지는 않는다고 한다.

요구사항 분석

개발할 소프트웨어에 필요한 요구사항을 전부 알아내는 단계다. 고객이나 이해 당사자와 대화를 하면서 알아내기도 하고 그냥 직접 생각해내기도 한다. 어떤 방법을 쓰든 제작에 들어가기 전에 알아야 한다. (하지만 이게 늘 가능하지는 않다는 걸 금세 알게 된다.)

소프트웨어 디자인

전통적인 폭포수 방식에는 보통 방대한 사전 설계라고 알려진 방법을 쓴다. 세부 사항 대부분에 대한 계획을 아주 낮은 수준까지 설계 단계에서 정해두는 걸 가리키는데 현실에서는 요구사항이 바뀌고 예측하지 못한 일들이 일어나므로 이런 방식을 고수하기는 어렵다.

구현

간단하다 개발자들을 갈아넣어 멋진 코드를 만들면 그만이다.

테스트

테스터들이 개발자들이 열심히 짜놓은 코드에 일일이 태글을 걸며 버그를 잡는 시간이다. 소메즈의 말에 따르면 몇 번의 논쟁과 속임수를 거친 후에 모두가 다음 단계로 넘어가도 좋다고 동의할 때까지 최대한 많은 버그를 고친다고 한다.

배포

배포란 서버에 코드를 배포하는 작업일 수도 있고, 모든 고객에게 배송할 배포용 표준 CD를 만든다는 뜻일 수도 있다. 오늘날에는 앱 스토어에 앱을 업로드한다는 의미일 수도 있다. 어떤 방식으로든지 자신의 소프트웨어를 고객의 손에 전달하기만 하면 된다.

유지 보수

어떤 책에서 개발자들은 새로운 기능을 개발하는것보다 유지보수하고 문서를 작성하는데 시간을 더 쓴다는 말을 봤던 것 같다. 그만큼 유지보수는 중요하고도 지루한 일이다.

이게 바로 SDLC의 전 단계이다. 요구사항을 알아내고, 소프트웨어를 설계하고 제작하고 테스트한 후 배포해서 회사가 망하기 전까지 유지 보수하는 것이다.

다음 글에서는 폭포수 개발론에는 어떤 문제가 있는지와 애자일 방법론에 대해 살펴보자

7
1
ki hyun Lee

ki hyun Lee

자기소개

안녕하세요! 인공지능과 블록체인에 관심이 많은 풀스택 개발자 이기현입니다!

8
3
ki hyun Lee

ki hyun Lee

입문자가 처음 AI를 공부하려면 어떻게 시작하는게 좋을까요?

이때까지 여러번 AI를 공부하려고 시도하고 있는데 높은 진입 장벽때문에 번번이 실패하고 마네요...

입문자가 쉽고 재밌게 AI 공부를 시작하려면 어떻게 시작하는게 좋을까요?

아래 2개를 추천받았는데 여러분의 의견이 궁금합니다.

url thumbnail

Practical Deep Learning for Coders - Practical Deep Learning

A free course designed for people with some coding experience, who want to learn how to apply deep learning and machine learning to practical problems.

https://course.fast.ai/


url thumbnail

Neural Networks: Zero To Hero

https://karpathy.ai/zero-to-hero.html


4
2
ki hyun Lee

ki hyun Lee

연봉과 협상

소메즈의 주장에 따르면 이 글에 나온 조언을 잘 활용하면 개발자로 일하는 동안 수십만 달러나 백만 달러가 넘는 금액도 벌 수 있을 것이다. 그 이유는 2 가지가 있다

1. 협상을 제대로 하면 연봉 인상에서는 기대할 수 없을 만큼 높은 수준으로 초봉을 올릴 수 있다.

2. 연봉 인상은 대부분 기존 연봉을 기준으로 하여 일정한 비율로 올라간다.

그래서 직장에 처음 들어갈 때 최대한 협상을 잘해두는 게 절대적으로 중요하다고 한다. 


연봉의 범위를 알자

먼저 해당 회사에서 자신이 원하는 직군이 받는 연봉의 범위를 알아야 한다. 예상 연봉을 알려주는 사이트를 참고하거나 주변에 물어보면 된다. 그렇다고 그 회사에서 일하는 사람에게 가서 연봉을 얼마나 받느냐고 묻지 말고 “제가 X~Y 달러 정도의 연봉을 기대하면 합리적인 수준일까요? 혹시 아는 내용과 다르다면 어느 정도가 합리적인 수준인지 알려주실 수 있나요?” 정도가 적당하다고 한다. 그리고 상대가 얼마를 이야기하든 그 금액보다 10% 높다고 생각하는게 좋다고 한다. 자신보다 더 높은 연봉을 받을 수 있게 도와주려는 사람은 거의 없기 때문이다.

정확한 연봉을 알아내는 것은 어렵지만 연봉 협상에 들어가거나 제안서를 검토해보기 전에 그 회사에서 같은 직책이나 직급이 받는 연봉의 범위가 보통 어느 정도 되는지는 알아보는 게 좋다.


제안서 받기

대부분의 회사는 일자리를 제안할 거라는 사실을 사전에 알려준다. 제안도 받기 전에 협상을 하려고 하다가는 제안이 아예 철회돌 위험이 있고, 제안을 받은 후에 협상을 시작하면 유리한 고지를 미리 선점하지 못할 위험, 너무 낮은 금액을 제안 받아서 협상이 난관에 처할 위험이 있다.

소메즈는 제안을 받은 후에 협상하는 쪽을 선호한다고 한다. 제안을 받았다는 것은 인사 담당자가 자신을 고용하겠다고 결정한 것이기 때문에 이 점을 협상에서 유리하게 사용할 수 있다고 한다. (물론, 제안은 하나의 제안일 뿐 그 자리를 완전히 차지한 것이 아니기에 무산될 수 있다는 점을 염두에 두어야한다.)

제안서를 받았다면 업무 시작일, 연봉, 직책, 휴가나 건강보험 같은 복지 혜택 등 중요한 세부 사항을 찾아보라고 한다. 이 모든 것이 협상의 대상이 될 수 있으므로 모든 항목을 꼼꼼히 살펴봐야 한다. 제안을 바로 승낙하고 싶을 수도 있지만 적정선을 잘 지키는 협상은 늘 해볼 가치가 있다고 한다.


협상하기

먼저 협상이 중요한 이유는 무엇일까? 협상이 중요한 가장 큰 이유는 입사 후보다 입사 전에서의 연봉 조정이 더 쉽기 때문이다. 전체 보상이 10% 정도 인상된다면, 연봉 인상은 많아야 해마다 2~3% 정도이고 아예 동결인 경우도 흔하므로 연봉 인상 측면에서 2~3년 앞서가는 셈이다. 여기에 복리의 힘까지 더한다면 그 차이가 확연하게 벌어진다.

다음 표는 협상 없이 그냥 80,000달러를 받는 경우와 협상을 통해 90,000달러를 받는 경우를 비교한 수치다. 매해 3% 인상을 받는다고 가정했다.

차액이 114,639달러(약 151,267,891원)다. 이 정도 돈을 더 번다고 해서 부자가 되는 것은 아니지만 꽤 큰 돈이라고 생각한다. (참고로 기간을 30년으로 늘리면 차액은 475,754.16 달러 (약 6억 2천만원) 가 된다고 한다.


유리한 고지 점령하기

개인 브랜드를 만들고 자신을 마케팅하라고 강조하는 이유가 바로 유리한 고지를 점령하기 위함이라고 한다. 유리한 위치를 점해야 원하는 협상 결과를 얻을 확률이 높아진다. 협상에서는 여유 있는 사람이 늘 유리하다는 것을 기억하라

더 나은 위치를 차지하기 위해서는 필사적인 입장에서 벗어나는게 중요하다.

- 다른 일자리를 구하기 전에 다니던 직장을 그만두지 마라

- 몇 달 정도 버틸 수 있는 생활비를 늘 준비해두라.

- 일자리에 지원할 때는 가능한 한 추천을 받아라

- 면접을 아주 철저하게 준비해서 최선의 성과를 내라

- 동시에 여러 제안을 받을 수 있는 상황을 만들 수 있으면 더욱 좋다.

- 자신이 지원할 구직 시장, 협상할 회사, 연봉 정보를 잘 알아두라

- 좋은 평판을 구축하라. 평판이 좋을수록 더 유리해진다.


숫자를 먼저 말하는 사람이 진다

연봉 정보를 지원자와 회사 양측 모두에게 아주 중요한 정보다. 어떤 협상에서든 숫자를 먼저 말하는 사람이 진다. 어떤 상황에서도 자신의 현재 연봉을 노출하지 마라. 그리고 제안을 받기 전에 자신이 원하는 연봉이 얼마인지도 절대 알려주지 마라.

우선 현재 연봉이 얼마인지 물어보면 연봉 정보는 현재 회사의 기밀이라서 발설하면 찝찝할 것 같다고 얼버부리라고 한다. 그래도 계속해서 말하라고 압력을 가한다면 복지 제도나 무형의 혜택 등을 포함해 회사에서 받은 전체 보상이 얼마인지를 고려하는 게 옳기 때문에 연봉만 따로 떼어서 이야기하고 싶지 않다고 하라고 한다.

예를 들어 만약 자신이 어떤 일자리에 지원해서 합격한 후 연봉 협상을 하고 있는 단계라고 가정해보자 이 경우 회사에서 처음 하는 질문은 희망 연봉이다. 그래서 5000만원 정도라고 말한다. 인사 담당자는 즉시 제안을 받아들이고 협상을 마친다. 하지만 여기에는 함정이 숨어있다. 사실 인사 담당자가 그 자리에 생각한 예산은 7000 ~ 9000만원 이였던 것이다.


결론

협상을 잘 해낸다면 남들에 비해 더 많은 연봉을 받으면서 회사에 다닐 수 있다. 물론 위의 내용들은 실천하기 어렵다. 실전에 가면 기억이 나지 않을 수 있고, 적용하기 어려울 수 있다. 하지만, 적어도 나는 위의 의견이 틀렸다고는 생각하지 않는다.

0
0
ki hyun Lee

ki hyun Lee

이력서 만들기

“이력서는 가장 중요한 동시에 가장 쓸모없다” - 존 소메즈

이력서를 제대로 읽어보는 사람은 거의 없는 것 같지만, 오히려 대충 흟어만 보고도 즉각 그 주인공에 대해 확실한 인상을 만들어낸다. 원하는 면접 기회를 잡기 위해서는 내용이나 형식 면에서 휼륭한 이력서를 만들어야 한다. 하지만 개발자들의 이력서는 보통 형편없다. 소메즈는 자신의 책을 읽고 있는 독자들의 이력서조차 형편없을 확률이 높다고 한다.

이력서는 광고다. 휼륭한 이력서를 원한다면 어디에 지원하든 담당자가 이력서를 흟어보는 시간은 15초 정도에 불과하단 것을 알아야 한다. 15초 내에 좋은 인상을 남겨야 한다는 말이다.


1단계: 이력서를 만들지 마라

이게 무슨 말인가 싶을 수도 있다. 하지만 소메즈는 이력서 작성 전문가나 카피라이터가 아닌 이상 이력서를 직접 쓰지 말라고 주장한다. 물론 자신의 이력서 작성을 아예 남에게 떠넘기라는 것이 아니다. 남이 처음부터 끝까지 만들어준 이력서는 척 보면 티가 난다고 한다. 그리고 소메즈는 그런 사람을 채용한 적이 한번도 없다고 한다.

소메즈의 주장에 따르면 실력 있는 이력서 작성 전문가의 도움을 받아서 만든 이력서를 낸 소프트웨어 개발자는 더 많은 일자리, 더 높은 연봉을 받는다고 한다. 이력서 작성에는 기술이 필요하다. 특히 설득력 있는 글을 쓰기 위해서는 기술이 필요하다. 앞서 말했듯이 이력서는 1 페이지짜리 광고이기에 이러한 기술이 매우 중요하다.

휼륭한 개발자가 이력서까지 휼륭하게 작성할 거라고 보기는 어렵다. 소메즈는 집을 수리할 때를 예로 든다. 보통 집을 수리할 일이 생긴다면 사람을 불러서 고친다. 마루 까는 법, 타일 붙이는 법(고강 타일이 생각나네요… ㅋㅋ)을 몰라서가 아니다. 누구든 할 수는 있는 일이지만 그런 일을 천 번도 넘게 해본 사람이 하는게 훨씬 낫기 때문이다. 따라서 소메즈는 이력서 작성 전문가를 고용하되 제대로 된 사람을 고르라고 조언한다.


이력서 작성 전문가 고르기

전문가를 제대로 고르지 못해서 직접 작성하는 것보다 더 엉망인 이력서를 만들면 앞서 말한 모든 것이 아무 소용이 없다. 이력서 작성 전문가를 고를때는 소프트웨어 개발자 이력서나 기술 관련 이력서를 전문으로 하는 사람을 찾는게 좋다. 기술에 대해 전혀 모르는 사람을 만난다면 최악의 경우 이력서에 “SQL을 다형성 프로그래밍 코드에 적용하면서 프로젝트의 C++ 파트를 혼자 이끌어본 경험이 있습니다” 같은 문구가 들어간다고 한다.

이러한 상황을 방지하기 위해선 계약하기 전에 작업 샘플을 보여달라고 해라. 또한 너무 저렴한 가격을 찾는 것보단 300~500 달러(40~60만원) 정도가 적당한 가격이라고 한다.


이력서 작성 전문가와 작업하는 법

좋은 정보를 주어야지만 좋은 결과물이 완성된다. 아래는 이력서 작성 전문가에게 주어야 할 정보들이다.

1. 모든 관련 업무 경력의 정확한 날짜

2. 각 일자리의 직함과 직무 내용

3. 각 업무에서 성취한 주요 업적

4. 모든 학력

5. 각종 증명서와 수상 경력

6. 가장 중요하다고 생각하거나 가장 큰 관련이 있다고 생각하는 기술 목록

7. 자신이 하고 싶은 직무에 관한 몇 가지 직무 설명 샘플

8. 그 외 관련이 있다고 생각하는 모든 것

이러한 정보를 정리하는 데는 생각보다 시간이 오래 걸린다. 이력서 작성 전문가에게 더 좋은 정보, 더 자세한 정보를 제공 할수록 더 훌륭한 이력서가 만들어진다.

다른 자리에 각기 다른 방식으로 지원할 수 있도록 몇 가지 다른 버전의 이력서를 만들어달라고 부탁하라. 자기소개서도 버전별로 완전히 다른 모습을 보여 줄 수 있게 작성해달라고 요구하라. 지원하는 일자리마다 제대로 잘 작성된 완벽한 맞춤형 자기소개서를 내는 게 핵심이다.

마지막 팁은 완성된 이력서가 마음에 들지 않을 때는 점잖게 참지 말고 하고 싶은 말을 하라는 것이다. 자신의 경력과 미래가 달린 일이기에 좋은 결과가 나올 수 있게 요구할 줄 알아야 한다. 작업이 마음에 들지 않을 때는 가차 없이 해고하고 다른 사람을 찾아라.


좋은 이력서의 조건

좋은 이력서가 갖춰야 할 중요한 조건이라면 무엇보다 보기 좋아야 한다. 사람들은 겉모습을 보고 내용을 판단하기에 이력서 작성 전문가라면 내용만 잘 다듬는 게 아니라 겉모습도 잘 갖추어준다.

또한 이력서는 지원자가 어떤 사람인지 지원한 회사에 어떤 도움이 될지 빠르고 효과적으로 전달해야 한다. 사람들은 다른 사람이 무엇을 원하는지 관심이 없다. 사람들은 상대가 본인에게 얼마나 유용한 사람일지를 궁금해한다.

이력서는 자신을 홍보하는 1페이지짜리 광고다. 나라는 사람이 얼마나 수요가 높고 전설적인 개발자인지 보여주어야 한다. 또한 간단명료하고 전문적이어야 한다. 지금껏 그 사람이 쌓아온 위대한 주요 업적을 강조해서 보여주어야 한다.

궁극적으로 자신이 어떤 기술을 갖추었고 어떤 분야가 전문인지, 그 기술로 과거에 어떤 훌륭한 결과를 냈는지, 그리고 지원하는 자리에서 그 기술을 어떻게 활욜할지 명확하게 보여주어야 한다.

0
1

포스트

아직 포스트가 없습니다.