2020. 12. 29. 09:06ㆍ웹서비스
아이큐, 창의력, 응용력 등 지능을 테스트하는 문제에서는 언제나 패턴 찾기가 나온다. 미세하게 또는 대놓고 반복되는 형태를 찾아내는 것이 관건이다.
알게 모르게 주변에서 이런 패턴 찾기는 쉽게 볼 수 있다. 혈액형 성격, MBTI 테스트, 관상, 손금, 별자리 운, 프로파일, 범죄심리 등등 대부분이 패턴이다. 습관도 패턴이고, 루틴은 단어 자체만 봐도 패턴이다. 또한 일상 어느 곳에서나 존재하는 보도블록, 표지판, 신호등, 운전, 걸음 형태, 손짓 등 눈에 보이는 것만이 아닌, 행동이나 생활 자체도 패턴이다. 거의 모든 것이 패턴이지만, 인식하지 못하는 것뿐이다.
이렇듯 일상 자체가 패턴인데, 아이큐, 창의력 같은 테스트에 패턴 찾기 문제가 나오는 것은 ‘일상생활에서 패턴을 얼마큼 인식하고 있느냐’의 테스트일지도 모른다.
흔히 창의력은 ‘조합’이지 아무것도 없는 ‘무’에서 생기지 않는다고 한다. -아직까지도 ‘무’에서 창의력이 나온다고 믿는 분은 없기를 희망한다. - ‘조합’은 하나와 다른 하나가 만나 새로운 하나를 만드는 것이다. 그 하나가 가지고 있는 패턴을 인식하고, 다른 하나의 패턴과 결합하여 새로운 패턴을 만든다. 또는 하나의 패턴을 더 효율적인 패턴으로 만드는 것도 창의력의 하나이다.
패턴은 자연, 국가, 사회, 가족 등을 움직이게 하는 시스템이다. 자연의 패턴 중 하나라도 무너지면 자연에서 돌아가는 시스템이 삐걱거리고 환경 변화가 올 수도 있다. 국가는 법이라는 패턴을 가지고 있고, 사회는 도덕이라는 패턴을 가지고 있다.
프로그래밍에서도 패턴이 존재한다. 그냥 무작정 코딩만 하는 것이 아니다. 패턴 없이 코딩하는 것은 국가에서 법 없이 사는 것과 같고, 사회에서 도덕없이 사는 것과 같다. 한마디로 공동체를 이루기 전 원시인 수준의 프로그래밍을 하는 것과 같다.
프로그래밍에서 패턴은 효율적인 프로그램 로직 흐름을 말한다. 초등학교부터 코딩 교육을 하는 것은 패턴을 배우는 것과 같다. JAVA가 많이 사용되니, JAVA를 배워야 한다는 둥, python이 대세이니 python을 공부해야 한다는 등 언어에만 집착하고, 패턴은 등한시하는 경우가 많다. 이런 교육이나 학습은 말하기나 쓰기는 못하고 단어만 아는 것과 같다.
프로그래밍 패턴은 생각보다 굉장히 많다. 위키피아에서만 80여 가지가 넘는다. 패턴만 연구하고 공유하는 커뮤니티도 존재한다. 이런 패턴들을 다 알 필요도 없고, 다 사용되지도 않는다. 하지만, 어떤 것들이 있는지 정도는 확인해 볼 필요는 있다.
대표적으로 가장 많이 사용되는 패턴 중에 MVC(Model View Controller)라는 패턴이 있고, 싱글턴(SingleTon), 추상 팩토리(Abstract Factory), 프락시(Proxy), 어댑터(Adapter), 옵서버(Observer), DAO, DTO, 상태(State), 반복(Iterator) 등이 있다. 하나하나 설명하고는 싶지만, 너무 길어지기 때문에 인터넷에서 ‘프로그램 디자인 패턴’을 찾아보면 쉽게 설명한 곳이 많이 있다.
이런 패턴들을 미리 알고, 익숙해진다면 패턴들을 조합하고 변경해 보는 것도 좋은 방법이다. 다만 새로 만든 패턴이 기존 패턴보다 더 효율적이어야 한다는 조건이 붙는다.
패턴은 중요하다. 모든 것이 패턴에 의해 움직인다고 해도 과언이 아니다. 하지만, 패턴의 룰만 너무 맹신하면 틀에 갇혀 버리게 된다. 법을 매우 중요시하게 되면 융통성 없는 사람이 되고, 도덕을 너무 중요시하면 꼰대 소리를 듣는 것과 같다.
패턴을 알고 적절하게 활용하는 것이 중요하다.
Background Photo by Andrew Ridley on Unsplash
'웹서비스' 카테고리의 다른 글
프로그램 언어 (0) | 2021.01.10 |
---|---|
프로그래밍 용어 (0) | 2020.12.20 |
프로그래밍 개발 방식 (0) | 2020.12.14 |
프로그램 언어의 번역과 통역 (0) | 2020.11.16 |
웹 프로젝트 - 시작편 (0) | 2020.11.08 |