본문 바로가기
IT 공부/이런 저런 생각들..

객체지향, 디자인패턴, 스프링 프레임워크...

by exdus3156 2023. 11. 13.

소프트웨어 개발 과정에서 제목에서 열거된 온갖 기술들이 사용되는 이유는 소프트웨어가 시간이 흐르면서 요구 사항이 지속적으로 변경되기 때문이다.

처음에는 이 말을 그려려니 하고 받아들였지만, 나중에 내가 소프트웨어의 사용자 입장에서 무슨 생각을 하는지 고려해보면 소프트웨어에서 변경이란 숙명에 가깝다는 생각이 들어 섬찟한 공포를 느끼기도 했다. 그 어떤 소프트웨어도 사용자가 원하는 기능과 목록은 언제나 존재한다. 언제나 변경되고 업데이트되기를 원한다. 

그래서 개발 프로세스에서 애자일이나 객체지향, 디자인 패턴들이 사용되는 것 같다. 이 기술들의 궁극적인 목적은 모든 설계 세부 사항과 요구 사항을 전부 파악한 후에 코딩에 돌입하는 개발 방식에서 벗어나기 위한 것들이다.

소프트웨어의 본질적인 성격(변경)을 고려한다면, 구조가 되었든, 객체가 되었든, 함수가 되었든, 기존의 코드를 되도록 수정하지 않는 상태에서 유기적으로 새로운 기능이나 개선을 해나가는 방식이 좋다.

무작정 코딩에 돌입한다는 뜻이 아니다. 그러면 더더욱 엉망이 된다. 모든 세부 사항과 요구를 면밀히 파악할 수 없으니 변경을 수용하고 발전시킬 수 있는 정립된 기법을 사용해 기민하고 치밀하게 생산을 하겠다는 뜻이 라고 생각한다.

개발 공부를 하면서 느낀 것은, 자료구조나 알고리즘, 혹은 운영체제와 같은 컴퓨터과학 과목들이 어려운 것이 아니라, 기민하고 변경을 수용하는 개발 프로세스와 그와 관련된 기술들을 익히는 것이 가장 어렵게 느껴진다는 점이다. 나는 스프링 프레임워크와 객체지향에 완전히 발목이 잡혀 시간을 허비한 적이 있다..

공부가 쉽지가 않다. 하지만 어려우니까 정복하고 싶은 마음도 크다. 

나도 개발하고 싶은 것이 분명이 있는데, 나도 평범한 사람인지라 괜시리 모든 사항을 전부 파악하고 코드를 짜야 될 것 같은 기분이 든다. 하지만 그렇게 접근하면 조금만 소프트웨어 규모가 커져도 아무것도 생산해내질 못한다.

그래서 이런 기법들과 기술들을 잘 익히고 싶다. 꼭 취업 때문이 아니라 장기적인 관점에서 내가 만들고 싶은 프로그램을 너무 지나친 계획과 비전 없이도 해나갈 수 있는 용기를 받고 싶기 때문이다.