엘키의 주절 주절

소소한 개발 이야기

우리가 미처 알지 못한 소프트웨어 공학의 사실과 오해 - 왜 같은 실수를 반복하는가?

소프트웨어 업계가 아직 젊다고 하지만, 벌써 50년 이상의 세월이 지나왔다. 그 세월 동안 다양한 경험과 통찰로 이루어진 결론들이 있었지만, 이 업계의 많은 사람들은 그 결론들을 일반화 시키는 것을 두려워하고, 인정하지 않으려 해온게 사실이다. (그리고 여전히 대부분 그렇다.) 사람 5명이 해오던 일을 10명이서 한다고, 수행 속도가 2배가 되는 ...

Effective TCP/IP Programming

일반적으로 네트웍 프로그램을 작성할때 대부분 소켓을 이용합니다. 하지만 소켓을 사용할줄 안다는 것이 TCP/IP를 이해한다는 의미는 아닙니다. 사실상 대부분의 네트웍 프로그래머가 소켓이 왜 그렇게 처리 되고 있는지, 왜 그렇게 해야만 하는지에 대해서 모르는 실정입니다. 이 책에선 좋은 네트웍 프로그램 (효율과, 안정성을 모두 보장하는) 을 만들기...

서버 테스트 방법 들

스트레스 테스트 예상한 것보다 훨씬 많은 행동을 시도하는 테스트 클라이언트를 통해서, 많은 부하가 발생했을 시에도 정상동작하는지 확인한다. 접속/해제 테스트 좀비 클라이언트가 남는지 확인한다. 접속/해제시 소켓 재사용 로직이 잘 처리되는지 확인한다. (최대 접속 가능 수가 5000이라고 치면, 5000개 이상의 클라이언트로 접속/해제...

둠. 컴퓨터 게임의 성공신화. 존 카맥, 존 로메로 - 천재 프로그래머 이야기

천재들은 대부분 영재인 경우가 많다. 해당 분야를 일찍 접하고, 그와 동시에 재능을 발휘해오며 천재 소리를 듣게 되었기 때문일 것. 대부분의 좋은 평가를 받는 프로그래머는 꼼꼼하고 성실해서 일을 잘 하거나, 경험이나 연륜에서 묻어 나오는 판단으로 좋은 결과를 내는 사람들이 대다수다. 하지만 천재들은 그런 경험 없이도 뛰어난 판단력과 통찰력을 갖고 ...

아키텍트 이야기 - 프로젝트의 성공을 위한 지휘자, 아키텍트가 되자.

사실 프로젝트를 진행해오면서 표준이 필요하다는 생각이 많이 들었습니다. XP에서도 주장하는 것은 죽은 문서를 만들지 말자는 것이지, 문서를 만들지 말자는 것이 아니듯이, 필요한 문서라면, 자주 참고해야 되는 내용이라면 당연히 문서화 하는 것이 맞습니다. 프로젝트가 오래 진행될 수록 네이밍, 클래스 상관도, 기본 설계 방침과 같은 것들에 대한 필요성...

익스트림 프로그래밍 - 소프트웨어 개발도 결국 사람에 달려있다.

사실 소프트웨어 개발에서 자바를 사용할 것인가, C++을 사용할 것인가, 윈도우를 사용할 것인가, 리눅스를 사용할 것인가, DBMS는 어떤 것을 사용할 것인가와 같은 기술적인 이슈는 빠질 수 없는 요소입니다. 그렇지만 기술적인 요소들에 대한 이해도가 높고, 능숙한 기술들로 소프트웨어를 개발한다고 했을 때에도 여전히 소프트웨어 개발은 쉽지 않습니다. ...

나의 게임 업계 투신기

내 또래 남자 아이들중 안그런 아이들이 몇이나 있었겠냐만은, 나 역시 게임을 무척이나 좋아했다. 초등학교도 들어가기전인 6살때 친척형 손잡고 오락실에 간 이후로, 내 인생에서 게임을 빼놓고 이야기할 수 없을 정도 큰 위치를 차지해 버렸다. 처음 오락실에서 했던 게임은 속칭 탱크라 불리는 배틀시티였다. 나의 첫 게임 배틀 시티. 당시 내가 살던...

코드 읽기

문득 코드를 작성하던 중 이런 생각이 들었다. “과연 지금 내가 작성한 이 코드가 분석하기 쉬운 코드일까?” 생각해보면 아마추어 일때를 제외하고는 새 코드 작성보다 다른 사람의 코드 분석하는 시간이 더 잦았고, 새 코드를 작성하더라도 다른 코드와 어울려야 했기 때문에 코드 분석은 늘 필요했다. 심지어 내 코드를 분석해야 되는 일도 잦았다. 기억력...

린 소프트웨어 개발 - 개발 효율 향상을 위한 애자일 지침서

혼자 개발을 하던 시대는 지나갔다. 게임 업계에서도 1인 개발자는 별바람님을 제외하곤 사라진지 오래다. 그만큼 팀 작업의 중요성은 더 크게 다가 오고 있다. 한 프로젝트를 위해 마케팅, 서비스, 시스템, 개발이라는 각기 다른 업무를 맡고 있는 사람들이 협동해야하며, 한 팀 내에서도 웹, 서버, 클라이언트, 애니메이터, 배경, 원화가, 모델러, 기획자...

대체 뭐가 문제야?

프로그래머는 자주 개발자라는 이름으로 불리고, 구현이 가장 중요한 듯 생각되기도 한다. 하지만, 개발 과정에서나, 유지보수 과정에서나 문제는 발생하기 마련이다.  능력이 아무리 뛰어나고, 머리 좋은 사람들이라 해도 문제를 만들기 마련이며, 오죽했으면 문제가 없다는 것은 아무 일도 일어나지 않고 있다는 증거다라는 말이 있겠는가? 문제가 발생하는 것을 ...