[Professional 소프트웨어 개발] 변하지 않는 핵심 잡기

Software|2005. 12. 19. 08:08
소프트웨어 개발자는 공부를 많이 해야 한다. 새로운 기술이 늘 쏟아지다 보니 지금 유행하는 기술도 어느새 최신 기술에 밀려 찬밥 신세가 되고 만다.

모뎀으로 겨우 통신이 가능하던 시절에는 대부분의 개발자가 단독으로 실행되는 프로그램을 개발했지만 인터넷이 등장하고 웹이 일반화되면서 웹개발이라는 새로운 영역이 생겨나기 했다.

C, C++이 보편적으로 쓰이던 때에 갑자가 Java, C#이 이라는 언어가 나타나서 개발자들에게 배울거리는 던져주기도 했다.

그러고 보면 그 옛날 열심히 공부했던 VB, Win32API, MFC는 최근 2년간 거의 사용하지 않고 C, C++ 기본 라이브러리로만 개발을 해왔었다.

툴과 언어는 계속 진화하고 또 사라진다. 특히 10여년전에 만들어진 언어는 지금도 버전업하면서 더 복잡해지고 있다. 특히 툴이나 특정 프레임웍 또는 API에 의존적으로 개발을 하다 보면 변화에 둔감해 질 수 있다. 당장 MFC는 앞으로 거의 사용되지 않을 전망이고 Win32 API 미래도 그리 밝아보이지 않는다. 새롭게 출시될 롱혼에서는 이 들을 가지고는 롱혼 전용 애플리케이션 개발은 불가능할 것이다.

그래도 우리가 배우고 익힌 소프트웨어 기술 가운데 변하지 않는 핵심은 분명 존재한다. 하지만 바쁘게 개발을 하다보면 이런 것들을 잘 못느끼고 엉뚱한 것들에 가치를 두는 경우가 많다. 대표적인 것이 툴과 언어에 대한 집착이다.

그렇다면 변하지 않는 것은 무엇이 있을까?

"Professional 소프트웨어 개발"이란 책에서는 SWEBOK에서 식별한 전문 소프트웨어 엔지니어가 갖추어야 할 능력을 구성하는 지식 영역을 다음과 같이 소개하였다.

* 소프트웨어 요구사항(Software Requiremenet)
* 소프트웨어 설계(Software Design)
* 소프트웨어 구축(Software Construction)
(상세설계, 코딩, 디버깅, 단위시험, 코드리뷰, 최적화)
* 소프트웨어 시험(Software Testing)
* 소프트웨어 유지보수(Software Maintenance)
* 소프트웨어 형상관리(Software Configuration Management)
* 소프트웨어 품질(Software Quality)
* 소프트웨어공학 관리(Software Engineering Management)
* 소프트웨어공학 툴과 방법론(Software Engineering Tools and Method)
(CASE 도구, 재사용 코드 라이브러리, 정형 방법론 같은 도구와 방법론의 지원, 조직 내에서 도구와 방법론 채택, 전파하는 기법)
* 소프트웨어공학 프로세스(Software Engineering Process)
(소프트웨어 개발 품질, 일정, 생산성 및 프로젝트와 제품의 특성을 향상시키기 위한 활동)

사실 여기서 많은 개발자들이 앞부분의 2-3개 분야가 모든 것인양 알고 공부해왔을 것이다. 오직 코딩이라는 측면만 보면 그 말도 맞긴 하다. 하지만 우리가 생각하는 것외에 더 많은 지식 영역이 존재하고 이는 더 좋은 소프트웨어를 개발하는데 필수적인 지식이다. 그럼에도 불구하고 많은 개발자들이 품질이나 프로세스와 같은 SE측면을 간과하고 있는 것은 안타까운 부분이다.

나만 좋은 소프트웨어를 개발하는데는 많은 지식이 필요하지 않지만 남이 좋아하는 소프트웨어를 개발하기 위해서는 몇배의 지식이 필요하다.

오늘도 나만을 위한 개발을 위해 엷은 지식에 만족하고 있는지 되묻고 싶다.

참고문헌
* Professional 소프트웨어 개발, 스티브 맥코넬, 2003
* SWEBOK (http://www.swebok.org)

읽을거리
* 프로그래머가 알아야할 것

'Software' 카테고리의 다른 글

단순함의 미학  (1) 2006.06.08
소니 아이보 SDK  (0) 2006.02.12
[Professional 소프트웨어 개발] 소프트웨어의 특성  (0) 2005.12.13
일 잘하는 법, 마이크로소프트에서 배운다  (1) 2005.09.13
나의 조엘 테스트  (0) 2005.08.10

댓글()

[Professional 소프트웨어 개발] 소프트웨어의 특성

Software|2005. 12. 13. 08:15
"Professional 소프트웨어 개발"을 읽고

소프트웨어업계에 몸을 담은지도 거의 10년이 다 되가는 것 같다. 대학 졸업하기전부터 업계에 투신(?)했기 때문에 오랜 경력을 쌓고 있으나 그것이 진정한 경력이라고 말하기는 힘든 것 같다. 적어도 이 책을 읽고 나면 그런 생각이 든다.

Software Engineering의 중요성을 알게 된 것은 그리 오래되지 않았다. 2003년 PDA용 웹브라우저를 개발하면서 마감기간을 지키기 위해 몇날을 밤새웠고 잘못된 아키텍쳐 선정으로 몇주를 그냥 날려버리고 개발보다 테스트에 많은 시간을 들이는 등 총체적인 문제에 직면했었다. 물론 프로젝트는 성공적으로 마무리가 되었다. 하지만 부작용은 심각했다. 크리스마스와 새해를 회사에서 보냈고 결국 무리하게 개발을 진행하다가 핵심 개발자 두 명이 회사를 그만두고 말았다.

무엇이 문제였을까?

* 우선은 너무 짧은 개발기간이 문제였다.
사실 이것이 모든 문제의 원인 같다. 이로 인해 프로젝트에 대한 검토 기간이 적어 잘못된 아키텍쳐를 적용했고 몇가지 요구분석이 제대로 이루어지지 않아(이보다는 요구분석이 공유되지 않아)중요한 기능들을 나중에 적용하느라 많은 부분에서 수정이 이루어졌다.

* 자동화된 테스트를 시도하지 않았다.
브라우저 특성상 여러 웹페이지를 테스트해야 하는데, 이를 모두 사람이 하나하나 테스트를 했다. 기능하나 추가할 때 마다 여러 기종으로 모든 웹페이지를 다 테스트했다.

* 개발초기에 Code Review가 없었다.
각자 모듈을 어느정도 개발하고 통합하려고 보니 심각한 문제가 발생했다. 중요한 통신 모듈 코드가 생각보다 복잡하고 확장하기 힘들게 개발된 것이다. 그 분야에 개발경험이 없는 개발자에게 무턱대고 일을 시킨 결과 원하는 품질의 코드가 나오지 않은 것이다. 미리 미리 코드 리뷰를 거쳤다면 초기에 해결될 문제를 결국 거의 다시 개발할 수 밖에 없었다.

이 책을 보면 위와 같은 문제에 관해 이미 잘 나와있었다. 아마 소규모 개발업체의 많은 개발자가 이런 문제에 직면하고 있을 것이다.

아래와 같이 소프트웨어의 특성을 안다면 위와 같은 실수는 되풀이하지 않을 것이다.

소프트웨어의 특성
1. 프로젝트의 성공은 초기에 얼마나 빨리 코딩하는기에 달려있지 않다.
2. 결함수를 비용과 일정과 맞바꿀 수 없다.
품질에 집중하라. 이를 위해 테스트 & review를 통해초기 버그를 줄여라
3. 은빛 총알은 프로젝트에 유해하다
방법론(CMM, RUP)이나 기술을 너무 믿지 마라. 모든 것을 해결해주지는 않는다.
4. 건성으로 프로세스를 개선하는 것은 유해하다
5. 소프트웨어는 소프트하지 않다. 소프트웨어를 소프트하게 만들기 위해서는 비용이 더 든다.

다음에 계속...

참고문헌
* Professional 소프트웨어 개발, 스티브 맥코넬, 2003

댓글()

집중력을 높이자

기타|2005. 12. 6. 20:06
집중력은 우리가 일을 하고 공부하는데, 뭔가를 창작하는데 있어서 기본 동력을 제공하는 역할을 한다. 사실 천재는 그렇게 특별한 존재가 아니라고 생각한다. 단지 집중력에서 그들이 더 뛰어나기 때문에 천재라는 소리를 듣게 되는 것이다.

학생들이 집보다 일부러 도서관이나 돈을 내가면서 독서실에서 공부하는 경우가 많은데, 이것도 다 외부의 간섭과 유혹에서 벗어나 집중력을 높이기 위한 시도라고 볼 수 있다.

그렇다면 어떻게 집중력을 높일 수 있을까?

우선 집중력은 어느 정도 타고 난다고 한다. 성격별로 보면 내성적이고 정서가 안정된 사람이 집중력이 대체로 높다고 한다.

필자도 집중력이 약해서 고생을 하고 있다. 뭔가를 코딩하고 만들때는 집중력이 높지만 공부하거나 어떤 일을 꾸준히 하는데는 문제가 좀 있다. 아무래도 생각이 많고 이것저것 관심을 갖다 보니 체계적으로 계획을 세워 일을 진행하는 것이 아니라 이것저것 손에 닿는대로 하다보니 집중을 잘 못했던 것 같다.
이럴 때는 한가지 일에 전념하고 맡았던 일이 끝나기전에 다른 새로운 분야에 손을 대어 대충하기보다 한가지 분야에 목표를 세워 진행하는 것이 도움이 된다.

그렇다면 어떻게 하면 집중력을 향상 시킬 수 있을까? 참고문헌에 소개한 책을 보면 아래와 같이 나와있다. 공감이 가는 부분이다.

* 한가지일에 전념하라
* 방해자극이 눈에 띄지 않게 한다
* 관련자극을 눈에 띄게 한다
* 희망과 목표를 세워라
* 데드라인 효과를 이용한다
* 휴식을 취하라
* 스트레스를 해소하다
* 평삼심 유지하라(요가나 선을 이용 불안공포 제거한다)
* 물리적 환경 구축한다.
1. 소음차단
2. BGM효과
3. 쾌적한 실내 온도
3. 조명연출
4. 식물과 향기 효용

* 평소 건강관리에 힘쓴다.
* 바이오리듬을 고려하거나 수면주기를 깨지 않는다(늦게자도 제시간에 일어나기)

집중력이 없다고 불평하지 말고 평소 생활습관 잘 개선한다면 좀 더 높은 집중력으로 빠르게 일을 처리할 수 있지 않을까?

지금부터라도 방 잘 치우고 동시에 여러가지 일을 하기보다 한가지를 일에 몰두하는 습관을 가져야겠다.

참고문헌
집중력을 기른다, 모리 토시아키 지음, 지식공작소

'기타' 카테고리의 다른 글

단순하게 살기  (0) 2006.01.10
올해의 사진  (0) 2005.12.27
Steve Jobs to 2005 graduates: 'Stay hungry, stay foolish'  (0) 2005.11.05
시계 화면보호기 소개  (0) 2005.11.05
김치와 자본주의  (2) 2005.11.03

댓글()

Steve Jobs to 2005 graduates: 'Stay hungry, stay foolish'

기타|2005. 11. 5. 20:00

 

Steve Jobs (스티브 잡스)

얼마전 애플 CEO 스티브잡스가 스탠포드 대학 졸업식에서 멋진 연설을 했다. 짧지만 그가 걸어온 인생을 3가지 이야기로 정리하였다.

그가 오늘날까지 성공할 수 있었던 것은 정말 자신이 하고 싶은 것이 무엇인가에 대한 깊은 고뇌가 있었고 이를 위해서는 남들과 똑같은 길을 가지 않고 마음속에서 진정 원하는 길로 갔기 때문에 가능했다.

그리고 자신이 만든 회사에서 쫓겨났지만 신념을 잃지 않고 자신이 믿는 바대로 다시 나아갔다. NeXT라는 회사를 설립하여 밑바닥 부터 다시 시작했고 결국 애플 CEO로 복귀하여 오늘날 애플을 최고의 컴퓨터 회사로 만들었다.

마지막으로 자신의 췌장암 극복을 예로 들면서, 인생의 시간을 낭비하지 말고 남들이 살아온 방식에 너무 귀 기울이지 말며 자신의 열정과 직관에 따를 수 있는 용기를 갖으라고 주문했다.

그리고 마지막에 "Stay hungry, stay foolish"라는 말을 남겼다. 이 말은 아마도 "현실에 안주하지 말고 남들과 똑같이 행동하지 말라"라는 의미로 오늘 연설을 함축한 표현인듯 보인다.

오늘날 애플의 성공이 우연이 이루어진 것이 아님을 그의 삶속에서 발견할 수 있었다.

http://news-service.stanford.edu/news/2005/june15/grad-061505.html

'기타' 카테고리의 다른 글

올해의 사진  (0) 2005.12.27
집중력을 높이자  (0) 2005.12.06
시계 화면보호기 소개  (0) 2005.11.05
김치와 자본주의  (2) 2005.11.03
그동안 편하게 살다보니...  (0) 2005.10.25

댓글()

시계 화면보호기 소개

기타|2005. 11. 5. 14:55
회사에서 어느 분이 사용하는 스크린세이버이다. 왔다갔다하면서 출처가 좀 궁금하긴 했는데, 우연히 인터넷에서 찾게 되었다.

숫자 넘어갈때도 진짜 시계처럼 넘어간다. 지금은 이런 시계가 나오지 않지만 옛날에 봤던, 가끔 영화속에서 볼 수 있는 그 시계를 화면보호기로 만나보자.



다운로드
http://www.9031.com/downloads/index.html

'기타' 카테고리의 다른 글

집중력을 높이자  (0) 2005.12.06
Steve Jobs to 2005 graduates: 'Stay hungry, stay foolish'  (0) 2005.11.05
김치와 자본주의  (2) 2005.11.03
그동안 편하게 살다보니...  (0) 2005.10.25
결혼이란?  (4) 2005.09.17

댓글()

김치와 자본주의

기타|2005. 11. 3. 22:23
요즘 김치로 나라가 떠들썩하다. 납이 검출됐네, 기생충 알이 나왔네...
너도 나도 김치를 담가 먹겠다고 하니 배추값이 폭등을 했다.

이맘쯤이면 이집 저집에서 김장을 담그던 풍경이 흔했는데, 이제는 그런 말을 찾아보기 힘들어졌다. 배추, 무우는 1년 내내 쉽게 구할 수 있고 김치외에 먹을 거리가 풍성해서 그 만큼 김치를 덜 먹게 되었다. 게다가 이제는 가까운 식료품점에서 손쉽게 김치를 사다 먹을 수 있게 되었다.

언제부터인가 사람들은 집에서 직접 만들던 것들을 힘 안들이고 밖에서 사먹게 되었다. 더 효율적이고 경제적일 수도 있다. 분명 예전 보다 싼 값에 계란도 먹고 닭도 쉽게 먹을 수 있게 되었다. 대형할인판매점에 가면 부위별로 고기를 구할 수 있고 냉동된 해산물도 쉽게 구한다.

참 좋은 세상이 된 것 처럼 느껴진다.

하지만 이런 편안함과 경제성이 조금씩 우리 건강과 환경을 위협하고 국가간 대륙간 불평등을 초래하고 있다.

경제성을 빌미로 대량생산을 하다 보니 좁은 공간에서 많은 생산성을 확보해야 한다. 결국 가축이나 농산물을 생산하는데 있어 생장 촉진제, 농약, 살균제 등 각종 화학물질을 이용하게 된다.

가축을 키우기 위해 필요한 땅과 사료를 위해 사람이 먹을 식량을 재배하지 못하게 되고 가축에서 발생하는 각종 오염물질로 인해 자연환경이 파괴되고 있다. 결정적으로 후진국 사람들이 기아에 쉽게 노출되고 만다는 점이다. 우리가 육식을 하지 않는다면 이 지구상에 모든 사람들이 굶지 않고 살 수 있다고 한다.

사람들은 싼가격에 먹거리를 구하다 보니 너무 많이 먹게 되고 결국 비만으로 자신의 건강을 위협받게 된다.

이 처럼 먹거리에 대한 자본주의는 우리의 건강과 환경을 위협하고 많은 사람들을 고통스럽게 만든다. 나만 편한 세상이 아닌 우리 모두가 행복해질 수 방법은 없을까?

현대를 살아가는 우리에게 다가올 미래를 보다 행복하게 만들 지혜가 필요하다.

'기타' 카테고리의 다른 글

Steve Jobs to 2005 graduates: 'Stay hungry, stay foolish'  (0) 2005.11.05
시계 화면보호기 소개  (0) 2005.11.05
그동안 편하게 살다보니...  (0) 2005.10.25
결혼이란?  (4) 2005.09.17
경쟁과 사람  (2) 2005.09.12

댓글()

그동안 편하게 살다보니...

기타|2005. 10. 25. 21:02
부모님을 떠나 새 둥지를 틀고 살아보니, 그 동안 참 편하게 살았다는 생각이 듭니다.
화요일이면 어김없이 찾아오는 분리수거의 날.

안사람이 해주는 밥을 먹고 나면 설거지도 해야 하고 주말이면 집안 청소도 해야 합니다.
시장도 보러 가야 하고 빨래도 널어야 하고 .. 물론 저만 이러는 것은 아닙니다.

집사람도 무척 바쁘답니다. 어머니가 해준 것 보다 자기가 한 음식이 맛 없다고 툴툴거리며 열심히 이것저것 음식을 만들어 봅니다.

주말에 손님이라도 오면 더욱 더 바빠집니다. 결혼준비에 신혼살림에 극장 가본지 꽤 됐습니다.

그래도 재밌게 살고 있습니다.

앞으로 집들이도 해야 하는데, 쉽지만은 않네요~

'기타' 카테고리의 다른 글

시계 화면보호기 소개  (0) 2005.11.05
김치와 자본주의  (2) 2005.11.03
결혼이란?  (4) 2005.09.17
경쟁과 사람  (2) 2005.09.12
이순신의 전쟁은 끝나지 않았다  (0) 2005.08.29

댓글()

결혼이란?

기타|2005. 9. 17. 06:55
결혼을 하게 된다니 인생의 50%는 성공한 느낌입니다. 여기에 사회적으로 건강한 아이를 잘 키운다면 80%는 성공했다고 생각합니다. 나머지 20%에 너무 목숨걸지 않았으면 좋겠습니다. :)

주위에 보면 독신으로 사신분들이 많습니다. 결혼하는 것과 혼자사는 것. 둘다 장단점이 있습니다. 누군가 그렇게 말했죠. "결혼은 해도 후회 안해도 후회" 기왕 후회할 것 결혼은 꼭 하라. 이런 이유 때문에 결혼하는 것은 아닙니다.

사회적 관점에서 볼 때, 결혼은 세대를 연결하고 공통 구성원의 문화, 관습, 언어, 가치관를 유지하는데 큰 역할을 합니다. 이런 사실로 볼 때, 국가적으로 결혼은 참 중요합니다. 하지만 국가에서는 너무 무심한 편이죠.

결혼을 통해 사회 구성원간의 통합작용이 일어난다고 봅니다. 지역, 계층, 국가간의 통합이 이루어지는 것이죠. 그렇기 때문에 결혼을 통해 만들어지는 가정이라는 한 단위가 세상을 변화시키는데 큰 역할을 합니다. 우리가 낳는 아이들은 부모가 바라는데로 크겠죠? 부모가 어떻게 바라느냐에 따라 그 아이는 이 사회를 건강하게 만드는 싹이 될 수도 있고 사회를 썩게 만드는 독이 될 수도 있습니다. 그래서 결혼은 참 중요합니다.

결혼이 단순히 두 사람 또는 두 가족간의 결합이라는 단순한 의미 보다는 가정을 이루고 그 가정을 통해 사회가 건강하고 올바른 가치관이 세대를 거쳐 전달되도록 하는 과정이라고 보면 더 뜻이 깊다고 생각합니다.

그래서 공부가 참 많이 필요한 것 같습니다. 좋은 가정을 만들기 위해 이제 부터 열심히 공부해야겠습니다.

'기타' 카테고리의 다른 글

김치와 자본주의  (2) 2005.11.03
그동안 편하게 살다보니...  (0) 2005.10.25
경쟁과 사람  (2) 2005.09.12
이순신의 전쟁은 끝나지 않았다  (0) 2005.08.29
모든 문제의 해결 방안  (0) 2005.08.22

댓글()