SimpleIsBest.NET

유경상의 닷넷 블로그
이 글은 오래된 전에 작성된 글입니다. 따라서 최신 버전의 기술에 알맞지 않거나 오류를 유발할 수 있습니다. 저자는 이 글에 대한 질문을 받지 않을 것입니다. 하지만 이 글이 리뉴얼 되면 이 글에 대한 질문을 하거나 토론을 할 수도 있습니다.

잠깐 시장 조사차 게시판 놀이를 잠시 했습니다. 이런 글을 적을 자격이나 있는지 모르겠지만 느낀점과 하고싶은 말을 몇 자 끄적여 봅니다...

아... 구린 닷넷이여...

라고 말하는 사람들을 개발자 게시판 등을 돌아다니다 보면 많이 볼 수 있다. C++에는 있는 소멸자(destructor)가 C#에는 없다는 둥... MFC에는 이게 되는데 닷넷은 안 된다는 둥... 자바는 이게 편한데 닷넷은 이게 불편하다는 둥... 프로그래밍 언어적인 불편함부터 시작해서 개발툴에 대한 불만 등등...

이런 불만을 갖는 사람들이 비단 닷넷 개발자들만 있겠는가? C++ 개발자들도, PHP 개발자들도, 자바 개발자들도 항상 자신이 사용하는 프로그래밍 언어, 개발 환경, 응용 프로그램 플랫폼, 운영체제에 불만을 가진 개발자들이 많이 있을 것이다. 필자도 성인군자가 아닌지라 일련의 불만을 가지고 있다. 뭐 구차하게 나열하진 않겠지만 말이다.

이러한 불만 사항은 개발환경, 프로그래밍 언어 등을 발전시키는 밑거름이 되곤 한다. 소프트웨어(그것이 개발환경이건 개발도구건 운영체제이건)는 버전이 올라갈 수록 기능적인 면부터 시작해서 성능적인 면, 편의적인 면, 하다못해 가격적인 면에서라도 변화하게 되고 그 변화는 대개의 경우 발전적인 방향을 띠는 것이 일반적이다. 이러한 무엇이 소프트웨어 발전을 도모하는 것일까? 소프트웨어를 개발하는 개발사의 기획팀이 발전적인 모습을 리딩 하는 것일까? 소프트웨어의 개발자들이 새로운 기능을 능동적으로 추가하는 것일까? 물론 그럴 수도 있겠지만 대부분의 소프트웨어의 발전적인 변화 사항은 고객의 피드백(feedback)으로부터 나오는 것이 일반적이다.

공연히 말을 좀 길게 했는데, 아쌀하게 말하면 사용자(개발자도 개발환경, 개발도구의 사용자이다)의 발전적인 불만 사항을 토대로 소프트웨어는 발전된다는 얘기가 되겠다. 필자가 하고 싶은 말은 건전(?)하고 발전적인 불만은 소프트웨어 그 자체와 프로그래밍 환경을 발전시키는데 원동력이라는 것이다.

불만을 갖는 것과 싫어하는 것은 다르다.

하지만... 몇몇 프로그래밍 게시판을 보면 자신이 사용하는 개발환경, 프로그래밍 언어 등에 대해 발전적인 불만을 토로하는 것이 아닌 단순한 불만을 토로하는 사람을 볼 수 있다. 필자의 짧은 지식과 경험에 의해 그러한 불만을 검토해 보면 대개 해당 플랫폼에 대한 이해가 부족한 경우가 많더라는 것이다. 예를 들어 닷넷에 소멸자가 없는 것을 토로하는 불만은 소멸자가 왜 없을 수 밖에 없는지(가비지 컬렉션 때문이다) 그리고 닷넷의 가비지 컬렉션이 주는 장점이 얼마나 큰지, 그리고 이 장점이 소멸자가 없음에서 오는 불편함에 비해 트레이드 오프(trade-off)가 있는지에 대해 잘 생각해 보지 않았기 때문이라고 생각된다. 그리고 소멸자가 없는 점에 대해 Dispose 패턴이 존재하며 이것으로 충분히 소멸자 역할을 대신할 수 있을 텐데 말이다. (이점에 대해서 논란이 있을 수 있겠지만, 필자의 생각이 그렇다는 얘기이다)

닷넷에 소멸자가 없다는 사실(fact)에 대해서 어떤 이는 "이건 뭐 병신도 아니고... 쓰바 숏 같네..." 라고 불만을 토로하고 어떤 이는 "아... 그럴 수 밖에 없겠구나..." 라는 반응을 나타낼까? 해당 플랫폼을 이해하는 지식의 깊이에 차이일까? 물론 그럴 수도 있다. 가비지 컬렉션이 주는 장점이나 Dispose 패턴이란 것을 모른다면 그럴 수도 있을 것이다.

필자의 싸가지 없는 개인적인 생각은 약간 다르다. 이런 류의 불만 표출은 지식의 깊이와 상관없이 자신이 사용하는 플랫폼을 좋아 하지 않는, 아니 싫어하는 생각이 은연중에 있기 때문이 아닐까라는 생각을 해본다. 자기가 프로그램을 개발하는데 사용하는 프로그래밍 언어를 좋아 하지 않는 상황에서는 아주 사소한 것도 불편하게 생각하기 마련이고 이런 것들은 점차로 플랫폼 자체를 싫어하고 신뢰하지 못하는 상황까지 오기 마련이다. 이런 상황이 오게 되면 이제 개발자는 플랫폼에 대한 그 어떤 신뢰도 갖지 못하므로 플랫폼에 대한 열정도 없이 단순한 코드만을 생산해 낼 뿐이다. 어떤 문제가 발생하면 왠지 내 잘못이 아닌 플랫폼 문제인 것처럼 보이게 되고 플랫폼에 대한 신뢰는 더욱 더 떨어지는 악순환이 반복될 뿐이다.

내 탓이요, 내 탓이요, 내 큰 탓이로소이다.

자신이 사용하는 프로그래밍 언어, 개발도구, 플랫폼을 믿지 못하면, 그 분야에서 성장하기란 힘들다고 생각한다. 개발 상 어떤 문제가 발생했을 때 그 문제를 해결하고자 하는 활동과 노력으로 실력이 향상이 되며 노하우가 쌓이게 된다는 것이 필자의 지론이라는 것에 비추어 볼 때, 자기가 사용하는 플랫폼을 신뢰하지 못하는 이는 어떤 문제에 부딪치면 그것을 해결하려는 노력보다는 플랫폼의 문제로 치부해 버리는 경우가 많고 문제를 해결하기 위한 '즐거운' 고생을 거부하는 경우가 많다. 하지만 대개 문제의 원인은 프로그래밍 언어와 플랫폼에 대한 이해 부족, 개발자 자신의 부주의함, API에 대한 이해부족, 잘못된 코딩 패턴 등이 대다수 이다.

개발언어, 플랫폼을 탓하기 전에 스스로에게 어떤 문제가 없는지 살펴보는 자성의 시간을 가져볼 필요가 있다. 사실 개발 환경이나 제품 자체에 버그가 있을 수도 있다. 그런 버그를 발견했을 때 자신이 사용하는 개발 환경, 플랫폼을 믿고 좋아 하는 사람의 반응은

"우와... 내가 이런 버그를 발견하다니... 버그 리포트를 해 볼까?"

하며 기뻐하거나 희열을 느낄 수 있다. 반면 자신이 사용하는 개발 환경, 플랫폼을 믿지 못하고 싫어하는 사람은

"아놔 이럴 줄 알았어... 아니 씹쉐이들이 잘 좀 만들어 놓지..."

하면서 더욱더 자신이 사용하는 개발환경, 플랫폼을 믿지 할 수도 있다. 놀라운 반응의 차이 아닌가? (아님 말고... -_-; )

지극히 개인적인 생각이지만...

자신이 사용하는 프로그래밍 언어, 개발 환경, 플랫폼 등(그것이 무엇이 되었건)을 좋아하지 않고 신뢰하지 않는 사람은 그 분야에서 대성하기 어렵다는 것이 요번 포스트의 싸가지 없는 필자의 생각이 되겠다.

"농구를 싫어하는 농구선수의 연봉이 높을 수 없지 않은가 !"

무엇으로 어떤 환경에서 어떤 플랫폼을 기반으로 개발을 하건 그 환경에 대한 믿음을 갖고 즐겁게 개발한다면 없던 열정과 재미도 솟아오를 것이며 재미있어서, 즐거워서 하는 프로그래밍은 자연스럽게 내공 증가에 연결되지 않을까?


이래서 블로그란 것이 좋다. 어디 커뮤니티 게시판에 이런 글을 올릴 수 있을까도 생각되고 올렸다 한 들 그 안에서 어떤 공격을 당할지도 모르기 때문이다. 그렇다고 필자가 이성적인 반론이나 비판을 거부하는 것은 아니다. 다만 비 이성적이고 소모적인 논쟁이 싫다는 것...

이럴 때 쓰라고 피드백이 있는 것이다. 필자의 생각과 다른 생각을 가진 독자들이 있다면 바로 꼰질러 주기 바란다. 단... 앞서 필자가 말했던 전제 조건을 쬐금만 생각해 보고 키보드에 손가락을 들이대길...



Comments (read-only)
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 어흥이 / 2006-12-15 오전 12:49:00
음...제 주변엔 제가 하는 닷넷을 싫어하는 사람이 너무도 많은지라
혼자서 꿋꿋하게 좋아라하고 있답니다.
뭐...억지로 그런게 아니구 제가 정말 좋아하는 환경이니 그런거죠.
신경을 쓰기 싫은데 제가 하는 일에 일일이 태클거는 사람들...그게 닷넷이라 그렇다는 사람들...
덕분에 회사 옮기려고 생각중이랍니다. 정신건강상 함께 좋아라 할 수 있는 사람이 많은곳으로 갈려구요.

"바로 오늘이 두개의 달이 떠오르는 밤이야~ 내 가슴에 맺힌 한을 풀 수 있기를~" 시대유감 by 서태지
뭐...한이 있지도 않지만 떠오르는 가사군요...ㅋㅋㅋ
좋은 밤 되세요^^
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / guest / 2006-12-15 오전 8:30:00
한 회사의 제품에 너무 많은 부분을 의존하는 것 같아
내심 불안합니다. 이것도 싫어하는 걸까요?
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 숏(?)다리 ㅠㅜ / 2006-12-15 오전 10:30:00
닷넷, C++을 사용해본 사용자로서... 사실 단 한번도 그 플랫폼을 이해하면서 코딩한 적이 없었네요..ㅋ
그냥 그녀석이 가지고 있는 기능을 이용했고, 그 기능의 조합정도..
하지만 분명한것은 닷넷이라는 넘은 무척이나 저의 피로를 덜어 주었습니다. C++을 하다가
닷넷을 하게 되면서 깜짝깜짝 놀랬으닌까요...ㅋ
한국에서 작업하다 쓰러져 병원에 실려가고... 1년 정도 쉴려고 외국에 나와있지만 아직도 많은 충전이
필요 하네요... 그래도 매일 9시30 출근에 5시 30분 퇴근이라는 행복감에 취해... 오늘도 남의 소스
긁어다가 붙여 봅니다...^^
오늘도 글 잘 읽고 갑니다.... 숏(?)다리를 소유한 불쌍한 넘이...ㅠㅜ
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 탱옹 / 2006-12-15 오전 10:31:00
예전에 누군가와의 대화내용이랄까...

Q : 왜 M$라는 표현을 쓰세요?
A : 그렇게 쓰면 뭔가 좀 아는 것 같고, 있어 보이는 것 같더라구요.

Q : .NET를 싫어하는 진짜 이유는 뭐예요?
A : 그냥 싫어요.... 그리고, .NET은 느리고, 복잡하고, 무겁잖아요.

Q : 그럼 어떤 플랫폼 좋아하세요
A : 다 별로예요. 마지못해 하는거죠.

Q : 그럼, 왜 개발자가 되셨어요...
A : ...
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 컴맹 / 2006-12-15 오전 11:33:00
언제나 여기에 오면 많은것을 배워가는군요..ㅎㅎ
닷넷플랫폼에 대해서 더 봐야겠습니다. VC6.0에서 닷넷으로 넘어온지 얼마되지 않아..모든게 불편하지만..
다 제 탓이죠.-_-;

좋은말씀 잘들었습니다.~~~ㅎㅎ
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 김홍석 / 2006-12-15 오후 2:03:00
제 주위에는 닷넷 싫어하는 사람은 없습니다.
다만, 닷넷도 하기에는 시간이 부족해서 그냥 자바 계속하겠다는 사람은 많습니다.

저는 자바 처음 나왔을 때는 자바의 광팬이었습니다.
한때 자바로 성공하겠다고 생각도 했을 정도로요..

하지만 요새의 자바를 보면 점점 실용적인 것에서 멀어지는 것 같습니다.
풍부한 각종 프레임웍을 보면 개념은 좋지만
지원툴이 없어 실질적으로는 생산성을 떨어뜨리는 것들이 많지요..

닷넷을 좋아하는 이유는 실용적이고 지원툴이 좋기 때문입니다.
다만 너무 빠르게 변해서 따라가기가 힘들 뿐입니다.
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 블로그쥔장 / 2006-12-15 오후 2:58:00
자바건 닷넷이건 어떤 플랫폼으로 개발하던 상관없이
그 플랫폼을 좋아하지 않고 신뢰하지 않을 때가 문제라고 생각합니다.
그래서는 죽도 밥도 되지 않고 항상 주위를 맴도는 사람이 되곤 하지요.
자신이 사용하는 언어, 개발환경에 대해 자신감을 갖을 필요가 있다고 생각합니다.
그러기 위해서는 더욱 노력해야 겠지만요...
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 러프 / 2006-12-15 오후 11:57:00
전 아직도 프로젝트 할때마다 두렵고 하고 합니다. 항상 새로운것에 대한 느낌이죠 뭐 좀 지나면 너무 편해지고 하지오
아직 개발경력이 몇년안됬지만 SI쪽에 몸을 담고있어서 그런지 모르지만 단순 개발환경 탓만은 아닌거 같네요
프로젝트 들어가면 밤10시까지 기본 아님 9시 이런식으로 야근은 기본은 잡고 해서 아닐까요
여유시간이 없어서 조급해지고 해서 더 그런것 같습니다.
못하면 자기 탓을 할수 없으니 개발툴이나 탓하는 거 아닐까요?
야근이 기본이 아닌 프로젝트라면 좀더 좋은 프로그램이 나오지 않을까요?
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 블로그쥔장 / 2006-12-16 오전 1:43:00
우리나라 SI 업계에서 개발자의 환경이 무지 열악하다는 점은 저도 공감합니다.
저도 10여년째 SI 업계에서 일하고 있으니까요.
왜 잘못된 프로젝트 관리, 주먹구구식 요구사항 분석과 설계, 짧은 프로젝트 기간 등등의 모순을
개발자들이 뒤집어 쓰고 야근은 기본이요 주말 반납은 선택이 되는지...
당췌 개발자들이 무슨 죄가 있는지 한숨만 나올 뿐입니다.

SI 프로젝트 자체가 기술적인 요소보다 단순 업무 개발이 많기 때문에 그 플랫폼이 싫어질 수도 있다는 것에는
동감할 수 있지만 스터디할 시간이 없어서(플랫폼에 대한 충분한 이해를 갖을 시간이 없어서)
자기가 사용하는 개발도구가 프로그래밍 언어를 믿지 못한다는 것은 무리가 있다고 봅니다.

제 경험상 SI 프로젝트에서 업무 개발에서 얻을 수 있는 것은 많지 않다고 봅니다.
(업무에 대한 노하우를 빼면)
출퇴근 시간이라도 이용하여 짬짬이 공부를 해야 하겠지만...
무엇보다도 SI 업계의 근무환경에 변화가 있어야 하죠.

이러다간 우리나라 개발자들 죄다 burnout 되고 맙니다....

횡설... 수설... 에헤라 디여~
(졸려서 오타만 계속 나구... -_-; 죄송합니다...)
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 위시 / 2006-12-18 오전 10:09:00
쥔장님과 탱옹님의 말씀에 크게 공감합니다.
전 시스템엔지니어라서 개발자의 고충에 대해 100% 이해는 잘 안되지만
이런저런 주변 개발자 이야기를 들어보면 쥔장님 말씀이 딱이더군요..
^^

이번한주도 즐겁게 보내시구요 글 잘 읽고 갑니다.
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 이방은 / 2006-12-18 오후 5:16:00
탱옹님의 마지막 질문에 대한 답변이..
어쩌다 보니...
뭐 이정도 되겠네요 ㅋㅋ

좋아하고 싫어 하기엔..
아직 너무나 모르기에..뭐라 말을 못하겠네요..@.@

좀더 알아 보고..좋아 할지..싫어 할지 결정을..ㅋ~
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 힘이야 / 2006-12-19 오후 5:05:00
과거에 쌩(?)노가다로 10을 구현하였다면

요놈(닷넷) 가지고는 9는 매우 편하게 1은 쌩쌩(?)노가다로 구현하기 때문에

욕좀 먹는 것같은데요 ㅎㅎ;

근데 정작 쌩쌩(?)노가다로 구현한 1하고 과거의 놈하고 비교하면

노가다가 아니었다는 ;;;

닷넷으로 개발중 고생한 1때문에 욕좀 먹는 것 같아요.

자바처럼 시간이 좀더 지나면 나아질 현상이라고 봅니다.

좋은 글 맨날맨날 감사합니다. ^.^:

#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 하승민 / 2006-12-20 오후 6:04:00
지나가다가 몇자 남겨볼까합니다.

닷넷, 자바의 개발 환경은 이전과 다르다고 생각합니다.
지 혼자서 모든 것을 다하던, 또는 할려고 노력해서 프로그래밍을 하던 방식에서
플렛폼에서 어떤 것을 제공하는지를 정확히 알아서 정확하게 사용하는 방식으로 말이지요.
예를 들어, 간단한 자료구조도 직접 짜야했던 것이 예전 방식이라면, 지금은 왠만한 건 다 제공이
되기 때문에 잘 찾아서 쓰는 방식으로 말이죠.

근데, 혼자서 모든 것(?)을 다 할 때보다 공부할 분량이 압도적으로 늘어난 것 같아요 =_=;
쉬워진 것 같기도 한데, 정확하게 잘 쓰려면 정말 많은 공부를 해야하는듯 합니다.
정말 남 탓을 하기전에, 자기가 정확하게 알고 있는지,
제대로 사용하는지에 대해서 곰곰히 생각을 해봐야 한다고 생각합니다.

공감가는 글이였어요~ ^^
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / Tack / 2006-12-21 오후 11:15:00
ㅎㅎ 저희 팀장님이 바로 그런 분이신데요 아무래도 자바, C++ 등 여러 플랫폼에서 작업하신분이라 그런거 같습니다.
글을 읽고보니 아는것이 죄라는 말도 떠오르네요 ^^;
전 요즘 소스세이프를 쓰면서 이전보다 자주 흥분하게 되는데 먼저 좀더 자세하게 알아보지 못한점
제 잘못 맞구요 ^^ 이제 시작하는 입장인만큼 자세를 잘잡아야겠네요
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / 이경원 / 2007-01-15 오전 10:40:00
공감글.....흠..닷넷..특히..C#은 개발에 무자게 편하게 사용되는데.....제가 느끼는건..C#은 개발하기 무지 편하다는 거......
모든 유틸은 클래스화 되어 있어서..간편하게 사용할 수 있게 되어 있는 C#..... 근데 단점도 있는듯 합니다....이렇게 편하게 사용하게 되면...프로그래머는 바보가 되는듯합니다..
실제 내부적으로 어떠한 로직으로 구현되어 있는지는 모른체...단순히 클래스 생성해서 함수를 이용해서 로직을 처리하니깐요....머 나름대로 내부 로직을 보면서 이렇게 되어 있구나..하는 분도 계시겠지만..^^
#re: 왜 자신이 사용하는 개발환경을 싫어하는가? / iarchitect / 2007-02-01 오전 8:52:00
오랜만에 SI로의 복귀를 위해 .NET을 스터디 중입니다.

- 우선, 이런 담론이 나온 것은 통사적인 시각이 존재하게 돼서 그런 것 같습니다. 소위 말해 쌓일 시간이 이제는 되었다는 것이죠!

- 긍정적이어야 성공한다는 당위가 왜 나왔는지 과정을 이해할 수 있는 좋은 article 같습니다.
- 이제는 구현에서의 측면과 주인장님 처럼 설계자의 측면이 나뉘었다 합해지는 시기란 그런 것 같기도 하구요!

- 잘 읽었습니다. 하여튼 프로그래머 입장에선 정확히 잘 알아야겠지요! 계속 정확히 알아가는 법과 정확한 노하우&노와이를 알려주시길 ^^