본문 바로가기

더 괜찮은 개발자가 되기위한/시작하기

프로젝트로 알아보는 보다 나은 시스템 만들기(개요)

[프로젝트로 알아보는 보다 나은 시스템 만들기] 과정을 시작하며


필자는 이 과정에서 정보시스템 개발과 운영에 관련된 다양한 업무와 기술을 프로젝트라는 틀을 빌려 설명하고자 한다. 처리해야하는 업무와 처리하기 위해 필요한 기술 그리고 담당자를 기계 부품이라 생각한다면 프로젝트 관련 지식들은 기계를 잘 돌아가게 하는 기름과 같은 존재이다. 대부분 자료들이 기계 부품에 대해 잘아는 것이 중심이라며 이 과정에서는 기계 부품에 대한 설명뿐만 아니라 어떻게 하면 기계가 고장 없이 잘 작동할 수 있는지 설명하고자 한다. 프로젝트가 기획서라는 문서에서 출발해 거대한 시스템으로 탄생하기까지 모든 과정을 누가, 무엇을, 언제, 어떻게 해야 하는지 사례 중심으로 쉽고 자세하게 알아보자.

다음과 같은 사람에게 본 과정을 추천하고 싶다.


1. IT관련 대학생
대학생들의 지상 목표는 취업이다. 취업을 위해 학점도 따야 되고 스펙도 쌓아야 한다. 이 두 가지는 선배들이 걸어간 길을 따라가면 어느 정도 준비할 수 있다. 하지만, 회사에서 요구하는 인재는 생각하는 힘을 가지고 있는 사람이다. 회사는 좀 더 넓은 시야를 가지고 있고, 남들과 다른 생각을 할 수 있는 사람을 원한다. 그런 점에서 이 책은 실전 경험이 전무한 대학생들에게 아주 좋은 간접 경험을 전달해 주고 있다. IT 업체에 취업을 원하는 대학생이라며 이 책을 통해 실무에서 어떤 업무가 이루어지는지 이해하고 취업이라는 전쟁을 보다 잘 준비할 수 있다.


2. 초급 및 중급 프로그래머
프로그램을 3년 정도 하다 보면 이제 어느 정도 자신감이 생긴다. 프로그램 문법도 익숙해지고, 어디서 정보를 찾아야 하는지 감이 오고 인터넷에서 검색한 내용도 이제 하나씩 이해할 수 있다. 이 때가 바로 한 단계 업그레이드 해야 할 시기이다. 코더가 설계자로 아마추어가 프로페셔널로 업그레이드 되어야 한다. 하지만 세상에 업그레이드 매뉴얼은 존재하지 않으며 보통 경험을 통해 자신도 모르는 사이에 프로가 된다. 개발만 하다가 어느 순간에인가 설계를 하고 있는 자신을 발견하게 된다. 하지만 이러한 방법은 많은 시간이 필요하고 시행착오를 겪어야 한다.
이 책은 이런 시간과 시행착오를 줄여줄 수 있다. 개발자의 업무와 기획자, 설계자의 업무까지 두루 경험하고 이해할 수 있다. 이런 이해를 바탕으로 내가 무엇을 공부해야 하고 어디로 가야 할지 알 수 있는 힘이 생긴다. 방향을 모르고 알 수 없는 힘에 의해 끌려 다니는 것 보다 내가 목표를 설정하고 그것을 이루기 위해 노력하는 것이 좀더 멋지지 않을까?


3. 고급 프로그래머 및 설계자
프로그램을 8년 이상하면 이제 설계에도 자신이 생기고 프로그램도 능숙하게 만들 수 있다. 이런 사람을 우리는 고급 개발자 또는 설계자라 부른다. 신입 후배를 가르치면서 자신의 일을 완벽하게 마무리 할 수 있다. 이런 사람에게 필요한 것이 또 있을까? 물론이다. 다른 사람을 이해하고 커뮤니케이션 할 수 있는 능력이 필요하다. 8년 이상 되면 설계와 개발 능력으로 남들과 차별화하기 힘들다. 조금을 더 잘할 수 있지만, 그렇다고 아주 월등해 지기는 어렵다.
하지만, 내가 고객을 이해할 수 있다고 생각해보자. 상대방이 원하는 게 뭔지를 알아내고, 고려해야 할 다양한 상황을 종합해서 솔루션을 제시할 수 있다면 다른 사람과 차별화 될 수 있다. 프로그래머 중에 이런 사람은 극히 드물다. 이 책을 통해 전체적인 기획자, 영업사원 그리고 운영자의 업무를 이해한다면 설계 과정에서 고객이 생각하지 못하는 솔루션을 제시할 수 있는 능력을 갖출 수 있다.


4. IT 영업 직종
영업사원은 물건을 파는 사람이자 불평불만을 들어주는 사람이다. 고객이 프로젝트에 불만이 생기면 영업사원부터 찾는다. 프로그래머가 고객에게 불만이 생기면 영업사원에게 하소연한다. 영업사원은 고객을 다독이면서 프로그래머가 일을 열심히 할 수 있는 환경을 만들어 줘야 한다. 영업사원이 프로젝트 라이프사이클을 이해하고 고객, 개발자, 설계자가 무슨 일을 하고 있으며 책임이 무엇인지 이해한다면 보다 훌륭한 영업사원이 될 수 있을 것이다.


5. 기업의 정보시스템 운영 담당자
중견기업 정보시스템 운영은 멀티플레이어 역할을 요구한다. 대기업은 역할이 세분화되어 있어 자기 업무만 잘하면 되지만, 중견기업의 경우 시스템을 운영하면서 IT 기획자, 서버 운영자 심지어 DBA 역할을 수행하는 경우도 있다. 특히, 공공기관 정보시스템 운영자는 프로젝트 발주 업무를 많이 수행한다. 시스템 운영 업무를 하다가 발주와 프로젝트 관리 업무를 수행한다는 것은 정말 난감한 일이 아닐 수 없다.
이 책에서는 기획에서 발주, 수주, 계약, 프로젝트 관리의 모든 프로세스를 다루고 있다. 정보시스템 운영자가 이 책을 통해 전체 과정을 이해하고 회사에서 기존에 수행한 업무를 참고한다면 보사 쉽게 새로운 업무에 적응할 수 있을 것이다.


6. 기업체 IT 부서 중간 관리자
중간 관리자 즉 팀장의 경우 실무를 책임지는 사람이다. 개발자, 운영자, 설계자를 이끌면서 시스템을 운영하고 ISP를 통해 기업의 중장기 IT 전략을 수립해야 한다. 단계별 과제를 수행하기 위해 프로젝트 발주를 통해 시스템을 구축해야 한다.
중간 관리자는 실무를 담당하지 않지만, 실무자의 업무를 관리하고 감독하며 부족한 점을 채워줘야 한다. 관리자는 실무자보다는 많은 경험을 갖고 있지만, IT 전분야를 경험한다는 것은 현실적으로 불가능하다. 본인이 경험하지 못한 분야는 이론을 통해 지식을 얻어야 한다.
이런 다양한 지식을 요구하는 관리자 업무를 지원하기 위해 이 책은 아주 효과적인 역할을 수행한다. 아주 깊지는 않지만 전반적인 프로세스를 아주 쉽게 설명하고 실무적인 사례를 제공하기 때문이다.


본 과정은 다음과 같은 구성되어 있습니다.


1장. 시작하기
□ 프로젝트란 무엇인가
□ 프로젝트에 대해 알아야하는 이유


2장. 프로젝트 만들기
□ 프로젝트 기획하기
□ 제안요청서 만들기
□ 제안서 만들기
□ 제안 평가와 계약


3장. 프로젝트 관리하기
□ 프로젝트 관리란?
□ 소프트웨어 생명주기 모델
□ 소프트웨어 개발방법론
□ 프로젝트 관리 절차와 방법


4장. 프로젝트 분석하기
□ 요구사항 분석
□ 요구사항 도출
□ 요구사항 분석
□ 요구사항 명세
□ 요구사항 검증

5장. 프로젝트 설계하기
□ 프로젝트 설계란?
□ 프로세스 설계
□ 인터페이스 설계
□ 데이터 설계


6장. 시스템 개발하기
□ 개발 표준 정하기
□ 개발환경 구축하기
□ 팀으로 개발하기
□ 효율적으로 코딩하기
□ 프로그램 단위 테스트

□ 대표적인 단위테스트 도구 JUnit

□ 웹 테스트 자동화 도구 셀레니움


7장. 프로젝트 완료하기

□ 프로젝트는 어떻게 완료하는가?
□ 프로젝트 완료를 위한 테스트
□ JMeter활용한 시스템 테스트
□ 서비스 시작
□ 프로젝트 검수


8장. 정보시스템 운영하기
□ 정보시스템 운영이란?
□ 시스템운영에 필요한 인프라 지식
□ 시스템운영에 필요한 네트워크 지식
□ 시스템운영에 필요한 보안 지식
□ 시스템운영에 필요한 운영체제 지식


산출물(더 괜찮은 개발자가 되기 위한 프로젝트 더보기).zip