내일배움캠프의 3주차
알고리즘, 자료구조, JAVA, OOP 학습
KEEPPROBLEMMIND
TECH
7일 전부 만족할 순 없지만 잘 보낸 1주일
이번 주는 돌아보면 보이지 않는 큰 계획에 의해 행동을 하게 된 일주일인 것 같다.
특히 해야할 일들의 순서와 시간계획면에서 좋은 정보, 글을 읽고 이전보다 여러가지일을 하루에 진행할 수 있게 되었다.
다만 시간계획에 맞춰 진행을 하니 목표했던 것들을 두루두루 진행할 수 있었지만, 중요한 개념들을 만났을 때는 이것에 많은 시간을 할당했음에도 불구하고 어려움을 겪었다. 그래서 이해란 무엇인가를 고민하게 되었다. 위와 같은 결론을 내렸고 많은 것이 편해졌다.
나를 힘들게 한 SOLID를 생각하던 중 SOLID를 모르는데 SOLID원칙에 부합하는 코드를 작성한 개발자가 있다. 이 개발자는 SOLID를 이해했는가? 라고 묻는 다면 어떤답을 할 수 있을까? 문득 이런 생각이 들었다.
이 사람은 SOLID라는 용어에 대한 정의는 없지만 어떠한 상황에서 적용할 수 있는 생각, 행위, 원리를 파악하고 있다. 그럼 다시, 이 개발자는 SOLID를 이해했는가?
용어의 이해는 NO이지만 원리이해는 YES이다. 그럼 내가 이해하고 싶다는 것은 무엇인가? 원리이해이다. 어떤 상황에서 적용할 수 있는지를 이해하고자 노력했다. 내가 생각한 SOLID는 분류와 교체 이게 끝이다. 상황에 따라 적용할 수도있고 아닐 수도 있다. 그리고 그 상황은 가독성과 유지보수성이다. OOP는 가독성과 유지보수성 측면에서 작성하고자 생긴 것 같다. 그러나 잘 지켜지지 못했고 쉬운 이해를 위해 SOLID가 나왔다고 생각한다.
위 결론이 100% 정답이라고 하는 것이 아니다. 다만 이해란 무엇인가에 대해 많은 생각을 해보게 되었고 다른 것들에서도 스스로 납득할 만한 이해를 하게 되었다. 지금은 이러한 이해들을 어떻게 검증할 수 있을지를 고민 중에 있다.
다음주에도 이어서 객체지향학습이 예정되어 있다. 그리고 미니프로젝트까지... 많이 두근거린다. 빨리 코드를 작성하면서 여러가지 시도를 해보고 싶다.
다음 주는 더많은 것을 경험하게 되기를!