레이블이 소프트웨어공학인 게시물을 표시합니다. 모든 게시물 표시
레이블이 소프트웨어공학인 게시물을 표시합니다. 모든 게시물 표시

2011년 3월 6일 일요일

아는 것과 실행하는 것


"아는데 지금은 바빠서 못한다."라고 하는 말을 종종 듣는다.

"개발을 체계적으로 해야 하는데 지금은 그럴 여유가 없다."

"소프트웨어 개발을 할 때 문서를 제대로 써야 하는 것을 알고 쓸 줄도 아는데 시간이 없어서 그렇게 할 수 없다."

"Peer review를 해야 하는데 그럴 시간이 없다."

"시간이 걸리더라도 신입 개발자들에게 시켜야 하는 일이지만 너무 급해서 내가 직접 한다."

가만히 얘기를 들어보면 시간만 있으면 뭐든지 다 할 수 있을 것 같이 얘기를 한다. 그리고 또한 다 할 줄 안다고 한다.

이런 얘기를 하는 사람들의 대부분은 해본적도 없고 할 줄도 모른다는 것이다. 또한 시간이 아무리 많이 있어도 그렇게 하고 싶은 생각은 없을 것이다.

이런 것이 필요하다는 것을 알고 있다면 이미 시행하고 있을 것이다. 시간이 없어서 소프트웨어 공학을 적용하지 못한다는 것은 핑계이거나 소프트웨어 공학이 무엇인지 전혀 모르고 있는 것이다.

문제는 이런 사람들이 분위기를 흐린다는 것이다. 소프트웨어 공학이 마치 필요는 하지만 지금은 아닌 것 같은 착각을 하게 된다. 소프트웨어 공학은 1명이 개발하더라도 필요하고 10,000명이 개발하더라도 필요한 것이다. 목적은 단 한가지, "일정과 비용"을 줄이기 위한 것이다. 

시간이 없어서 그렇게 못하고 있다면 소프트웨어 공학이 뭔지 잘 모르고 시행하는 방법을 모르고 있었던 것 뿐이다.

맨날 건강을 위해서 운동을 해야 하는데 지금은 바빠서 운동을 못하고 있다고 얘기하는 것과 똑같다. 이런 사람은 시간이 남아 돌아도 운동을 하지 않는다. 운동이 재미 있어야 하는 것이다. 

소프트웨어 공학을 적용하여 개발을 하면 더 재미 있어진다. 경영자 입장에서는 비용이 줄어든다. 그렇지 않다고 생각하고 있는 사람이 있다면, 또는 알고는 있는데 지금은 바빠서 못한다고 생각하는 사람이 있다면, 소프트웨어 공학이 무엇인지 잘못 알고 있는 것이 아닌가 다시 한번 생각해보는 것이 좋다.

2010년 7월 8일 목요일

소프트웨어 개발자를 위한 소통의 장

그동안 블로그에 글을 쓰면서 여러 개발자분들의 의견을 듣는데 많은 불편함을 느껴왔습니다.
블로그의 글에 댓글을 남기면 약간 소통이 되기는 해도 주로 일방적인 전달을 벗어나지 못했습니다.
그렇게 해서는 많은 의견을 주고 받을 수도 없고, 소프트웨어를 개발하면서 생기는 수많은 문제들을 해결하는데 실질적인 도움을 주기 어려웠었습니다.

그래서, 소통을 좀더 강화하고자 allofsoftware 메일링리스트를 만들었습니다.

메일링리스트가 어떤것인지 다들 잘 알고 계시겠지만 간단히 설명하자면 allofsoftware 메일링리스트에 가입을 하시면 [email protected]으로 보내는 모든 메일을 수신하실 수 있습니다. 거꾸로 내가[email protected]으로 메일을 보내면 모든 가입자가 메일을 받아 봅니다.

소프트웨어 공학에 대해서 궁금한 것이나 실제로 소프트웨어를 개발하면서 닥치는 문제들을[email protected]으로 메일을 보내면 모든 가입자들이 내용을 보고 서로 답장을 보내면서 토론을 이어갈 수 있습니다. 이를 통해서 댓글을 통해서만 간단한 질문을 할 수 있는 것을 넘어서 현실적인 문제를 많은 개발자와 즉시 의논할 수 있을 것으로 기대합니다. 저 또한 열심히 답변을 보내도록 하겠습니다.

가입방법은 블로그 오른쪽 사이드바에 아래와 같은 위젯이 있습니다. 여기에 Email주소를 입력하면 됩니다. 간단하죠?

많은 성원 부탁합니다. 

2009년 5월 15일 금요일

나는 혼자가 아니다.

지금 내가 생각하고 행동하는 것은 나 스스로의 힘이 아닙니다. 과거의 수많은 대가들이 이룩해 놓은 지식, 경험과 지혜를 간접적으로 배우면서 자라온 내가 있고 그 바탕 위에 내가 존재 합니다.

이런 성현들의 지식이 없다면 지금의 내가 존재 할 수 있을까요? 원시인과 별 차이 없는 내가 있겠죠.

소프트웨어를 개발하다 보면 수많은 문제에 부딪히는데 그 대부분은 이미 과거에 소프트웨어 개발의 대가들이 다 겪은 후에 그 해결책을 다 만들어 좋은 것들입니다. 그렇지 않고 소프트웨어 역사상 처음 발생하는 이슈는 거의 없습니다.

그런데 많은 개발자들의 개발 행태를 보면 마치 최초의 선구자 같이 행동을 합니다. 과거에서 배우지 않고 자신의 지식과 경험 테두리 안에서 별 희안한 방법들을 생각해 냅니다.

피아노를 배우려고 하는데, 모짜르트도 모르고 그냥 혼자 피아노를 연습하는 것 같습니다. 지금의 피아노 연주 기술은 과거의 수많은 음악가들이 없었다면 존재 할 수 없죠. 또 그 기술은 혼자서 인터넷 보고 익힐 수 있는 것이 아니고 스승에게 배우고, 혼자서 또 부지런히 연습을 해야 합니다.

문서를 왜 써야 하는지? 

Peer review를 왜 해야 하는지? 

소스코드를 어떻게 관리해야 하는지? 

빌드는 어떻게 해야 하는지? 

고객이 요구사항을 자주 바꾸는데 어떻게 해야 하는지?

테스트는 어떻게 해야 하는지?

Internationalization은 어떻게 해야 하는지?

버그 관리는 어떻게 해야 하는지?

개발 시간을 어떻게 단축할 수 있는지?

이외에도 수천가지 소프트웨어 개발 이슈들은 이미 과거의 대가들이 다 고민하고 방법들을 제시해 놓은 것들입니다. 하지만 이를 배울 스승이 부족하고, 책만 보고 배우기는 어렵기 때문에 나름대로의 방법들을 사용하고 있습니다. 그래서 결국에는 한계에 부딪히게 됩니다.

이러한 지식들을 총칭해서 소프트웨어 공학이라고 합니다. 과거의 대가들에게서 간접적인 도움을 받으면서 소프트웨어를 효과적으로 제대로 개발을 하려면 소프트웨어 공학에 관심을 가져야 합니다. 책을 보면서 간접 경험을 하고 전문가나 스승을 만날 기회가 있다면 최대한 많이 배우려고 노력하고, 가장 좋은 방법은 그런 대가들이 바글바글한 회사에 취직해서 직접적인 경험을 하는 것이지요.