멀티플레이어.. 월드컵에서 한국축구가 4강을 이루었던 2002년 많이 들었던 말 같습니다. 박지성으로 대표되는 멀티플레이어는 다양한 포지션을 소화할 수 있어야 경기의 운영이 수월해진다는 것이죠.. 프로그래밍에서도 이런 멀티플레이어는 필요합니다. 하나의 언어, 하나의 플랫폼, 하나의 방법론만 고집해서는 문제를 해결할 수 없는 경우가 대다수죠.. 그런데, 한편으로 축구의 멀티플레이어를 생각해 보죠.. 아무리 박지성이 다양한 포지션을 소화한다고 해도, 90분 축구경기 도중 10분마다 혹은 5분마다 포지션을 변경하지는 않습니다. 즉, 90분 경기중 선수교체에 의해 한번이나 혹은 많아야 두번 정도 변화를 주는 것이죠.. 다시말해 멀티플레이어란 다양한 환경을 다룰 수 있다는 것이지.. 동시에 여러가지 프로젝트를 수..
요즘 테스트 코드와 관련해서... 테스트 코드를 먼저 만들고 난 후, 코딩을 진행하는 것이 좋다... 또는 프로그래밍 코딩을 하면, 테스트 코드를 만들어 확인해야 한다.. 리펙토링을 하기 전에는 반드시 테스트 코드가 있어야 한다.. 라는 이야기를 많이 합니다. 테스트 코드라는 것이 매우 중요한 개념이라는 것은 많이 들어서 알 것 같습니다. 그런데.. 실천이 매우 어렵다는 것을 한번 느낀 적이 있어 글을 써봅니다. 최근 프로젝트에서 JUnit이라는 테스트 프레임워크와 Ant 툴을 이용해서 프로젝트에서 테스트 프로그램을 구성해 보았습니다. 흔히 말하듯 빌드 한방에 테스트가 완료되구요.. 테스트 전후의 데이터도 변화가 없게 만들고... 나름 머리써가면서 잘 만들어 놨었죠~~ 하지만, 테스트 구현에 있어 약간의..
프로젝트 관리자에게 중요한 능력중의 하나가 바로 의사소통 능력이라고 생각합니다. 개발자들, 디자이너들, 영업팀, 고객, 그리고 회사 책임자들까지~~ 모두들 생각하고 원하는 바가 다름에도 불구하고, 서로를 이해하려는 부분이 약한 것이 사실입니다. 이것을 프로젝트 관리자 즉 PM이 해결해 주어야 한다고 생각합니다. 고객이 원하는 시스템을 파악하고, 개발자들이 원하는 형태로 설명해 주고, 디자이너와의 마찰을 줄여주고, 영업팀이 더 많은 프로젝트를 수주할 수 있도록 파워포인트의 기술 자료를 보완해주고, 회사 책임자에게 프로젝트 진행 상황과 위기관리에 대해 보고해야 하는... 정말 다양한 부류의 사람들과 의사소통할 수 있는 능력~~ 그래서 흔히 PM을 개발자들 중 최고의 프로그래머에게 맡기는 것은... 프로젝트가..
개인적으로 올 초에 Ruby on Rails를 좀 살펴봤었습니다. 10년 전에 만들어진 Ruby라는 언어와.. 일종의 프레임워크를 적용하여 웹 어플리케이션을 개발할 수 있는 환경을 제공하는 Rails라는 것이었는데요... 물론 실전에서는 한번도 써보지 못하고.. 걍 예제 프로그램 정도만 만들어 봤었죠~ 요즘은 Groovy라는 언어와 Grails라는 것을 보고 있습니다. 자바와 같은 바이트 코드를 만들어 주는 스크립트 언어인 Groovy에.. rails와 비슷한 MVC 환경을 만들어 주는 Grails가 있다고 하더군요.. 아무래도 자바 환경에서 동작하므로 ruby on rails 보다는 쓰임새가 많을 것 같아.. 살펴보고 있습니다. 오늘 이런 이야기로 시작하는 이유는.. 제 개인적인 욕심 때문입니다. -...
실용주의 프로그래머 책에 다음과 같은 이야기가 나옵니다. 요구사항이 지면에 놓여져 있는 경우는 퍽 드물다. 보통은 가정과 오해, 정치의 지층들 속 깊이 묻혀 있다. 프로젝트를 진행하면서 가장 어려운 부분이 요구분석단계라고 생각합니다. 열심히 분석하고 반영해도.. 프로젝트 진행 중에 결국 수정이 발생하는 부분이기도 하구요.. 발생한 수정에 대해 누구의 탓도 할 수 없게되는~~ 그래서 실제로 그 프로그램을 사용할 사람들과 함께 일하면서 사용자 처럼 생각해 보는 것이 도움이 된다고 이야기를 하기도 합니다. 고객과의 의사소통이 중요한 것은 다음 그림에서도 잘 표현되어 있는 것 같습니다. 예전에 데브피아에서 가져온 것인데.. 정확한 출처는 모르겠네요.. -.- 그리고 미친병아리님이 올린 다음 글도 참고해보세요~~..
얼마전 IT 개발자의 야근에 대한 글이 블로고스피어에 많이 나온 적이 있었습니다. 저도 IT 개발자들의 야근~~ 이라는 제목으로 포스트를 하나 올렸었는데요.. 오늘은 프로젝트 관리에 있어서 야근, 즉 초과근무를 어떻게 바라봐야 할 것인지에 대해서 간단히 이야기하려고 합니다. 먼저 야근을 왜 하게 될까? 하고 생각해 봤습니다~~ 첫째는 본인 스스로 눈치를 보면서 하지 않을까 합니다. 모두 야근하는데.. 나만 먼저 가면 찍히니까.. 둘째는 관리자의 압력에 의해서.. 즉, "이것 오늘까지 끝내~~" 하는 무리한 작업요청이 있을 수 있죠.. 셋째는 정말로 할일이 많아서... 딱히 할 말이 없는 경우죠. 하지만, 이런 경우는 프로젝트에서 한 두번 마감 직전에 있지 않을까 합니다. 그렇지 않다면 프로젝트의 일정관리..
프로젝트 관리에 대한 자료들을 참고하다보면.. 꼭 빠지지 않는 이야기가 있습니다. 여러분은 그것이 바로 무엇이라고 생각하나요? 간트차트(Gantt Chart)를 통한 일정관리 ?? CVS와 같은 프로그램을 이용한 소스관리 ?? PMP(Project Management Professional) 자격증을 통한 검증 ?? 보통 가장 중요하게 이야기 하는 것은 바로 "인력관리"가 아닐까 생각합니다. 프로젝트라는 것도 어차피 사람이 하는 것이므로.. 문제도 사람이 만들고, 해결도 사람이 하게 됩니다. 그러므로 문제를 만들고 해결할 수 있는 사람들을 관리하는 것이야말로 가장 중요한 프로젝트 관리가 아닐까 합니다. 그러나 여기에서 고려해야 하는 점은 바로 사람의 다양성을 인정해야 한다는 것입니다. 혹자의 글처럼 모든..
요즘~ 필요하다고 생각하는 소스는 공개되어 있는 것도 많고 또.. 컴포넌트 단위로 저렴하게 구입할 수 있는 것도 많습니다. 그러므로 모든 소스를 직접 구현하겠다는 생각은 굉장히 위험한 것이라고 생각합니다. 비록 프로그래밍 코딩에 자신도 있고, 알고리즘 구현도 잘 한다고 할지라도 이미 만들어진 것을 구현하는데 들어갈 노력을... 더 나은 사용자 환경 구축이나 최적화 등에 힘쓰는 것이 바람직 하다고 생각합니다. 더 나아가 본인 스스로나 팀 내부에서 작성한 소스들도 재사용이 가능하도록 정리하려는 노력이 필요합니다. 경우에 따라, 같은 프로젝트에 동일한 일을 하는 소스가 여러군데 존재하기도 하더라구요~ 그러한 경우를 막기 위해서 재사용하기 쉽게 만들어야 합니다. 팀 프로젝트에서 소스 코드의 중복이야말로 추후 문..
프로젝트의 규모가 점점 커지면서, 소스코드의 버전관리가 중요한 요소로 자리잡아 가고 있습니다. 혼자서 단독으로 프로그래밍을 하던 시기에는 백업 파일만 잘 보관하면 됐지.. 버전관리가 왜 필요할까? 하고 생각했던 것이 사실입니다. 하지만, 협업을 하게 되면서.. 단순히 백업만 가지고서는 발생할 수 있는 문제점들을 해결하는데 어려움이 있게 됩니다. 소스코드를 누가 변경한 것인가? 현재 소스와 이전 소스의 차이점은 무엇인가? 현재 소스를 릴리스(release)에 어떻게 반영할 것인가? 동시에 동일 파일에 대한 변경이 발생할 경우, 충돌을 어떻게 해결할 것인가? 단순한 백업에서는 해결하지 못했던 것을 소스코드 버전관리를 통해서 처리할 수 있게 되는 것입니다. 그래서 어떤 프로젝트를 막론하고.. 심지어 프로토타입..
실제로 프로젝트를 진행할 때, 프로토타입을 만든다는 이야기를 많이 합니다. 이런 프로토타입(prototype)의 사전적인 의미를 살펴보도록 하죠. prototype [출처 : 네이버영어사전] ━ n. 1 원형(原型)(archetype);견본, 전형;(후대 사물의) 선조, 원조(元祖) the prototype of a character (소설에서) 인물의 원형 2【생물】 원형(原形) ━ vt. …의 원형[견본]을 만들다 원형이나 견본이라는 의미로 주로 사용되고 있는데요.. 프로그래밍에서는 언제 프로토타입(원형, 견본)을 만들어야 할까요? 당연히 이미 해봤던 것이나, 전체적인 로직과 흐름을 잘 알고 있으며, 구현이 가능한 것에 대해서는 프로토타입이 필요 없을 것입니다. 처음 시도해 보는, 이 기능이 구현될지..