개발에 관한 몇가지 생각.
1.자바 진정 유지 보수에 강하다고 생각하십니까?
얼마전까지 개발일(웹분야)을 하다가 회의를 느껴 현재 진지하게 진로를 고민하고 있습니다.
일반적으로 클라이언트들은 유지보수를 위해서 자바를 원하는데 실제로 그렇게 유지보수에 강할까? 라는 의구심이 들더군요..
갑-을-병-정 식으로 이어지는 개발에서 실제적으로 설계를 충분한 시간을 두고 할 수 있는 것도 아니고 충분하게 시간이 주어졌다손 치더라도 그 설계라는 것도 어떤 특정한 사람(설계자)에게 의존할수 밖에 없구요...물론 프레임웍같은 것들로 탈피하려고 노력하고 표준화시키려고 시도 하겠지만.. 결국엔 최초 설계자에게 많이 의존 할수 밖에 없다는게 제 생각입니다...만약 대형 프로젝트에서 최초 설계를 담당했던 사람이 후임자에게 인수인계를 하고 떠나 버렸다면 유지보수가 원할하게 이루어질수 있을까요?
글쎄요..실제로는 땜빵식으로 유지보수를 하게 된다는게 제가 느낀바이구요...결국 가장 나중에 유지보수를 맡게 되는 사람일수록 처음 설계한 사람의 도움이 더 필요해지고 의존하게 된다는 사실을 깨달았습니다.필요한건 늘 가까이에 존재하지 않더군요...문서도 정석대로 작성되는 경우는 거의 없구요...말그대로 서류죠...구색을 갖추기위해서...
제가 느낀건 오히려 java 는 개인적인 성향이 더 강하다..팀 프로젝트라기보다는.짜맞추기위해서 팀원들이 필요하지만 일단 짜 맞추고 나면 설계자 혼자서도 유지 보수 할수 있겠다..그런생각이 들었구요.
사람들이 말하는 java 가 유지보수에 강하다는 것은 몇가지 조건이 있어야 하는게 아닌가? 라는 생각을 해봅니다.
1.프로젝트 시작시에 설계를 담당했던 사람이 있어야 할것.
2.설계에 필요한 충분한 시간이 주어질것.
3.갑-을-병-정 식의 프로세스는 없어야 할것.
뭐 이정도 이구요.쓰고 보니 자바뿐 아니라 다른 것들에게도 적용되는 문제일수도 있겠네요..다른 분들의 견해는 어떠신지요? 자바가 다른 것들 보다 유지보수에 있어서 확연하게 차이가 나는 점이 있습니까?
2.오직 자바여야 하나?
또 한가지 의문이 있는것은 여러가지 언어가 있겠지만 굳이 java 여야 하는 이유가 있습니까? 엔터프라이즈이든 뭐든 간에요..퍼포먼스니.보안이니..자바가 유리한점이 있는건 사실이지만 오직 자바라는 생각에는 동의할수 없습니다만...무료라는 것때문이랄수도 있는데요....전 무료라는 생각이 안들거든요..우리나라만 특히 이런것인지..그냥..유행이라..자바하는 사람이 넘쳐나서..또는 클라이언트가 원하니깐..설득하기 귀찮으니깐...제가 시대를 따라가지 못한 부적격 개발자일까요?
3.직접 코딩하는것이 나쁜가?
프로젝트를 하다보면 개발 툴 없이는 아무것도 못하겠다.라는 생각을 하는 건 저 뿐일까요...코드하나찍고 결과 보면서..뭔가 짜릿한 느낌..에러잡고 느끼는 뿌듯함..뭐 그런거 때문에 IT 하겠다고, 개발 하겠다고 뛰어들었는데 막상 개발하다보면 그런 고민은 거의 없고 이미 나와 있는 것들을 어떻게 하면 더 잘 이용할수 있을까?에 초점이 맞춰져 있더라구요...코드를 재사용한다는것은 굉장히 유용하지요..시간이나 노력이나 비용면에서 하지만 개발자라면 최소한 이게 어떻게 동작하는지는 알아야 한다고 생각합니다.입력 파람,출력 파람 이런것만 따져서 만드는 것이 개발일까요..어떤 사람은 그러더군요..닷넷인가요?(특정 언어를 비난하려는 것은 아닙니다.)마우스만으로 게시판을 만들수있다고요..어떤 의미에서 우리는 다 코더일뿐이란 생각이 들어요..라이브러리 잘 쓰고 프레임웍 능숙능란하게 쓰면 좋은 개발자일까요..결국 익숙해지면 누구나 할 수 있는 것들인것을.결국 개발툴의 도움 없이는 아무것도 못하는 그런 시대가 도래하는것은 아닌지..DB 툴이 없으면 사용자 추가 조차 못하는 개발자..이게 현주소 아닐까요?
4.미래의 개발자의 모습은 어떨꺼라고 생각하십니까?
거의 모든 분야를 커버하는 라이브러리나 모듈..등등의 것들은 이미 넘쳐날 것이고 실제 몇몇 특수한 분야(연구)를 빼고는 알고리즘 따위는 생각할 필요조차 없는 그런 아주 훌륭한 툴이 나와서 몇가지 정도의 체크만 하면 웬만한 프로젝트는 해낼수 있지 않을까 그런생각을 조심스레 해봅니다만.
Q. 웹쪽 개발이 아닌 분야에서 일하시는 분들의 견해가 궁금합니다.다른 분야는 어떤 프로세스로 일을 하고 계십니까?
http://www.okjsp.pe.kr/seq/10
http://www.okjsp.pe.kr/seq/108674
http://www.okjsp.pe.kr/seq/108722
자바에 대해서 이런 시각을 가진 분들도 계시다고 말씀드리고 싶습니다.
다만 제 생각으로는 "자바는 돈이 되기때문에 유행하고 있다"입니다.
봄들판에서다
봄들판에서다
제가 느꼈던 바에요.
정말 시원스럽게 글 잘 쓰시네요..
참 부럽네요..글 잘 쓰시는 분들 보면..
저도 똑같은 생각한적 참 많아요...
"나도 다 그렇게 배웠어" 라던가 "다 그렇게들 해"
그게 어느정도 지나면 꼭 그렇게 배울 필요는 없었던건데..라는 생각이 들기도 하거든요..
자바는 참 매력적이죠..위에 글을 쓰신 분의 말씀대로 가고 있는 방향은 좀 잘못 되지 않았나 싶네요.
그렇네요.. 스트럿츠
그렇네요.. 예전에 청주의 모 관공서 처음 작업할때 스트럿츠 처음보고 이게 뭔가 하고 난감했습니다.
(그땐 스트럿츠란게 있는지도 몰랐죠)
프레임웍 썼다면 사이트 유지보수를 맡게 되었는데, 이전 담당자가 무슨 프레임웍 기반으로 만들었는지
모르거나 아님 어디로 말없이 날라서 정보를 못얻었다면 건드릴 없는 난감한 상황이 발생하기 딱 좋죠.
위에서는 바꿔달라고 볶아대고, 그렇다고 잘못 건드렸다가는 운영되는 서버가 맛가고 조치할수도 없고
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
1. 유지보수는 언어가
1. 유지보수는 언어가 하는게 아니라 사람이 하는 겁니다. 사람이 엉터리면 아무리 좋은 걸 가져다 줘도 제대로 못쓰는 것이고, 사람이 대단하면 엉터리같은 걸 가져다 줘도 나름 잘합니다.
2. 자바 아니어도 상관없습니다. 그런 직업을 구할 수만 있다면요. 구할 수 없다면 구할 수 있는 일자리를 할 수 밖에요. 밥은 먹고 살아야하잖아요.
3. 프레임웍은 노가다를 없애기 위해 나온겁니다. 노가다가 즐겁다면 할 말 없지만, 프레임웍을 쓰더라도 직접 코딩할 일은 많지않나요?
4. 어떤 툴이나 라이브러리를 쓰던지 이론적인 기반이 없으면 결국 삽질을 하게되어있습니다. 미래에는 강력한 언어의 등장으로 프로그래밍은 쉬워지겠지만, 훨씬 더 전문적인 지식을 갖추지 않고서는 살아남기 힘들겁니다. 개발자는 그냥 코드만 적어대는 직업이 아니라 "어떤 문제를 해결하기 위한" 소프트웨어를 만드는 직업이니까요. 문제 해결하려면 아는게 있어야 해결하죠.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
음..
그렇군요...답글 감사합니다.
자바 아니어도 상관
자바 아니어도 상관 없을 듯 합니다. 전 개인적으로 자바를 좋아하지 않습니다만, 일단
자바는 SUN에서 밀고 있는 코딩 스타일도 있고, javadoc을 비롯한 것들 때문에 적어도
완전 엉망 수준은 아닌 경우가 많더군요. 그리고 사람들마다 코드도 덜 다른 편인 것
같습니다.
물론 꼭 자바라서 그런 건 아니지만, 다른 언어 쓰는 사람들에게 doxygen 등의 툴을
써야 한다는 것을 설득하는 것과 자바 쓰는 사람에게 javadoc을 써야 한다는 것을
설득하는 것은 난이도가 다르더군요.
블로그: http://turtleforward.blogspot.com
블로그: http://turtleforward.blogspot.com
아..
그런것들도 있을수 있겠네요.
제 나름대로의
제 나름대로의 답변?을 달아본다면...
1. 자바 진정 유지 보수에 강하다고 생각하십니까?
유지보수에 강하고 아니고를 결정하는 것은 언어가 아니라 얼마나 clean code인가, 그리고 주변 환경적인 지원이 얼마나 좋은가인 것 같습니다. 나름 자바, 파이썬, 루비, 자바스크립트가 각각 메이저 언어로 사용되는 프로젝트를 해봤고 인수인계를 받아보기도, 해보기도, 유지보수를 떠 맡아 보기도 했는데 언어가 유지보수성에 미치는 영향은 1% 내외라고 감히 말씀드릴 수 있을 것 같습니다. 자바가 인력 풀이 넓다는 장점이 있긴 하나 상대적으로 파이썬/루비 류의 고급 언어들은 더 쉽게 배울 수 있고 자바에 비해 노이즈가 적은 코드를 만들어 내기 때문에 원 설계자의 의도에 좀더 빨리 접근할 수 있죠.
하지만, 현실을 기준으로 이야기한다면 자바, 유지 보수에 최악의 언어가 아닌가 싶습니다. 다른 사람이 만든 자바 프로젝트가 코드만 달랑 넘어왔을 때 자신 있게 유지보수할 수 있다고 말할 수 있는 자바 개발자, 과연 얼마나 될까요? 수많은 프레임웍을 뚫고 들어가서 진실-_-에 접근하기까지가 얼마나 힘든지 느끼고 있는 자바 개발자들이 이미 많을 것입니다. 뭐 하나 고치려면 대체 몇 개의 파일을 뒤적거려야 하는 건지 말이죠.
이에 비해 스파게티 코드로 엄청난 욕을 집어 먹고 있는 PHP. 가장 많은 웹 오픈소스 프로젝트를 갖고 있고 이들은 다양한 형태로 파생되고 있습니다. 유지보수에 어려운 언어라면 이게 가능한 걸까요?
파이썬의 Django와 Ruby on Rails를 꽤 많이 써봤는데 자바의 여타 프레임웍에 비해 훨씬 단순하고 유지보수하기 쉬운 것 같습니다.
결국 유지보수와 개발은 별개의 문제가 아닙니다. 개발하기 쉬운 것이 유지보수하기 쉽습니다.
2.오직 자바여야 하나?
퍼포먼스가 언어만 놓고 보면, 아니 서블릿 스펙까지만 놓고 보면 자바가 단연 좋은 것은 맞습니다. 하지만 그 무거운 프레임웍들을 얹고도 자바가 퍼포먼스가 좋은 것은 아닙니다. 스프링에 하이버네이트 쓰면서 AOP 좀 쓰기 시작하면 퍼포먼스는 Rails에 근접합니다-_- 그래서 mod_php나 mod_python에 올라간 애플리케이션들이 J2EE 컨테이너에 올라간 자바 애플리케이션의 퍼포먼스를 압도하는 경우가 왕왕 나오죠.
그리고 성능이란 게 런타임도 중요하지만 개발 타임도 중요합니다. 근데 서블릿 엔진에 프레임웍 많이 얹으면 뜨는데만 1분 가까이 걸리기도 하더군요. django는 온갖 복잡한 로직 다 얹어도 0.5초만에 리로드되는데 말입니다.
자바면 좋은 경우는 분명히 있지만 오직 자바여야 하는 이유는 없습니다.
3. 직접 코딩하는것이 나쁜가?
이건 case by case인 것 같습니다. 자바 개발자들은 어떤 상황에 부딪혔을 때 그 상황을 해결할 수 있는 라이브러리가 있는지를 찾고 설치하고 익히는데 많은 시간을 보냅니다. 그 시간에 직접 개발하면 쉽게 해버릴 수 있는 문제도 많은데 말입니다. 하지만 때때로 직접 코딩하는 것보다 갖다 쓰는 게 편할 때도 많긴 하고 이게 자바의 중요한 장점이기도 하죠.
근데 만약 그렇게 생각하는 이유가 "내부를 알아야 하기 때문에"라면 공감하기 어렵습니다. 중요한 건 고객이 원하는 것을 얼마나 빨리 해줄 수 있느냐지 얼마나 밑바닥을 잘 아느냐가 아니죠. 로우레벨을 아무리 빠삭하게 알고 있다 하더라도 고객이 원하는 것을 만들지 못한다면 개발자로서는 좋은 점수를 줄 수 없다고 봅니다.
4. 미래의 개발자의 모습은 어떨꺼라고 생각하십니까?
오히려 툴이 어느 지점까지 해결해줄 수 있는가를 알고 싶어하시는 것 같습니다. 전 툴의 미래가 밝다고 보는 편입니다. 언젠가는 정말 프로그래밍을 배우지 않은 사람도 자기가 원하는 프로그램을 스스로 만들어낼 수 있는 툴이 나올지도 모릅니다. 하지만, 가까운 미래는 아닌 것 같습니다. 그리고 그런 툴이 나오더라도 그런 툴로 개발을 하는 사람은 여전히 필요할 것이고 그것이 개발자를 코더로 만드는 상황이라기보다는 개발자가 기술적인 디테일에 신경쓰지 않고 비즈니스 로직에 집중할 수 있게 해주는 긍정적인 변화일 것이라고 봅니다. 그런 상황이 되면 컴퓨터에 대한 지식보다 시장의 요구를 이해하는 능력과 문제를 해결하는 창의력이 더 중요해지는 시대가 될 것입니다. 아니, 이미 어느 정도 그런 시대가 되어가고 있는지도 모릅니다.
수긍이 갑니다. 전
수긍이 갑니다.
전 별 생각없이(생각하기 귀찮은 문제는 피하고) 댓글을 달았는데,
creativeidler님이 쓰신 글은 깊이가 있고 하나 하나 수긍이 가네요.
그렇다면 유지보수하기 좋은 이상적인 코드는 어떤 코드일까요?
이래저래 생각해 보고 싶습니다.
블로그: http://turtleforward.blogspot.com
블로그: http://turtleforward.blogspot.com
유지보수는
일하는 방법이나 작업자의 지식 수준에 많은 영향을 받는다고 생각합니다. 제 생각이 맞다면 유지보수는 코드로 이루어질 수 있는 것이 아닐겁니다.
만약 일하는 방법이 거의 동일하고(비슷한 방법론, 비슷한 툴, 비슷한 프레임웍, 비슷한 라이브러리), 거의 같은 수준의 지식수준(높은 수준의 추상, 다양한 패러다임, 유연한 설계, 폭넓은 경험, 깊은 이론적 배경)이 있고, 단지 코드로만 따진다면 "이해하기 쉽고 짧아야한다" 정도밖에 말할 수 없을 것 같군요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
..
그렇군요.
3번의 경우 클라이언트 입장에선 직접하던 가져와서 쓰던 상관이 없겠네요..
의견감사드립니다..
제가 봐왔던 SI의 큰
제가 봐왔던 SI의 큰 프로젝트들의 방법론을 보면 완벽한 업무분석과 설계이후 치밀한 일정관리를 해야만 하는식으로 진행하는듯 한데요. 보통 UML기반의 개발방법론이라고 하는데 말만 끼워다 맞췄지 실체는 어떠하냐.. 전부 노가다 코딩들만 하고 앉아있음.(프레임워크 이해력 부족) 오전에 받은 클래스다이어그램이 내일 오후에 다시 변경되서 날라옴.(이번주는 계속 야근) 유스케이스(혹은 시나리오)는 코더들이 보는게 아닌 고객이 보는 문서.(줘봐야 아무도 그걸이해하고 코딩에 참고하지 않음) 품질관리팀이나 직무를 수행 할 사람은 커녕 코더 한사람 구하기도 어려운 자금사정. 프로젝트 종반전이되면 전부 제각각 라이브러리를 만들어서 쓰고 앉아있음. 거의 대부분 계약직들이다보니 마무리해야 할 중요한 시점에 잡코리아 들락날락.
너무 적나라하게 적은듯 하지만 겪어보면 이보다 더 심합니다. 결국 언어의 선택이 잘못되었다라고 할 순 없겠습니다. 안될수밖에 없겠죠. 저도 스트레스 참 많이 받았지만 지금은 무덤덤해졌습니다.
일단 아주 지극히
일단 아주 지극히 개인적인 견해임을 밝혀둡니다.
나쁘게 말하자면, 자바는 천재(고슬링)에 의해 의도적으로 만들어진, 값싼 개발자를 양성하기위한 프레임웍이라 볼 수도 있습니다.
자바 자체가 유지보수를 용이하게 만든다기 보다는, 자바의 JSR 어쩌구 번호 몇번 같은 것들을 위시해서 어느정도의 표준같은 것이 구성원의 대체를 가능하게 만들기 때문에 유지보수가 다른 언어에 비해 쉽다(값싸다)는 것이지 실제로 자바의 표준을 깡그리 무시하고 독자적인 세계(?)를 구축한 것들을 보면 할 말을 잊게 되는 경우도 많습니다.
유지보수의 측면은 보스의 입장에서 볼때는 대체가능입니다. 대체가능한 인력이 많으면 유지보수성도 높아지는 것입니다. 자바의 경우는 표준적으로 강제하는 면이 다른 언어보다 좀더 많고 사용자층이 많기에 피상적으로 그렇게 보일 뿐이지 자바를 사용하지 않은 다른 프로젝트보다 유지보수성이 무조건 좋다고 이야기 하기에는 무리가 있습니다.
어떤 언어를 사용하더라도 잘 관리되고 디자인의 일관성이 지켜지면서 인력변동이 제한적이라면 자바든 C든 C++이든 여타의 어떤 언어라도 기본적인 프로그래밍 언어의 요소를 가지고 있다는 전제하에 유지보수성이 언어에 종속적이라고 이야기하기는 힘들것입니다.
저도 호구지책 비슷하게 자바에도 좀 손을 대고 있지만, 자바로 유종의 미를 거둘 생각은 별로 없습니다.
다른 것은 모르겠고 3번의 경우, 잘 이용하는 것이 최선입니다. 바퀴를 더 좋게 만들수 있다면 그래도 되고, 거인의 어깨위보다 더 높은 곳이 있다면 거기로 가야하겠지만, 현재 알려진 한 최고의 것들을 이용해서 더 나은 가치를 만드는 것이 개인적으로나 사회적으로나 더 의미있는 일이 될것입니다.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
솔직히 자바가
솔직히 자바가 유지보수에 강하다고 보지 않습니다.
SUN의 영업전략과 내,외주개발업체의 차세대 개발명분 그리고 너도나도 따라가기식이 한몪하고 있다고봅니다.
자바랑 무관
1.자바 진정 유지 보수에 강하다고 생각하십니까?
그건 자바랑 무관한 예깁니다. 유지보수는 유지보수 체계와 인력에 달려있는 문제지, 언어와는 아무런 상관이 없습니다.
2.오직 자바여야 하나?
자바말고 랭귀지는 많습니다.자바가 아니라도 상관은 없습니다.
하지만 자바말고 다른 랭귀지로 지금 만드시는 프로그램을 만들고
유지보수하는데 아무런 문제가 없나요?
3.직접 코딩하는것이 나쁜가?
나쁩니다. 현재 맡고계신 부분을 앞으로 계속하실게 아니라면, 다른 사람이 하는 것까지 염두에 두어야 합니다. 유지보수를 고려한다면, 코드는 최적화된 것보다는 사람이 알아보기 쉽고 간단하게 작성되어야 합니다.
4.미래의 개발자의 모습은 어떨꺼라고 생각하십니까?
지금도 라이브러리나 시스템레벨의 코드를 작성하는 개발자와 그 위에서 작업하는 개발자로 구분되어 있습니다. 시스템레벨의 개발자는 테크니컬한 면에 집중을 하고, 라이브러리/프레임웍 개발자는 테크니컬+비지니스, 그리고 일반 개발자는 대부분 비지니스+약간 테크니컬에 집중하는게 현실적인 모습이라 봅니다.