소프트웨어와 생활

소프트웨어를 만드는 사람들

코드를 쓰는 시간보다
읽고 묻는 시간이 깁니다

학습 목표

  1. 소프트웨어를 만드는 일이 코드를 쓰는 일만이 아님을 설명할 수 있다.
  2. 한 서비스를 만드는 데 필요한 여러 역할을 들어 말할 수 있다.
  3. 지금 학생으로서 무엇을 해 두면 좋은지 세 가지를 들 수 있다.

무엇을 하나

소프트웨어를 만드는 사람 하면 화면을 보며 자판을 두드리는 모습이 떠오릅니다. 그 장면이 틀린 것은 아니지만, 실제로 하는 일 가운데 새 코드를 쓰는 시간은 대개 생각보다 짧은 편입니다. 쓰기 전에 이미 있는 것을 읽고 무엇을 만들지 정해야 하고, 쓴 뒤에는 고치고 확인해야 하기 때문입니다. 일마다 비율은 다르지만, 쓰는 일은 그 앞뒤 일에 둘러싸여 있습니다.

만드는 일에 들어가는 시간 이미 있는 것 읽기 무엇을 만들지 정하기 새로 쓰기 고치고 확인하기 칸 넓이는 수업에서 지어낸 비율이지 측정한 값이 아니다 읽기와 고치고 확인하기는 「이미 있는 것」을 다룬다 그래서 남이 쓴 것을 읽는 힘이 중요해진다
만드는 일의 네 가지 갈래와 각각의 내용
하는 일 무엇을 하나
이미 있는 것 읽기 내가 안 쓴 코드를 읽어 어떻게 돌아가는지 알아낸다. 큰 서비스일수록 남이 쓴 것 위에 얹는 일이 많다.
무엇을 만들지 정하기 쓸 사람과 이야기하고, 같이 만드는 사람과 맞춘다. 「이렇게 하면 되나요?」를 확인하는 시간이다.
새로 쓰기 실제로 코드를 쓴다. 즐거운 부분이지만 시간으로는 대개 짧은 편이다. 앞뒤에 읽고 정하고 확인하는 일이 붙기 때문이다.
고치고 확인하기 잘못 도는 곳을 찾아 고치고, 고친 것이 다른 곳을 망가뜨리지 않았는지 확인한다.

그래서 「읽는 힘」이 중요하다

네 갈래 가운데 셋은 새 코드를 쓰는 일이 아니고, 그중 읽기와 고치고 확인하기는 이미 있는 것을 다루는 일입니다. 학교에서 배울 때는 빈 화면에서 시작할 때가 많지만, 실제로는 이미 있는 것에 끼워 넣는 일이 많습니다.

그래서 남이 만든 것을 열어 읽어 보는 연습이 중요합니다. 다 이해하려 하지 말고 알고 싶은 부분만 찾아 읽는 방법입니다.

스스로 확인

「고치고 확인하기」는 왜 오래 걸리기 쉬울까요? 고친 것이 다른 곳을 망가뜨리는 일이 왜 생기는지 생각해 보세요.

여러 역할

하나의 서비스가 돌아가려면 여러 종류의 일이 필요합니다. 큰 곳에서는 각각을 다른 사람이 맡고, 작은 곳에서는 한 사람이 여러 개를 겸합니다.

서비스를 만드는 데 필요한 역할들
맡는 일 무엇을 하나 없으면
무엇을 만들지 정하는 일 쓸 사람을 알아보고 만들 것과 안 만들 것을 정한다. 만들다가 계속 방향이 바뀐다
보이는 것을 정하는 일 화면의 짜임과 흐름을 정한다. 어디를 누르면 어디로 가는지를 정한다. 기능은 있는데 찾을 수가 없다
화면 쪽을 만드는 일 사람이 보고 만지는 부분을 실제로 만든다. 그림만 있고 눌리지 않는다
뒤쪽을 만드는 일 보이지 않는 곳에서 값을 저장하고 계산한다. 화면은 있는데 아무것도 기억하지 못한다
잘 도는지 보는 일 일부러 이상하게 써 보며 무너지는 곳을 찾는다. 쓰는 사람이 대신 발견하게 된다
계속 돌게 하는 일 서버를 살펴보고 멈추면 되살린다. 어느 날 조용히 멈춰 있다

학교 프로젝트에서는 한 사람이 여럿을 맡는다

네 명이 모둠이라면 여섯 가지 일을 나눠 겸해야 합니다. 이때 「아무도 안 맡는 일」이 생기기 쉽습니다. 대개 「잘 도는지 보는 일」과 「계속 돌게 하는 일」입니다.

재미없어 보이기 때문입니다. 그런데 이 둘이 없으면 발표 당일에 멈추기 쉽습니다. 모둠에서 「누가 무엇을 맡나」를 적을 때 이 둘을 빠뜨리지 마세요.


겸할 때 붙여 두면 좋은 짝

붙이면 좋은 짝

  • 보이는 것 정하기 + 화면 만들기 — 정한 사람이 만들면 중간에 잃는 것이 적다
  • 뒤쪽 만들기 + 계속 돌게 하기 — 어디서 멈추는지 가장 잘 아는 사람이 살핀다

떼어 두면 좋은 짝

  • 만든 사람 + 잘 도는지 보는 사람 — 자기가 만든 것은 이상하게 써 볼 생각이 잘 안 든다
  • 만든 사람이 아닌 사람이 써 봐야 헤매는 곳이 보인다
스스로 확인

우리 모둠에서 아무도 안 맡을 것 같은 일은 무엇인가요? 그 일을 누가 맡을지 지금 정해 보세요.

필요한 힘

필요한 힘은 「어떤 일에서 왜 필요한가」로 적어야 뜻이 분명해집니다. 『무엇을 하나』 절의 네 갈래에 붙여 봅니다.

일의 갈래별로 필요한 힘
어떤 일에서 어떤 힘이
이미 있는 것 읽을 때 모르는 채로 견디는 힘. 처음 여는 코드는 대부분 모르는 것투성이다. 다 이해하려 하지 않고 필요한 부분만 찾아가는 요령이 필요하다.
무엇을 만들지 정할 때 되묻는 힘. 「이렇게 해 주세요」를 그대로 받지 않고 「왜 그게 필요하세요?」를 물을 수 있어야 한다.
새로 쓸 때 쪼개는 힘. 큰 일을 작은 조각으로 나누어 하나씩 끝낼 수 있는 크기로 만든다.
고치고 확인할 때 좁혀 가는 힘. 어디가 문제인지 범위를 절반씩 좁혀 가며 찾는다. 짐작으로 고치지 않는다.
언제나 적어 두는 힘. 왜 이렇게 했는지 남겨 두지 않으면 석 달 뒤의 내가 남이 된다.

「좁혀 가는 힘」을 조금 더

무엇이 잘못됐는지 모를 때 이것저것 고쳐 보는 것은 느리고, 멀쩡한 곳까지 건드리기 쉽습니다. 대신 범위를 반으로 줄여 가며 찾습니다.

  • 어디까지는 맞는지 확인합니다. 중간에 값을 찍어 보면 됩니다.
  • 맞는 곳과 틀린 곳 사이의 가운데를 봅니다.
  • 이것을 몇 번 반복하면 문제가 있는 곳이 몇 줄 안으로 좁혀집니다.

기술은 바뀌고 이 힘들은 남는다

지금 배우는 언어와 도구는 몇 해 지나면 다른 것으로 바뀌기도 합니다. 그런데 『필요한 힘』 표에 적은 힘들은 도구가 바뀌어도 그대로 쓰입니다.

그래서 「무엇을 배워 둘까」보다 「어떻게 배우는지를 익혀 둘까」가 더 중요합니다. 처음 보는 것을 앞에 두고 스스로 알아 가는 경험을 해 두는 것이 준비입니다.

스스로 확인

「이렇게 해 주세요」에 「왜 그게 필요하세요?」를 물으면 무엇이 달라질까요? 요청 뒤에 숨은 실제 문제가 무엇인지 생각해 보세요.

지금 할 수 있는 것

이 일에 관심이 생겼다면 지금 할 수 있는 것이 있습니다. 대단한 것이 아니라 작고 꾸준한 것들입니다.

작게 끝내 보기

큰 것을 시작해 못 끝내는 것보다 아주 작은 것을 끝까지 해 보는 편이 낫습니다. 끝내 본 경험이 다음 것을 끝내게 합니다.

남의 것 읽어 보기

공개된 코드를 열어 한 부분만 읽어 봅니다. 다 이해하지 못해도 괜찮습니다. 모르는 것 앞에 앉아 있는 연습이 됩니다.

남겨 두기

무엇을 왜 했는지 짧게 적어 둡니다. 나중에 이 기록이 내가 무엇을 할 줄 아는지 보여 주는 자료가 됩니다.

「남겨 두기」는 값진데 빠뜨리기 쉽다

만든 것은 시간이 지나면 돌아가지 않게 되는 경우가 많습니다. 그런데 「무슨 문제를 어떻게 풀었는지 적어 둔 글」은 남습니다. 그리고 그 글이 만든 것 자체보다 더 많은 것을 보여 주기도 합니다.

길게 쓸 필요 없습니다. 무엇이 문제였고 · 어떻게 해 봤고 · 왜 그렇게 정했고 · 무엇이 남았는지 네 줄이면 충분합니다.


이 분야로 가는 길은 하나가 아니다

새 직업의 이름은 흔히 「분야 + 다루는 방식」으로 붙습니다. 소프트웨어를 만드는 일도 마찬가지입니다. 앞자리에 무엇을 두느냐에 따라 아주 다른 일이 됩니다.

앞자리 분야에 따라 달라지는 개발 일
앞자리 그 분야에서 만드는 것 있으면 좋은 것
의료 검사 결과를 다루고 보여 주는 프로그램 몸에 대한 지식, 조심하는 태도
교육 배우는 과정을 돕는 도구 가르쳐 본 경험, 배우는 사람에 대한 이해
예술 표현을 넓히는 도구, 반응하는 작품 만들어 본 경험, 보는 눈
환경 측정하고 모으고 읽어 내는 시스템 자연에 대한 지식, 오래 지켜보는 끈기

「있으면 좋은 것」 열을 보세요. 프로그래밍 말고 다른 것이 적혀 있습니다. 지금 다른 과목에서 배우는 것, 좋아해서 오래 해 온 것이 여기서 앞자리가 됩니다. 이 과목의 이름이 「소프트웨어와 생활」인 까닭이기도 합니다.

스스로 확인

내가 오래 해 온 것이나 좋아하는 것을 앞자리에 놓으면 어떤 일이 될까요? 표의 「있으면 좋은 것」 열에 무엇을 적을 수 있을지도 생각해 보세요.

핵심 정리

무엇을 하나

  • 일은 넷으로 나뉜다. 읽기 · 정하기 · 새로 쓰기 · 고치고 확인하기.
  • 넷 가운데 셋은 새 코드를 쓰는 일이 아니다. 읽기와 고치고 확인하기는 이미 있는 것을 다루는 일이다.
  • 그래서 남이 쓴 것을 읽는 힘이 중요해진다.

여러 역할

  • 정하기 · 보이는 것 · 화면 쪽 · 뒤쪽 · 잘 도는지 보기 · 계속 돌게 하기.
  • 학교 모둠에서는 「잘 도는지 보기」와 「계속 돌게 하기」가 비기 쉽다.
  • 만든 사람과 시험하는 사람은 떼어 두는 편이 좋다.

필요한 힘

  • 모르는 채로 견디기 · 되묻기 · 쪼개기 · 좁혀 가기 · 적어 두기.
  • 고칠 때는 짐작하지 말고 범위를 반씩 줄여 찾는다.
  • 도구는 바뀌지만 이 힘들은 남는다.

지금 할 수 있는 것

  • 작게 끝내 보기 · 남의 것 읽어 보기 · 남겨 두기.
  • 만든 것은 안 돌아가게 되기 쉽지만 적어 둔 글은 남는다.
  • 앞자리에 무엇을 두느냐로 아주 다른 일이 된다. 다른 과목이 밑천이다.

확인 퀴즈

배운 내용을 확인해 봅시다.

Q1

새 코드를 쓰는 시간이 대개 생각보다 짧은 편인 까닭으로 알맞은 것은?

Q2

학교 모둠에서 비기 쉬운 역할은?

Q3

어디가 잘못됐는지 모를 때 알맞은 방법은?

Q4

만든 것보다 오래 남는 것은?