본문 바로가기

소프트웨어 공학

소프트웨어 공학이 뭔가? 필자가 소프트웨어 공학(소프트웨어 엔지니어링)이란 용어를 안 것은 얼마 되지 않았습니다. 소프트웨어 공학이라는 용어를 접하고 그 내용을 보니 오랫동안 소프트웨어를 개발하면서 해왔던 그 방법 그대로를 적어 놓은 것에 불과했습니다. 물론 소프트웨어 공학에 포함된 전체 내용은 상당히 방대하지만 그 근본 원리와 핵심적인 내용들은 아주 익숙한 내용들이었습니다. 지금 글을 읽고 계신 분께서 소프트웨어를 아주 잘 개발하고 있다면 이들은 이미 소프트웨어 공학의 대가입니다. 단순히 머리가 좋아서 혼자서 잘 개발을 잘하는 것을 제외하고 여러 명의 팀을 이끌고 복잡한 시스템을 짧은 시간에 가장 적은 비용으로 품질 높은 제품을 이미 만들어 내고 있다면 소프트웨어 공학이란 말을 한번도 들어본 적이 없어도 이미 전문가입니다. 대.. 더보기
소프트웨어 공학이 왜 필요하지? 복잡하기만 한데... 소프트웨어 공학 블로그를 운영하고 있으면서도 전면에는 소프트웨어 공학이라는 말을 사용하고 있지 않습니다. 그 이유는 소프트웨어 공학은 막연하고 왠지 모르게 문서도 많이 만들어야 할 거 같고, 절차도 엄격히 따라야 할 것 같아서 부담스러운 느낌을 줄 수 있기 때문입니다. 이것이 다 소프트웨어 공학에 대한 오해에서 비롯된 것 같습니다. 이미 유행이 한번 쓸고 지나간 CMMI나 외국의 유명한 방법론들을 도입했다가 실패한 경험과 소문들 때문일 겁니다. Naver 백과사전에서 소프트웨어 공학을 찾아봤습니다. 다음과 같이 설명되어 있더군요. 요약 컴퓨터 소프트웨어의 계획·개발·검사·보수·관리 등을 위한 기술과 그것을 연구하는 분야이다. 소프트웨어의 규모가 커지고 복잡해짐에 따라 공학적인 접근으로 구조화 프로그래밍을.. 더보기
오늘도 밤을 세워야 하는 개발자 (야근 탈출) 옛날부터 내려오는 경영자들이 믿고 있는 미신이 있습니다. "개발자의 Output은 근무시간의 양에 비례한다." 말은 아니라고 하면서도 밤에 사무실이 텅 비어 있으면 개발자들이 군기가 빠졌다고 생각하고 주말에 누가 나와서 일하나 확인하러 가끔 사무실에 들르는 사람들이 경영자입니다. 실제로 근무시간에 성과가 비례하는 개발자들이 있다면 공장에서 벽돌 찍어내는 것과 다를 바가 없겠지요. 이 미신은 믿기 싫지만 자꾸 저절로 손이 가는 새우깡처럼 믿게 되고, 회사 조직에서 위로 올라갈수록 더 맹신하게 되나 봅니다. 이러한 이유로 어쩔 수 없이 또는 습관적으로 야근을 하는 개발자가 있다면 십중팔구 미혼이거나 결혼을 했어도 아이가 없겠죠. 이런 정상적이지 않은 생활을 하며 10, 20, 30년간 소프트웨어 엔지니어 일.. 더보기
우리 개발자는 뭐든 뚝딱 잘 만들어요. 소프트웨어를 개발하기 위해서는 기본적으로 갖춰야 할 인프라스트럭쳐시스템(Infrastructure System, 기반시스템)에 대해서 이미 본 블로그에 글을 올린 적이 있습니다. 그런데 여러 회사를 만나보니 이러한 시스템 중에서 일부를 직접 만들어서 사용하려는 경우를 종종 접하게 됩니다. 이런 회사를 "Tool company"라고 부릅니다. 자신들의 주력 제품이 아니고 개발하기 위해서 필요한 툴들을 만들어서 사용하려는 회사를 말합니다. 물론 워낙 특수한 형태의 툴로서 세상에 존재하지 않거나 구할 수가 없는 예외적인 경우도 있습니다. 하지만 개발 프로세스에 일반적으로 필요한 시스템들은 직접 만들어서 사용한다는 것은 큰 문제입니다. 특히, 버그관리시스템이나 프로젝트관리시스템을 만들어서 사용하거나, 만들려고 .. 더보기
우리나라에는 전지전능한 슈퍼 개발자가 있다. 여러 소프트웨어 회사를 컨설팅하다보면 아주 많은 개발자들을 만나게 됩니다. 그 중에는 전지전능한 슈퍼 개발자를 만나게 됩니다. 코딩, 설계, 분석, 테스트, 기획, 고객 전화응대, 고객 지원, 프로젝트 관리, 일반 관리, 아키텍처 등등 엄청나게 많은 일을 하는 개발자들을 보게 됩니다. 이들은 대부분 팀장 쯤 됩니다. 어떻게 생각하시나요? 바람직해 보입니까? "나도 그런 전지전능한 개발자야 돼야지"라는 생각이 드십니까? 혹시 지금 이렇게 모든 분야의 일을 다 하고 계시나요? 이것은 One man company 얘기가 아닙니다. 개발자가 100명이 넘는 회사도 이러한 경우를 여럿 봤습니다. 대부분은 회사가 성장과정에서 적당한 때에 조직을 변화시키지 못하고 그냥 달려온 경우입니다. 이런 경우 전지전능한 개발자.. 더보기
소프트웨어 개발 컨설팅 나는 한글과컴퓨터에서 처음 소프트웨어 개발을 시작했고, 안철수연구소를 거쳐서 현재는 소프트웨어 개발 컨설턴트로 일을 하고있습니다. 누군가에게 나 자신을 소개할 때 "소프트웨어 개발 컨설턴트" 또는 "소프트웨어 엔지니어링 컨설턴트"라고 하면 무슨일을 하는지 잘 모르는 경우가 많습니다. 흔히 소프트웨어 엔지니어(개발자)와 헷갈리기도 하고 솔루션 컨설턴트나 Oracle 컨설턴트를 떠울리기도 하죠. 내가 하고 있는 일은 소프트웨어를 개발하고 있는 회사와 만나서 회사나 개발팀이 가지고 있는 문제점들을 해결하고 좀더 효율적으로 소프트웨어를 개발할 수 있도록 도와주는 것입니다. 개발의 기초라고 할 수 있는 시스템들을 갖추는 것을 도와주고 교육도 시키고, 회사의 개발 프로세스도 정립을 시키고, 소프트웨어 개발에 필요한.. 더보기