To Be Updated
https://www.cisp.or.kr/archives/18726 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sorkelf&logNo=40135225311 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jvioonpe&logNo=220247760303
한때 소프트웨어 개발에서 모든 논의의 핵심은 디자인 패턴(Design Pattern)이었다. 개발자들은 밤을 세워가며 객체(Object), 응집도(Cohesion), 결합도(Coupling)에 대해 진지한 토론을 벌이기도 했다. 패턴이라고 하는 것은 일정한 형태나 양식 또는 유형을 의미한다. 소프트웨어를 설계할 때 패턴을 모르는 개발자는 자질(?)이 있는지 의심하는 정도의 분위기였다. 객체지향(Object-oriented)을 공부해야 하는 사람은 반드시 넘어야 할 산(山)이 디자인 패턴이었다.
그러나 어느 순간부터 온.오프라인에서 디자인 패턴에 대한 관심과 디자인 패턴을 적용하는 프로그래머를 보기가 어렵다. 왜, 이런 현상이 발생하고 있을까? 그 원인에는 여러가지가 있지만 과거와 같이 모든것을 자체적으로 해결하던것을 많은 부분에서 외부에서 만들어 놓은부분 소프트웨어(프레임워크, 콤퍼넌트 등)를 활용하여 프로젝트를 수행 및 상용패키지를 커스트마이징하여 적용하는 빈도가 높아져 일어나는 현상으로 보인다.
하지만 소프트웨어는 공학이다. 공학에는 원리가 있듯이 소프트웨어 개발에도 과거 COBOL 시대에는 프로그래밍을 할때 구조적프로그래밍이 있었으며, Java, C#, C++ 등 객체지향 개발언어는 디자인 패턴 있다. 고급 개발자로 성장하기 위해서 갖추어야 할 스킬은 크게 3가지로 자료구조, 알고리즘, 디자인 패턴 등이다. 사실 특정 언어(예, Java, C++)에 대한 숙련도는 부차적인 문제인데도, 단순히 개발 언어 사용 능력만으로 개발자 역량을 판단하고 있는 경향이 있어서 안타깝기도 하다.