2009년 5월 15일 금요일

나는 혼자가 아니다.

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

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

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

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

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

문서를 왜 써야 하는지? 

Peer review를 왜 해야 하는지? 

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

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

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

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

Internationalization은 어떻게 해야 하는지?

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

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

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

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

댓글 5개:

  1. 개발자의 자존심이 남이 이미 겪은 문제일것이다라는 걸 생각도 못하게 가끔은 막더군요
    그래도 아주 드문 문제들은 구글신의 힘을 빌어도 안나오니(어쩌면 키워드 문제일지도..)
    이럴때 만큼은 자존심을 발동해도 되려나요 ^^

    그래도 남이 걸은 길을 걷는 것보다는, 자기가 스스로 길을 찾아 가며(비록 남이 길을 만들어 놨더라도) 한걸음씩 성숙하는게 더 좋지 않을까 생각을 해봅니다.

    답글삭제
  2. "가장 좋은 방법은 그런 대가들이 바글바글한 회사에 취직해서 직접적인 경험을 하는 것이지요. "
    -> 이 말이 너무 와닿는군요. 서브버전이 scm의 한 종류라는 것도 모르는 9년차 선배가 있는 회사를 다니는 중 입니다...

    답글삭제
  3. 구차니님 안녕하세요.
    시행착오를 줄이면서 스스로 길을 찾는 것도 좋은 방법이라고 생각합니다. 뭐든지 적절히 조절하는 것이 좋겠지요.

    답글삭제
  4. 두렁청해님 안녕하세요.
    우리나라 대부분의 소프트웨어 회사의 현실이 그러니 크게 실망하지 마세요. 회사가 아니더라도 경험할 곳은 많으니 두렁청해님이 한번 lead 해 보세요.

    답글삭제
  5. 수습도 안끝난 신입이라 힘이 하나도 없네요
    말은 좋은거 있으면 같이 배우자~ 좋은 안 내봐라~ 이러면서 막상 자기가 하던 방식 아니면 할려고 안하더군요~
    물론 설명해드렸지요~^^
    서브버전 쓰면서 커밋, 체크아웃, 업데이트 3가지만 잘 사용해도 희망을 가질텐데 서브버전 서버를 ftp처럼 쓸려고 하더군요.ㅠㅠ

    답글삭제