디자인 씽킹을 넘어 프로그래밍 씽킹으로 : 코드 한 줄 없이 배우는 코딩

carrot·2022년 6월 19일
0
post-thumbnail

제목에 언급되어 있는 도서 1장에 대한 정리와 회고를 기록했습니다.

일명 비전공자에다가 부트캠프나 학원 출신이 아닌 개발자 지망생으로서 가장 많은 부족함을 느끼는 부분이 CS, 설계 관련 부분들 입니다. 학습에 대한 로드맵을 어떻게 가져가야 하는지, 누군가 알려주는 사람이 없기 때문에 스스로 찾아보고 정리하고 나아갈 방향을 정해야 하곤 합니다.

최근에 포트폴리오 용도로 웹 사이트를 제작하던 중 설계에 대한 부분에서 많은 시행착오를 겪었습니다. 처음 시작은 공부하며 만든 작은 모듈 단위의 기능들(이를테면 게시판이나, 채팅 기능 등등)을 보여주기 위한 목적으로 시작했다가 최종적으로는 포트폴리오 용도로 주 기능이 변경되었습니다.

처음부터 제대로된 설계 없이 단순히 "메인 화면에서 휴대폰 어플과 같은 형태의 기능들을 메뉴처럼 보여주고, 각 메뉴를 클릭하면 해당 기능을 갖춘 페이지로 이동하여 구현된 기능을 경험할 수 있도록 해야겠다." 정도의 생각만 갖고 프로젝트를 시작했습니다.

이후 본인 소개와 이력서 형태의 웹 포트폴리오 사이트의 필요성을 느끼고 기존에 진행중인 프로젝트의 구조를 변경하는 과정을 거치텍스트며 기본적인 구조 설계에 대한 중요성을 많이 느끼게 되었습니다.

이번에 읽게된 책 디자인 씽킹을 넘어 프로그래밍 씽킹으로 : 코드 한 줄 없이 배우는 코딩은 위에 언급한 문제를 해결하는 과정을 찾던 중 알게되었습니다. 코드 한 줄 없이 코딩을 배운다는 점도 신선했고, 좋은 프로그래머가 되기 위해 필요한 프로그래밍 씽킹에 대해서 알려준다길래 곧장 구매해서 읽기 시작했습니다.

Programming Thinking ?

저자는 책 초반에 이런 얘기를 해주십니다.

코딩의 사전적 의미는 주어진 명령을 컴퓨터가 이해할 수 있는 언어로 입력하는 것이다. 컴퓨터는 기초 지식이나 편견이 없는 상태로 주어진 명령을 논리적으로 수행한다. 이러한 컴퓨터의 명령 수행 방식을 이해하기 위해서는 논리적인 사고가 필수적이다. 이 책은 프로그래밍 함수나 다양한 예제를 알려주는 것이 아니라, 생각하는 방법을 알려주고자 한다. 이를 '프로그래밍 씽킹' 이라고 명명했다. 프로그래밍 씽킹이란 논리적 사고를 통해 생각을 확장시키며 해법을 찾아가는 방식이다.

어떻게 코드 한 줄 없이 코딩을 배울 수 있을까? 에 대한 의문은 이어지는 영어 회화를 통해 단번에 이해하게 되었습니다.

"제 커피는 시럽을 빼 주세요."

영어에 익숙하지 않은 사람은 문법적인 접근이 어려워 간단한 내용의 번역도 쉽지 않습니다. 한국식 문장 사고방식에서 영어식 문장 사고방식으로 변환하는 훈련이 있어야 비로소 영어로의 번역도 자연스러워집니다.

이러한 방식으로, 이 책은 해결하고자 하는 문제나 구현하고자 하는 프로그램을 바로 코딩하는 것이 아니라, 개발자의 사고 방식을 컴퓨터가 이해할 수 있는 프로그래밍 언어 문장으로 변환하는 방법에 대해서 소개합니다.

영어 회화 뿐만아니라 우리의 일상의 모든 프로세스는 단지 익숙해져 있기 때문에 잘 느끼지는 못하지만 모두 각각의 프로세스를 가지고 있습니다. 출근길에서 어떤 교통편을 이용하는지, 버스를 놓쳤을 때는 어떠한 플랜 B를 통해야 하는지 등 이러한 과정들을 글로 써두고 설계도 처럼 만들진 않지만 분명 프로세스를 가지고 있고 우리는 이에 대해서 잘 알고 있습니다.

결국 코딩 실력의 차이는 얼마나 프로그램 문법을 많이 알고 있는가가 아니라, 얼마나 논리적으로 사고하고 이를 확장할 수 있는가 에 달려있다고 볼 수 있습니다.

How to ?

프로그램을 만들거나 코딩을 하기 위해서는 의식의 흐름(프로세스)을 프로그램 언어로 변환할 수 있도록 훈련해야 한다.

간단한 프로그래밍도 설계가 필요합니다. 그 설계는 생각을 글로 옮기는 작업에서 시작된다고 생각합니다. 글로 옮기고 이를 시각화하고 내용을 덧붙이는 등 생각을 정리하고 표현하는 것에서 부터 프로그래밍 씽킹이 시작됩니다.

프로그래밍 씽킹을 배워야 하는 이유

누구나 '코딩'을 할 수 있지만 모두가 '프로그래머'가 되지는 않는다.

지난 20세기에는 글로벌화로 인한 영어 대화 능력이 중요했다면, 21세기에는 디지털화로 인한 인공지능 및 컴퓨터와 대화할 수 있는 언어 능력이 필요합니다. 이것이 바로 코딩이고 코딩은 논리적 사고방식을 통한 문제해결 과정의 일환입니다.

컴퓨터를 통한 문제해결 과정은 반드시 정보과학적 사고방식을 요구하고 책에서는 이러한 사고방식을 프로그래밍 씽킹이라 정의합니다. 문제 해결을 위한 접근 방식, 필요한 과정, 순서 등을 합리적이고 보다 더 나은 방향으로 도출할 수 있는 능력을 갖추는 것이 중요합니다.

문송합니다?

문과생은 기술 자체 보다는 기술을 어떻게 사용할 수 있을지 더 고민하는 경향이 있고, 이와 반대로 프로그래밍 전공자는 프로그램 기술에만 집중하는 경향이 있습니다. 이는 좌뇌와 우뇌의 기능과 관련한 교육 방식에 기반을 둔 경향으로 결국 뇌기능의 조화로운 활용에 프로그래밍 씽킹이 도움이 된다고 할 수 있겠습니다.

프로그래밍 씽킹은 현실적인 문제를 발견하는 힘을 길러주고 이 문제를 논리적인 사고방식으로 해결할 수 있는 해결력을 길러줍니다. 또한 현실적인 상상력과 창의력을 길러줄 수 있습니다.

문과생으로 일컬어지는 '비전공자'에게 있어서 프로그래밍 씽킹은 비교적 발달한 좌뇌의 상상력, 창의력과 같은 기능들을 좀 더 분석적이고 논리적으로 활용할 수 있도록 도움이 된다고 할 수 있겠습니다.

코드 한 줄 보다는 '프로그래밍 씽킹'

전공 비전공 할 것 없이 개발자 모두는 프로그래밍 씽킹을 배워야 합니다. 서론에 언급한 포트폴리오 사례에서만 봐도 제대로된 사고 방식의 정립 전 무작정 시작한 코딩은 결국 문제를 일으키게 되고 이를 해결하기 위해서는 더 많은 노력이 필요한 상황을 초래하게 됩니다.

"나무를 베는 데 한 시간이 주어진다면, 45분을 도끼 날을 가는데 쓰겠다." - 링컨

무작정 도끼질을 하기 전, 펜을 들어 나무를 어떻게 벨 건지, 어느 방향으로 넘어뜨릴건지, 그에 대한 문제는 발생하지 않는지 등을 글로 적어보고 이를 체계적인 과정으로 정리할 수 있는 습관을 들이도록 해야겠습니다.

정리

이번에 정리한 내용은 책 1장 까지의 내용을 담았습니다. 프로그래밍 씽킹의 필요성을 역설하는 데 많은 시간을 할애했지만, 그만큼 간과하기 쉽지만 중요한 부분을 확실히 짚고 넘어가는 의미로 시간을 할애해 내용을 정리했습니다.

지금까지 주먹구구식이나 설계와 프로그래밍을 동시에 진행한 많은 경험들을 되돌아보며 회고할 수 있는 시간을 갖게 된 점도 의미 있다고 생각합니다. 과거와 현재 진행형 문제들을 되돌아보고 잠시 멈추어 가더라도 더 나은 방향으로 갈 수 있도록 프로그래밍 씽킹 하는 연습을 꾸준히 이어 가야 겠습니다.

profile
당근같은사람

0개의 댓글