인생멘토·코딩교육

[코딩교육] 컴퓨터적 사고력을 활용해서 프로젝트 수행하기

Buddhastudy 2022. 3. 3. 21:12

 

 

 

컴퓨터적 사고력에 대해 본격적으로 이야기하기 전에

이번 강의에선 제가 이 컴퓨터적 사고력이란 기술을 활용해서 프로젝트를 수행한 경험을 공유해드리려고 합니다.

 

제 경험을 듣고 나시면 컴퓨터적 사고력이 실제 업무에서 어떻게 활용될 수 있는지 이해하실 수 있을 거예요.

그리고 컴퓨터적 사고력이 단지 컴퓨터 과학과 관련된 문제만이 아니라

디지털 시대에 모든 사람들이 자신이 하는 일을 위해 적용할 수 있는 유용한

그래서 꼭 계발해야 하는 기술이자 능력임을 이해하실 수 있을 거예요.

 

컴퓨터적 사고력이 교육계에서 각광 받고 있는 큰 이유 중에 하나는

이 능력이 복잡한 문제를 풀어내는 데 특별히 유용하다는 점입니다.

 

예전 교육에서 지향했던 비판적 사고력, 논리적 사고력은

문제를 분석해내는 일엔 잘 맞는 능력이지만

문제가 다차원적으로 복합적이 되거나 많이 복잡해지면

해결책을 이끌어내기엔 한계가 있었습니다.

 

문제가 복잡하다는 건 무슨 의미 일까요?

복잡한 문제란 아주 다양한 부면들을 관련되어 있어서

직관적으로 단번에 해결할 수 없는 그런 문제를 의미합니다.

 

그럼 복잡한 문제 중에 어떤 예가 있을까요?

예를 들어 오랫동안 진행하는 프로젝트와 같은 것이 복잡한 문제입니다.

 

전 지금까지 살면서 아주 많은 프로젝트를 진행한 경험이 있습니다.

학교에서든 회사에서든 사람들은 프로젝트 방식으로 일을 합니다.

프로젝트는 보통 복잡한 문제를 해결하기 위해서 진행을 하죠.

 

예를 들어 전 예전에 4명과 어떤 그룹 프로젝트를 한 적이 있습니다.

프로젝트 기간은 3개월이었고요

한 사업체를 선정해서 그 사업체가 가지고 있는 문제를 해결해주는 컨설팅을 해주는 것이었습니다.

 

저희가 선정한 사업체는 서울에서 이제 막 성장하고 있는 베이커리 브랜드였는데

여기 대표님이 고민하고 있었던 문제는 아르바이트생들이 너무 금방 그만둔다는 것이었어요.

중간에 알바생이 일을 그만두면 나머지 직원들이 그 알바생이 하던 일을 대신해야 하니까

모든 직원들이 계속 신체적 정신적으로 피곤해한다는 문제가 계속 발생하고 있었다는 거예요.

그리고 알바생들이 일을 그만둘 때엔 여유를 주지 않고 바로 일을 그만두는 일이 빈번 해서

사업을 연속성을 가지고 진행하기가 어렵다는 점이었습니다.

 

그래서 대표님이 저희에게 요구한 일은

알바생이 최소한 1년 이상은 정기적으로 일할 수 있도록 해달라는 것

알바생이 중간에 그만둘 때엔 최소 한 달간의 유예 기간을 두고 그만둘 수 있게 해달라는 것이었습니다.

 

그런데 알바생의 월급은 올려줄 수 없다는 조건이 있었고요.

월급을 올려주진 않으면서 어떻게 알바생이 1년 이상 그만두지 않고

그만둘 때엔 최소 한 달의 유예 기간을 확보하는 일이 가능할 수 있을까요?

 

자 이야기를 들어보니까 어떤 느낌이 드시나요?

이게 복잡한 문제라는 것이 느껴지시나요?

네 맞습니다.

이런 게 바로 복잡하고 해결하기 어려운 문제입니다.

 

알바생이 중간에 그만두는데 유예 기간을 주지도 않고 예고도 없이 그만둔다는 건

이 사업체에 어떤 복잡한 원인이 숨어 있다는 것입니다.

이걸 어떻게 해결할까요?

 

언뜻 생각해서는 뭐부터 해야 할지도 잘 떠오르지 않는 이런 문제가 복잡한 문제의 대표적 특성입니다.

이런 복잡한 문제를 해결해주고 돈을 버는 사업이 바로 컨설팅업체들이죠.

 

그런데 컴퓨터적 사고력은 이런 복잡한 문제를 해결하는데 유용하게 사용할 수 있는 기술입니다.

저희가 어떻게 컴퓨터적 사고력을 활용해서 이 프로젝트를 수행했는지 이야기를 공유해드리겠습니다.

 

 

*분해

우선 저희는 이 문제를 해결하기 위해 무슨 일들을 해야 하는지

다시 말해 이 문제를 어떤 작은 문제들로 '분해' 해야하는지에 집중했습니다.

그룹 프로젝트이니까 누가 팀장을 할지 베이커리 대표와 언제 몇 번을 만날지

직원들과 인터뷰하는 일

우리 팀원들 사이의 커뮤니케이션 방법

자료수집과 정리, 발표자료 및 보고서 작성 등등

해야 할 일들을 세밀하게 나누는 일을 해야 했어요.

 

해결하기 어렵고 복잡한 문제라도

이렇게 세밀하게 분해해서 작은 단위의 일들로 만들어버리면

전체적으로 어떻게 해결이 될 것 같다는 그림이 나오게 됩니다.

 

이런게 바로 분해의 기술입니다.

큰 문제를 작게 작게 나누는 것.

해결할 수 있는 가장 작은 단위의 문제로 나누는 기술이 바로 분해라고 합니다.

 

 

*패턴인식

그 다음엔 해결해야 할 일들을 이렇게 잘게 작은 문제들로 나누었으니

이제 이런 문제들을 기존에 해결했던 방법들로 혹시 손쉽게 해결할 수 없는지 확인해봤습니다.

 

혹시 이 문제들이 전에 해결했던 것들과 비슷한 게 아닌지 확인해보는 일이었죠.

왜 이런 확인을 할까요?

왜냐하면 전에 했던 것들과 비슷하다면

새로운 해결책을 고민하지 않고

예전에 사용했던 걸 바로 사용할 수 있으니까

굉장히 시간이 절약 되기 때문이죠.

이게 바로 패턴인식 기술입니다.

 

사람의 일은 보통은 좀 비슷한 면들이 많거든요.

그래서 우리의 인생 선배들이 그런 경험을 먼저 해보고

좋은 해결책들을 이미 만들어놓은 것들이 세상엔 굉장히 많습니다.

 

우린 그런 해결책들을 잘 파악하고 있다가 비슷한 패턴의 문제가 발견되면

그런 해결책을 그냥 가져다가 쉽게 문제를 해결하는 거죠.

이런 패턴인식 기술은 프로그래밍 세계에선 너무도 빈번하게 사용되는 기술입니다.

 

제 경험으론 거의 80퍼센트 이상의 일이

기존에 이미 존재하는 프로그래밍 코드를 가져다가 재사용하는 일이

프로그래머들의 일입니다.

 

프로그래머들에게 굉장히 중요한 능력 중 하나는

자신이 뭔가를 만들기 전에

혹시 누가 먼저 이걸 만들어놓은 것이 없는지

찾을 수 있는 리서치 능력입니다.

 

어떤 프로그래머도 자기 혼자서 모든 걸 만들려고 하지 않거든요.

프로그래머들은 소위 맨땅에 헤딩하는 일을 하지 않습니다.

삽질하지 않는 거죠.

프로그래머들은 보통 효율성을 엄청나게 추구하는 사람들입니다.

 

저희는 프로젝트를 원활하게 수행하기 위해

필요한 여러가지 도구들이나 정책들을 수립했습니다.

우선 저희는 자료정리와 또 자료의 원활한 공유를 위해

이전에도 잘 사용하고 있었던 드랍박스라는 인터넷 저장소를 사용했습니다.

 

드랍박스는 컴퓨터 하드디스크처럼 파일들을 쉽게 업로드하거나 다운로드할 수 있고

팀원들간 공유도 쉽게 할 수 있었기 때문에

많은 프로젝트에서 사용하고 있는 도구입니다.

 

그리고 프로젝트 커뮤니케이션을 위해서 직접 저희끼리 미팅하는 것도 필요하지만

화상 회의를 하면 시간을 많이 절약할 수 있었기 때문에

구글 행아웃이라는 도구를 사용해서 매주 화상회의를 하기로 했습니다.

행아웃은 웹캠만 있으면 화상회의를 쉽게 할 수 있게 해주는 화상회의 도구입니다.

 

그리고 수시로 해야 하는 커뮤니케이션은

국민 SNS인 카카오톡을 이용하기로 했어요.

 

이렇듯 패턴인식 기술이란 기존의 해결책이나 도구들을 이번에 사용할 수 없는지 사용할 수 없는 확인하는 기술입니다.

 

 

*추상화

이제 해결해야 할 작은 문제들, 도구와 방법, 남겨진 시간이 확인되었기 때문에

프로젝트를 원활히 수행하기 위해 모든 일을

누가 언제까지 할지를 아주 간단히 표로 정리해서 공유했습니다.

 

프로젝트의 최종 목표인 문제해결을 위해

이 표에 정리된 것들만 수행하면 되었기 때문에

이 표가 문제를 어떻게 해결 하는지를 전체적으로 간단하게 기술해주고 있었다고 할 수 있는데요.

 

이렇게 복잡한 문제를 핵심 정보만으로 기술하는 기술을 추상화라고 합니다.

딱 필요한 정보만으로 문제를 기술해서 문제의 이해를 보다 쉽게 할 수 있도록 하는 일이 죠.

 

핵심만으로 문제를 표현하려면

문제가 가지고 있는 불필요한 정보들은 적절하게 제거할 수 있는 능력이 필요하고요.

 

 

*알고리즘

이제 마지막으로 확인된 작업들을 하나씩 해결해나가야 했습니다.

각각의 작업들을 해결하려면 수행 순서를 설계할 필요가 있었습니다.

 

어떤 일을 먼저 해야 하고 어떤 순서로 할지

가장 효율적인 단계 들을 정할 필요가 있었어요.

이게 바로 알고리즘을 설계한다라고 합니다.

일을 해결하기 위한 가장 효율적인 단계들을 알고리즘이라고 합니다.

 

 

 

이렇듯 컴퓨터적 사고력은

복잡한 프로젝트를 여러 명의 사람들이 같이 수행해야 할 때

특히 유용한 기술이자 능력이라고 볼 수 있어요.

이건 비단 컴퓨터 과학에서만 사용하는 기술이 아니라는 거, 이해하시겠죠?

 

컴퓨터적 사고력을 잘 계발 한다면

혼자서 하는 것에 익숙한 우리 아이들이

팀원들과 같이 협동 해서 할 때

훨씬 더 큰 시너지 효과가 나온다는 것을 경험할 수도 있습니다.

 

 

정리하자면

컴퓨터적 사고력은

큰 문제를 작은 문제들로 나누는 분해의 기술

검증된 해결책을 사용하는 패턴인식

문제를 단순화해서 표현하는 추상화

문제설계단계를 정립하는 알고리즘으로 구성되어 있다고 말할 수 있습니다.

 

다음 강의에선 컴퓨터적의 첫 번째 구성요소인

분해 기술에 대해서 좀 더 자세히 알아보도록 하겠습니다.