개발 일정 관리에 대한 조언 부탁드립니다.

tyolee83의 이미지

벤처기업 신입 6개월차입니다.

아무레도 벤처다보니 신입이라도 이래저래 개발에 많이 투입되게 됩니다.

그런데 지금까지 가장 어려운 일은, 일정을 관리하는 것입니다.

일단, 팀장님이 할일을 정해주시고

"언제까지 할래?" 이렇게 물어보십니다.

학교다닐땐 "이때까지 해라!" 라고 과제가 나왔죠...

그래서 곧죽어도 그때까지만 하면 되었는데,

회사는 아무래도 좀 다르겠죠...

처음에는 "그냥 팀장님께서 정해주세요" 라고 했는데,

슬슬 이 대답도 좀 아닌것 같은 느낌이 들기 시작하네요...

이런걸 가지고 "업무"를 배운다고 하는 것 같은데,

기간을 너무 길게 잡지도 못하겠고, 괜히 짧게 잡았다가 밤새야 할거 같고,

개발하다가 디버깅에서 시간 잡아먹으면 어쩌나 걱정되고,

또 통째로 일정을 잡으려니 굉장히 난감하고...

개발하시는 분들의 일정 관리 노하우가 듣고 싶습니다.

조언 부탁드립니다.

preisner의 이미지

일부 회사의 관리자들은 일정을 통보 해 주는데
스스로 일정을 만들어 보라고 배려 해 주시는 팀장님이네요.
어떤 경우는 언제까지 하면 되요? 라고 되물어 보는 경우도 있는데,
이렇게 수동적으로 업무를 처리 하는 것은 바람직 하지 않아 보입니다.
그리고 제 생각에도 '팀장님이 잡아 주세요.' 라고 하는 건 좀 아닌 것 같습니다.
애들도 아니고 시키는 데로, 엄마가 학원 등록 해 주는 데로 다는 것도 아니고 말이죠.

나름 시행 착오가 필요 할겁니다.
일정 관리 하기 위해 이런 저런 툴도 찾아서 사용 해 보고,
일정 잘못 잡아 밤새워 보기도 하시고.. 그러면서 자신의 페이스에 맞게 일정을 잡는 방법을 알게 되실 겁니다.

대부분의 선배들도 딱히 일정을 잡는 노하우는 없을 겁니다.
경험상 몇일 걸리더라.. 하는 거죠.
사람이 기계는 아닌지라 무슨 작업 하는데 3시간. 이라고 답이 안나오거든요.
작업 하고 있는데 다른 데서 지원 요청 오면 어쩔수 없이 중단 해 야 하는 경우도 있고 말이죠.

제가 보기에는 팀장님이 많이 배려 해 주시고 계신 것 같네요.
시행 착오를 격는 것을 두려워 마시고 부딛쳐 보시는 게 어떨까요?

마지막으로 초 고수 관리자들은 일정을 안주고 작업 오더만 줍니다.
그리고 그에 대한 평가만 할 뿐 입니다.
평균적으로 이런 방식이 더 빠르고 완성도도 좋습니다만,
피를 말리는 경우도 있습니다. ^^

NoBrain의 이미지

개발일정이라는 것이 정해진 작업을 반복하는 것이 아니기 때문에 시간을 정하는데 늘 어려움이 따릅니다.
전 개발일을 한지 몇 년이 지났는데도 어렵습니다.
조엘 온 소프트웨어라는 책에서는 정확한 일정을 잡기 위해 일을 최대한 나누라고 합니다. 최대한이라는 기준은 측정 가능한 단위까지 나누라는 것입니다.
어떤 책에서는 대략적인 기준을 잡고, 진행되는 정도에 따라 계속 수정하라고도 합니다.
위와 같은 방법을 제대로 수행하기 위해서는 경험이 중요하다고 생각됩니다.
아직 개발 경험이 없다면 매우 어려운 일일 수 있습니다.
조급해 하지 마시고, 실패하더라도 계속 시도를 해보세요.
특히 일이 잘 안된다 싶으면 과감하게 늦어진다는 걸 미리 상사에게 이야기하세요.
혼자 고민하지 마시고, 직장 동료들과도 많은 대화를 나누시길 바랍니다.
또한 책임은 혼자 지는 것이 아니라 상사도 같이 책임을 지게 됩니다.
때문에 일정을 상의할 때 위에 나온 기준대로 개인적인 생각을 표현하고, 상사가 결론을 내도록 하세요. 당연 억지 일정은 개인적인 생각을 강하게 표현하세요.

일정을 잡는 것도 중요하지만, 관리도 중요합니다.
툴을 쓰는 것도 방법입니다. 저희 회사는 DotProject라는 툴을 씁니다.
조엘은 엑셀도 좋은 툴이라고 권합니다. 종이나 달력도 좋은 방법입니다.

이런 호기심을 가지신다는 것에 높은 점수를 드리고 싶군요.
호기심을 가장 잘 해결하는 방법은 책을 읽는 것입니다. 질문 내용 이외에 방대한 내용이 들어있긴 하지만 소프트웨어 공학이나, 개발 방법론, 프로젝트 관리에 대한 책들을 몇 권 읽으시면 나름 생각이 잡힙니다.

아래 책들을 한 번 읽어 보세요. 책 내용을 고집할 필요는 없지만 생각을 많이 하게 하는 책들입니다.
좋은 책들을 모두 기억할 수 없어 대략 생각나는 걸 적어봅니다. 개인 적인 생각으로 적은 책목록입니다. 다른 사람은 안 좋게 생각할 수도 있죠.

조엘 온 소프트웨어
피플웨어
소프트웨어 컨플릭트 2.0
소프트웨어 크리에이티비티 2.0
스티브 맥코넬이 지은 책
등등...

koreteck의 이미지

정말 동감합니다.

실제 저도 이러한 방법을 사용합니다. 일을 최대한 리서치/프로토타입/개발/디버깅 등을 각 항목에 맞추어 최대한 나눕니다.

그러면 어느정도 일정이 보이죠. 여기다 중간에 끼어들 일, 예상치 못한일을 반영하여 1.3~1.5정도 곱합니다.

이렇게 최대한 항목을 나누면, 왜 이렇게 일정을 생각했는냐는 물음에 구체적으로 답변도 가능하실겁니다.

M.W.Park의 이미지

이건 제 의견이라기 보다는 agile 관련 서적들의 권고사항 정도인데요.

원론적으로 말씀드리자면 4시간 이하 정도의 task 단위로 나누는 것이 좋습니다.
처음에는 잘 안되지만 하다보면 오차범위가 (일정 수준까지) 계속 줄어듭니다.

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

jos77의 이미지

저도 신입사원일 때 제일 힘들었던 일 중 하나죠. 나중에 선배에게 배웠는데 "자기가 일을 언제까지 할 수 있을지 가늠하는 것도 능력" 이랍니다. (당시 저는 무조건 한달 아니면 석달로 넉넉하게 잡았다가 혼났다는 ㅋㅋ)
솔직히 경험이 쌓이기 전에는 정확하게 짜는 건 무리고요. 대신에 좀 생각해서 잡다보면 나중엔 정확하게 잡을 수 있기 때문에 점점 좋아집니다.
모듈에 따라 다르겠지만 제가 아는한 설계40% 코딩20% 디버깅40% 입니다. 순수 코딩은 하루 이틀 정도면 왠만한 건 되더군요.
설계 관련해서는 UML 방식을 써보시는 걸 권장합니다.

-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr

soungno의 이미지

요구사항을 잘 이해하고 해당 요구사항을 구현 하고 추정 할수 있는 단위로 나누는 것이 핵심입니다.
그런데 여기서 수많은 변수가 작용합니다.
요구사항의 변경, 시스템의 제약 사항, 구현 이슈, 테스트 의 어려움, 문서화 작업, 등등
어떻게 하던 100% 정확한 일정 추정은 불가능 한 상태에 놓여 집니다.
하지만 현실에서는 한번 추정한 일정을 뒤업기는 힘들죠, 특히 신입 같으면 죄짓는 기분이 들지도 모르겠습니다.

나름 8년 정도 개발하면 일정 추정에 대한 노하우라면
첫번째 추정 할수 있는 단위로 잘게 나눈다. 만약 요구사항을 보고 5일 이상 일정이 소요 될것 같으면 해당 요구사항을 다시 나눈다.

두번째 가산 기간을 포함한다. UML 기법이나 나사의 소프트웨어 공학 기법을 살펴 보면 소프트웨어의 설계전 추정치는 추정된 결과에 과중치 100%~400% 정도를 더한 값이다라고 되어있습니다.
물론 위의 경우는 메우 크리티컬한 프로젝트의 경우이고 또한 국내 현실에서 무시당하기 십상인 경우가 많습니다.
하지만 개발자라면 어떤 변수가 생길지 모르는 일정에 항상 과중치를 가져가 일정 지연으로 발생되는 심각한 손실을 미연에 방지 해야 합니다.
가령 3일 정도 예상 되는 작업이 있다면 1.5~ 2일 정도 과중치를 주어 추정하는게 좋습니다.

세번째 계속 자주 재 추정 한다.
일반적으로 가장 실수를 많이 하는 부분이 시작 시 추정후 해당 추정치를 재 추정 하지 않는 문제 입니다.
물론 한번 추정된 일정을 변경할 수 없는 경우가 많이 발생해서 그렇겠지만, 추정 일정을 조절하지 못한다면, 다른 방법으로 해당 추정일정을 이룰수 있는 방안을 고안해내야 합니다.
범위의 축소, 업무의 분담 등 모든 방법을 동원해야 합니다.
하지만 추정일정이 왜 잘못 되었고 얼마나 잘못되었는지 는 재 추정을 해봐야 알수 있는 부분입니다.
또한 추정이라는 것은 구현이 되어 감에 따라 상대적으로 정확도가 항상 되어 갑니다.
그래서 프로젝트 전반에 걸쳐 추정된 일정을 현 사항에 맞게 다시 추정해야 하며, 과거 추정의 실수나 실패가 있더라도 재추정으로 나온 문제를 객관적 사실로 프로젝트 이해 관계자들이 알수 있게 해야 추정의 실패로 야기 된느 손실을 최소화 할수 있습니다.

결론 적으로 정확한 추정일은 존재 할수 없습니다. 하지만 우리는 최대한 정확한 추정을 도출 해야 합니다.
방법은 작은 단위를 추정하고 추정된 값을 계속 확인 조정 하며, 객관적 사실을 바탕으로 추정을 바라 보는 수 밖에 없습니다.

* 실제 이번 서울 지하철 9호선 개통 연기가 교통카드 시스템의 소프트웨어적 문제라고 하더군요.
하루에 발생 하는 손실액만 수억원에 이런다고 하니 프로젝트에서 소프트웨어 개발에 관련된 추정의 실패가 빛는 손실은 엄청나다고 할수 있습니다.

잘 가야지.

whitelazy의 이미지

일단 최대 가능 일정 물어보시고 거기에 맞춰서 일정을 짜서 일정표를 드리거나 좀더 걸릴꺼 같다면 거기에 맞게 조정하시고
좀더 일찍 끝낼수 있다면 거기에 맞게 일정표를 드리면 되겠죠.

중간중간 발생하는 이슈 정리해서 일정 수정이 필요하다면 수정된 일정과 함께 보고하면 되지않을까요...?

당장 신입 6개월 차라고 하신다면 슥 보고 일정 줄줄줄 불러줄수도 없을테니...

사돈남말할 처지는 아니고 전 이렇게 하고있습니다 ;; 제처지라 =333

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.