'원사이트'

원사이트

의사코드(Pseudo Code)에 관한

2024년 11월 16일3min read

의사코드(Pseudo Code)와 인지 부하(Cognitive Load)에 대한 고찰

졸업반으로서 해야 할 일이 넘쳐나는 가운데, 의외로 번아웃을 겪지 않는 나를 발견했다. 이런 감정 상태가 꽤 괜찮다고 생각되는데, 왜 그런지 고찰해보았다. 그 답을 찾은 곳은 바로 의사코드(Pseudo Code)이다.

의사코드(Pseudo Code)의 중요성 ✍️

의사코드란, 프로그램을 구현하기 전에 알고리즘이나 논리적 흐름을 자연어로 표현한 것이다. 단순히 코드만 작성하는 것이 아니라, 프로그램의 흐름을 미리 글로 정리해보는 것이다. 예를 들어, 로그인 기능을 구현하려 할 때, 코드를 작성하기 전에 무엇을 해야 할지 한국어로 정리하는 것이다. 사실, 영어로 할 수 있다면 영어로 해도 되지만, 나는 그런 멋진 놈이 못 된다. 의사코드를 통해, 무엇을 해야 할지 더 명확히 알 수 있다.

code
1. 사용자로부터 로그인 정보 입력 받기
    a. 사용자 아이디 입력 받기
    b. 사용자 비밀번호 입력 받기

2. 입력된 아이디와 비밀번호를 서버로 전송하여 인증 요청하기
    a. 서버에서 요청을 처리하고, 인증 여부를 확인하기
        i. 서버에서 아이디가 존재하는지 확인
        ii. 아이디가 존재하면, 입력된 비밀번호가 일치하는지 확인
        iii. 비밀번호가 일치하면 인증 성공
        iv. 비밀번호가 일치하지 않으면 인증 실패

3. 인증 결과에 따른 처리
    a. 인증 성공 시:
        i. 로그인 세션 생성 또는 토큰 발급
        ii. 사용자 정보를 반환 (예: 이름, 이메일 등)
        iii. 사용자 홈 화면으로 리디렉션
    b. 인증 실패 시:
        i. 오류 메시지 반환 (예: "아이디 또는 비밀번호가 일치하지 않습니다.")
        ii. 로그인 페이지로 다시 리디렉션

4. (선택적) 로그인 상태 유지
    a. 사용자가 '로그인 상태 유지' 체크박스를 선택한 경우:
        i. 로그인 세션을 일정 기간 유지하도록 설정
        ii. 쿠키나 로컬 스토리지에 로그인 정보를 저장

5. 로그인 종료 (로그아웃)
    a. 사용자가 로그아웃 버튼을 클릭하면:
        i. 세션 종료 또는 토큰 삭제
        ii. 로그인 페이지로 리디렉션

이렇게 의사코드를 작성하는 과정에서 중요한 점은 실제 코드가 개입되면 안 된다는 것이다. 왜냐하면, 코드의 세부적인 구현을 생각하기 시작하면 문제의 핵심을 놓치게 되기 때문이다. 의사코드의 핵심은 프로그램이 어떤 흐름으로 진행될지를 먼저 파악하는 것이다.

의사코드와 인지 부하(Cognitive Load) ✍️

인지 부하(Cognitive Load)는 우리가 문제를 풀거나 학습을 할 때 뇌에서 처리해야 할 정보의 양을 의미한다. 인간의 작동 기억은 한 번에 처리할 수 있는 정보의 양이 제한적이다. 그래서 처리해야 할 정보가 많으면, 뇌는 이를 모두 처리하기 어렵고 인지 부하가 발생한다. 문제를 해결하려면 이 부하를 최소화해야 한다.

많은 사람들이 계획을 세우고 실천하는 데 어려움을 겪는다. 그것은 계획 자체가 지나치게 복잡해져서, 실행하기 전에 이미 머리가 복잡해지고 피곤해지기 때문이다. 이런 상황에서는 계획을 아무리 잘 세워도 실행으로 이어지지 않는다. 내가 이런 문제를 겪었을 때, 가장 중요한 것은 바로 인지 부하를 줄이는 것이었다.

의사코드 작성에서의 인지 부하 완화 ✍️

의사코드를 작성하는 이유는, 복잡한 문제를 해결하기 위한 계획을 세우는 것이다. 이 과정에서 실제 코드가 들어가면, 우리는 문제 해결이 아닌 코드 작성에 집중하게 된다. 이럴 때 의사코드는 단순한 개념 정리에 그쳐야 한다. 실제 코드가 들어가는 순간, 복잡한 세부사항들이 머릿속에 떠오르기 시작하고, 이를 처리하려다 보면 인지 부하가 커진다.

예를 들어, 로그인 기능을 구현한다고 할 때, 의사코드를 통해 "사용자 입력 받기", "서버로 전송", "인증 결과 처리"와 같은 큰 흐름을 먼저 잡아놓고, 그 다음에 세부적인 구현으로 들어가야 한다. 이를 통해서 우리는 큰 그림을 먼저 그릴 수 있고, 세부적인 부분을 추가해나가면서 복잡한 문제를 해결할 수 있다.

실행 중심의 사고로 전환 ✍️

요즘 할 일이 너무 많다 보니, 되려 시뮬레이션을 돌리거나 지나치게 계획을 세우는 대신, 큰 목차에 먼저 집중하고 실제 할 일은 그때그때 하나씩 해결하는 방식을 채택했다. 매일의 할 일 목록, 즉 오늘의 todo list가 바로 내가 실제 구현해야 할 코드가 되는 것이다. 구글 캘린더의 계획이 의사코드라면, todo list는 실제 코드다. 중요한 것은, 구글 캘린더가 지나치게 복잡하지 않도록 만드는 것이다.

이 방식으로 작업을 진행하다 보니, 인지 부하가 크게 줄어들었고, 자연스럽게 행동력도 생겼다. 결국, 의사코드를 통해 큰 흐름을 잡고, 작은 부분에 신경 쓰지 않으면서 살아가다 보니, 일의 효율성이 높아졌다. 의사코드를 통해 큰 그림을 먼저 그리고, 세부적인 부분은 그때그때 해결해 나가는 것이 정말 중요하다는 사실을 깨달았다.

결론 ✍️

의사코드를 작성하고 이를 통해 인지 부하를 줄여나가는 방식은, 정신적인 건강을 유지하는 데 매우 중요한 역할을 한다. 할 일이 너무 많다고 느낄 때, 복잡한 세부사항에 얽히지 않고 큰 흐름을 먼저 잡고 진행하는 것이 핵심이다. 이렇게 큰 그림을 그린 뒤, 세부 사항을 하나씩 해결해 나가면, 문제 해결이 훨씬 수월해진다. 결과적으로, 실행하는 데 필요한 에너지를 절약하고, 더 효율적으로 일을 진행할 수 있게 된다.

모든 과정에서 자신에게 친절해야 한다. 나에게 좋은 사람이 남에게도 좋은 사람이니까. 실행하려면 하고 싶어야 되고, 하고 싶으려면 할 수 있다고 생각해야 한다. 냉소적이고 비관적인 태도는 기름에 튀겨 드셔라.