본문 바로가기
Computer Science

[Computer Science] 코드 작성 전에 플로우 차트(Flow Charts)를 그리는 연습을 해야하는 이유

by Henry Cho 2024. 8. 17.
728x90

포스트 난이도: HOO_Intern

*해당 포스트는 2020년 1월 27일 포스트에서 업데이트된 포스트입니다.


# Flow charts를 그려야 하는 이유

10년 전에 코드를 배우기 시작하던 내 모습으로 돌아가서 Flow charts (플로우 차트)에 대해서 생각해 보자면 정말 하기 싫은 일 중 하나였던 것 같다. 코딩을 막 처음 배우기 시작하다 보면 (한국은 잘 모르지만) "Hello world"부터 만들어보기 시작하여 정말 간단한 사칙연산과 조건문들을 배운다. 이때가 가장 많이 착각하는 단계 중 하나인 "와 나는 개발 천재인가 보다"의 병이 발생될 수 있다. 물론 처음 코딩이 버겁고 어렵다면 더 다행이라고 생각이 드는 게 플로우 차트를 그리는 걸 귀찮아하지 않기 때문이다. 하지만 위와 같이 초기 병 증세가 있다면 "아니 그냥 코딩 줄줄줄 나오는데 이딴 걸 왜 시간 아깝게 그리는 거야"라는 생각을 가질 수 있기 때문에 매우 위험하다.

 

당장 플로우 차트를 그린다고해서 실력이 당장 향상하는 건 아니다. 다만 플로우 차트를 그리는 연습을 해두지 않는다면 앞으로의 개발자로서 성장할 수 있는 한계가 분명하다는 건 경험을 통해서 당당히 말할 수 있다. 플로우 차트는 Logical(논리적)으로 코드를 작성할 수 있도록 도와주는 역할을 한다. 컴퓨터도 그렇고 코드를 작성하여 만들어진 프로그램은 Logical flow을 가지고 있다. 마치 말하는 거나 연구 자료를 읽다 보면 논리적인 게 중요한 경우가 있고 때로는 논리적으로만 말하는 사람을 보고 "너무 로봇 같아"라고들 말한다. 왜냐하면 Logical flow을 가지고 말한다는 것은 시스템적으로 분석과 방법을 가지고 말하기 때문이다.

 

아무튼 본론으로 돌아와서 플로우차트는 개발자 초보자분들에게 부족한 Logical하게 생각하여 코드를 작성하는 방법을 배울 수 있는 가장 좋은 공부 방법인 셈이다. 추후에 실무에서 사용해야 하고 다른 개발자가 공유해야 하는 등에 이유보다도 당장 개발자로서 공부를 하기 시작했다면 위와 같은 이유에서라도 꼭 플로우 차트를 먼저 그려보는 연습을 꼭 해야 한다.

 

특히 한가지 더 잔소리를 하자면 이제는 프로그래머는 사실 필요가 없다고 본다. Developer 즉 개발자가 필요하지 코드만 작성하는 프로그래머는 NLP라고 불리는 Chatgpt와 같이 대체재가 충분히 많다. 다만 개발자가 되기 위해서는 NLP가 작성해 주는 코드를 한 번에 분석하고 판단해서 필요한 부분만 가져다 사용해야 하는데 이러한 능력의 시작점이 바로 플로우 차트라고 본다.


# 코드 작성보다는 플로우 차트를 먼저 그려야 한다.

 

"플로우 차트를 그리면 도움이 된다고 해서 코딩을 하고 나서 플로우 차트를 그리면서 복습하고 있어요."

 

다시 한번 강조하지만 플로우 차트를 그리는 건 프로그래밍 실력을 단기간에 높이는데 정말 많은 도움이 된다고 생각한다. 하지만 여기서 유의할 점은 코드를 작성하고 나서 플로우 차트를 그리는 것이 아니라, 코드를 작성하기 전에 플로우 차트를 그려봐야지 프로그래밍 능력을 효과적으로 향상할 수 있다. 반대로 코드 작성을 끝내고 나서 플로우 차트를 그리는 건 그다지 프로그래밍 공부에 도움이 되지 않는다. 마치 답안지 풀이를 보고 해당 풀이 방법대로 다시 문제지에 문제를 푸는 과정과 같다.

 

플로우 차트를 통해서 개발자가 어떤 목적을 가지고 프로그램을 개발한 것인지를 알 수 있으며, 다른 개발자와 프로그램 개발을 협업하는 과정에서 어떤 식으로 프로세스가 작동하며 알고리즘 구현을 했는지를 쉽게 파악할 수 있다. 플로우 차트는 코드가 어떻게 구성되어 있는지를 시각적으로 표현한 것이라고 볼 수 있는데, 이를 구성하기 위해서는 개발자가 해당 프로그램이 어떤 프로세스로 작동할 것인지에 대한 계획을 가지고 있어야 한다. 한마디로 프로그램이 어떻게 작동할 것인지를 설계한다고 볼 있는 것이다. 따라서 프로그래밍을 공부하는 입장에서 플로우 차트를 코드 작성 전에 먼저 그려본다는 것은 생각을 통해 만들고자 하는 프로그램을 설계해 본다는 것을 의미한다. 결국 앞서 이야기한 Logical flow을 생각하는 연습을 의미한다.

 

코드를 작성하면서나 코딩이 끝나고 나서 플로우 차트를 그려보는 것은 생각을 통해 프로그램을 설계하는 것이 아니라 그저 코드를 보고 프로세스가 어떤 식으로 적용되었는지를 살펴보는 것에 불과하다. 물론, 코드를 보고 플로우 차트를 그리는 것이 무조건 나쁘다는 것은 아니다. 예제 코드를 보고 플로우 차트를 그려보면서 플로우 차트를 그리는 방법이 익숙해질 수도 있으며, 코드가 어떤 식으로 작성되었는지에 대한 공부를 하는데도 정말 많은 도움이 된다. 마치 처음 요리를 하는데 당연히 요리책을 볼 수도 있고 처음 게임을 하는데 튜토리얼을 해보는 거와 같다.

 

하지만 코드 작성하기 전에 플로우 차트를 그려보는 게 어렵다고 생각해서 매번 완성된 코드를 보고 플로우 차트를 그려보기만 하는 것은 프로그램 설계 능력을 향상할 수 없으며, 코드를 읽는 능력인 가독성도 느는 데 한계가 있다. 따라서 처음 프로그래밍을 공부하기 시작한 사람이라면 예제 코드를 보며 플로우 차트를 그리고 코드에 대한 지식을 얻으면서 힘들더라도 조금씩 코드 작성 전에 플로우 차트를 먼저 그려보는 것이 빠른 시간 안에 프로그래밍 실력을 키우는데 정말 큰 도움이 된다. 쉽게 말해서 튜토리얼 끝냈으면 초보자 존으로 가보라는 말이며 요리책만 보지 말고 직접 요리를 해보라는 말과 같다.

 

옛날에 비해 컴파일 프로그램을 통해 에러를 쉽게 확인할 수 있으며, 일부는 자동으로 컴파일 과정에서 프로그램 내에서 코드 수정이 이루어지기 때문에 프로그래밍 능력을 향상하는데 좋지 않다. 예를 들어 자동차 운전을 배우는데 처음부터 후방 카메라와 자동 주차 기능, 자율 운전 기능이 포함된 자동차라면 언젠가는 운전 실력이 늘겠지만 실력이 느는데 걸리는 시간이 길어지게 됩니다. 문제는 2020년 당시에는 NLP 사용이 대중화되지 않았는데 이제는 NLP를 통해서 코드까지 작성해 주니 마치 자율주행 자동차를 타고 있는 거와 같다는 것이다. 여기서 다시 한번 강조하지만 개발자는 NLP를 통한 코딩 효율성을 높일 수 있다. 다만 마치 자율 주행 자동차가 이상한 방향대로 가면 그걸 인지하고 올바른 방향대로 조정해 줄 수 있듯이 개발자도 이러한 능력을 키우려면 스스로 공부해야 한다는 것이다.


# 플로우 차트? 완벽할 필요 없다.

실제로 내가 몇년 전까지만 해도 느꼈던 부분 중 하나가 플로우 차트가 완벽하지 않거나 잘못 그렸으면 어떡하지에 대한 걱정이었다. 아무래도 다른 사람들에게 발표하고 공유해야 하는데 실수하면 창피하기 때문이다. 특히 연차가 오를수록 괜히 사소한 것조차도 확인하는 습관이 생기기 마련이다.

 

물론 진짜 제대로 그려내지 못하면 문제가 많은 거겠지만 내가 말하는 "실수"는 사소한 것을 의미한다. 이러한 실수는 사실 보지도 않고 전반적인 프로그램 구조만 읽히면 그만이라 너무 걱정할 필요가 없다. 특히 플로우 차트를 이제 막 그려보는 초보 개발자라면 더더욱 잘못 그릴 것에 두려워할 필요가 없다는 것이다. 플로우 차트에 가장 큰 목적은 본인의 관점과 개발 능력을 스스로 향상할 수 있다는 점을 항상 간과해서는 안된다.

728x90

댓글