프로그래밍에는 크게 사용자 코드와 구현 코드로 구분되어 있습니다.
사용자(코드) | 구현 코드 | |
의미 | 사업/도메인 | 기술 |
중요도 | 경험(연차) | 학습(실력) |
직업 | PM | 아키텍트 |
1. 사용자 코드란 쉽게 말해, 비즈니스(사업), 도메인입니다. 내 프로젝트, 내 사업과 관련된 것을 말합니다. 예를 들어 내가 보험에서 일을 한다면, 보험 금액을 청구하고 보험금을 관리하고 사업과 관련된 일련의 행위가 모두 사용자 코드에 해당됩니다. 이렇게 사용자 코드를 위주로 실력을 쌓았다면, PM을 할 경우가 많습니다. 따라서 해당 분야에 경험이 많으면 많을수록, 즉 연차가 쌓이면 쌓을수록 능력치도 더 올라갑니다.
2. 구현 코드란 기술입니다. 사용자 코드가 직접 사업을 운영한다면, 구현 코드는 운영이 잘 될 수 있도록 설계해주는 것이죠. 예를 들어, 보험금을 관리하기 위해 파일을 올리고, 그림 파일을 저장하거나, 글을 수정하거나 저장할 수 있도록 해주는 것이 바로 구현 코드입니다.
인터페이스
노트북이 와이파이로 통신하기 때문에, 와이파이는 통신하는 인터페이스입니다.
화면을 브라우저로 보고 있기 때문에 화면 인터페이스입니다.
화면에 입력을 주기 위해 키보드를 입력을 하죠? 키보드도 인터페이스입니다.
이렇듯, 인터페이스란 컴퓨터와 컴퓨터, 사람과 컴퓨터가 교류를 하기 위한 모든 것들을 이야기합니다.
그렇다면 인터랙션은 무엇일까요? 바로 상호작용입니다.
스페이스 바를 누르면, 띄어쓰기가 돼죠? 스페이스 바를 누르면 한 칸 띄어쓰기가 된다는 것을 정의해놓는 것이 바로 인터랙션입니다.
GUI에 있는 I의 의미 Interface를 그럼 좀 더 이해해볼 수 있겠죠. 사용자가 봤을 때의 화면, 색감들 모든 것을 통틀어서 의미합니다.
그렇다면 UX는 무엇일까요? User Experience 입니다.
예시를 들어볼까요? 크롬을 들어갈 때의 방법은 다양합니다. 바탕화면에 바로가기를 들어갈 수도 있고, 하단 작업표시줄에 바로가기를 추가할 수도 있고, 프로그램 파일 들어가서 확인할 수도 있습니다.
프로그램 파일들어가자니 불편해서 -> 바탕화면으로 들어갔는데 그러자니 창들을 다 내려놓고 아이콘을 찾아야해서 불편한거죠 -> 그래서 하단 작업표시줄에 바로가기를 추가하게 됩니다.
이렇듯, 사용자가 이것저것 쓰다보니 경험이 생겨 점점 편한 쪽으로 개선되는 상황이 UX입니다. 사용자가 편안함을 느끼게 하는 것입니다.
상속에 대해서 얘기해보려고 합니다.
상속은 한 가지 객체가 다양한 역할을 하는 것을 의미합니다. '승승이'가 여자이며, 선생님이며, 직장인이라면 각각의 역할에 따라 하는 일이 달라집니다. 승승이가 선생님이라면 학교에서 아이들을 가르치는 역할이 있을 것이고, 직장인이라면 오너 입장에서는업무를 시키는 상황이 발생합니다. 이렇듯 사용자가 누구냐에 따라서 승승이의 역할이 달라집니다.
좀 더 쉽게 말해, 자동차운전면허를 생각하면 됩니다. 사용자는 운전을 어떻게 해야하는지 배웁니다. 기어는 어떻게 바꾸고 핸들은 어떻게 조작하는 지 말입니다. 이렇게 배우게 되면, 우리는 제네시스든, 카니발이든, 모닝이든 어떤 차든 운전이 가능합니다. 그게 바로 인터페이스입니다.
이 얘기를 한 이유는, 코드를 짤 때는 반드시 '상속'의 개념이 있어야 하기 때문입니다. 사용자에서 바로 구현코드로 간다면, 우리는 해당 개발자가 해놓은 코딩을 다시 처음부터 봐야하고 엄청난 리소스가 들기 때문입니다.
따라서, 사용자코드는 인터페이스를 거쳐야합니다. 예를 들어, 사용자가 회사원이라고 할 때, 회사원이 해야할 역할과 규칙에 대한 정의를 인터페이스에서 정하게 됩니다. 큰 틀이 만들어졌다면, 해당 내용을 구현하는 것은 바로 구현 코드이죠. 회사원은 몇 시에 출근하는지 구하라 라고 사용자 코드에서 입력한다면, 인터페이스에서는 사용자 출근시간이 나타나고, 구현코드에서는 사용자가 몇시에 출근하는지 구현됩니다.
한 가지 더 예를 선물세트로 들어보겠습니다.
선물 세트의 가격을 구하라 = 사용자코드
선물 세트 = 인터페이스
참치인지, 스팸인지 = 구현코드
이렇듯, 사용자코드가 있고, 사용자가 사용하는 인터페이스가 있고, 인터페이스에 상속받아서 구현하는 구현 코드가 있는 것입니다. 사용자가 구현코드의 내용을 되도록 모르게 하는 것이 가장 중요합니다. 그렇게 되어야만 어느 누구의 개발자가 와도 쉽게 코딩을 파악할 수 있기 때문입니다.
'1:1 개발 공부' 카테고리의 다른 글
C 언어의 특징 - C를 배우기 전 알아야할 것들 (1) (0) | 2022.02.19 |
---|---|
병렬처리 정의, 코드와 주석의 관계, 클래스-생성자, 소멸자, 객체 초기화 (0) | 2022.02.06 |
객체와 인스턴스의 차이 / 라이브러리와 패키지의 차이 (0) | 2022.01.15 |
스크립트 언어 / 자바와 C++의 차이 / 메모리 구성요소 / 조각모음과 포맷 해야하는 이유 / 안드로이드와 ios의 차이 (0) | 2022.01.09 |
메모리 공간 : 힙, 스택, 포인터, 메모리 누수 / 클랙스, 함수, 객체, 메소드 (0) | 2021.12.31 |