무엇을 하나
소프트웨어를 만드는 사람 하면 화면을 보며 자판을 두드리는 모습이 떠오릅니다. 그 장면이 틀린 것은 아니지만, 실제로 하는 일 가운데 새 코드를 쓰는 시간은 대개 생각보다 짧은 편입니다. 쓰기 전에 이미 있는 것을 읽고 무엇을 만들지 정해야 하고, 쓴 뒤에는 고치고 확인해야 하기 때문입니다. 일마다 비율은 다르지만, 쓰는 일은 그 앞뒤 일에 둘러싸여 있습니다.
| 하는 일 | 무엇을 하나 |
|---|---|
| 이미 있는 것 읽기 | 내가 안 쓴 코드를 읽어 어떻게 돌아가는지 알아낸다. 큰 서비스일수록 남이 쓴 것 위에 얹는 일이 많다. |
| 무엇을 만들지 정하기 | 쓸 사람과 이야기하고, 같이 만드는 사람과 맞춘다. 「이렇게 하면 되나요?」를 확인하는 시간이다. |
| 새로 쓰기 | 실제로 코드를 쓴다. 즐거운 부분이지만 시간으로는 대개 짧은 편이다. 앞뒤에 읽고 정하고 확인하는 일이 붙기 때문이다. |
| 고치고 확인하기 | 잘못 도는 곳을 찾아 고치고, 고친 것이 다른 곳을 망가뜨리지 않았는지 확인한다. |
그래서 「읽는 힘」이 중요하다
네 갈래 가운데 셋은 새 코드를 쓰는 일이 아니고, 그중 읽기와 고치고 확인하기는 이미 있는 것을 다루는 일입니다. 학교에서 배울 때는 빈 화면에서 시작할 때가 많지만, 실제로는 이미 있는 것에 끼워 넣는 일이 많습니다.
그래서 남이 만든 것을 열어 읽어 보는 연습이 중요합니다. 다 이해하려 하지 말고 알고 싶은 부분만 찾아 읽는 방법입니다.
「고치고 확인하기」는 왜 오래 걸리기 쉬울까요? 고친 것이 다른 곳을 망가뜨리는 일이 왜 생기는지 생각해 보세요.
여러 역할
하나의 서비스가 돌아가려면 여러 종류의 일이 필요합니다. 큰 곳에서는 각각을 다른 사람이 맡고, 작은 곳에서는 한 사람이 여러 개를 겸합니다.
| 맡는 일 | 무엇을 하나 | 없으면 |
|---|---|---|
| 무엇을 만들지 정하는 일 | 쓸 사람을 알아보고 만들 것과 안 만들 것을 정한다. | 만들다가 계속 방향이 바뀐다 |
| 보이는 것을 정하는 일 | 화면의 짜임과 흐름을 정한다. 어디를 누르면 어디로 가는지를 정한다. | 기능은 있는데 찾을 수가 없다 |
| 화면 쪽을 만드는 일 | 사람이 보고 만지는 부분을 실제로 만든다. | 그림만 있고 눌리지 않는다 |
| 뒤쪽을 만드는 일 | 보이지 않는 곳에서 값을 저장하고 계산한다. | 화면은 있는데 아무것도 기억하지 못한다 |
| 잘 도는지 보는 일 | 일부러 이상하게 써 보며 무너지는 곳을 찾는다. | 쓰는 사람이 대신 발견하게 된다 |
| 계속 돌게 하는 일 | 서버를 살펴보고 멈추면 되살린다. | 어느 날 조용히 멈춰 있다 |
학교 프로젝트에서는 한 사람이 여럿을 맡는다
네 명이 모둠이라면 여섯 가지 일을 나눠 겸해야 합니다. 이때 「아무도 안 맡는 일」이 생기기 쉽습니다. 대개 「잘 도는지 보는 일」과 「계속 돌게 하는 일」입니다.
재미없어 보이기 때문입니다. 그런데 이 둘이 없으면 발표 당일에 멈추기 쉽습니다. 모둠에서 「누가 무엇을 맡나」를 적을 때 이 둘을 빠뜨리지 마세요.
겸할 때 붙여 두면 좋은 짝
붙이면 좋은 짝
- 보이는 것 정하기 + 화면 만들기 — 정한 사람이 만들면 중간에 잃는 것이 적다
- 뒤쪽 만들기 + 계속 돌게 하기 — 어디서 멈추는지 가장 잘 아는 사람이 살핀다
떼어 두면 좋은 짝
- 만든 사람 + 잘 도는지 보는 사람 — 자기가 만든 것은 이상하게 써 볼 생각이 잘 안 든다
- 만든 사람이 아닌 사람이 써 봐야 헤매는 곳이 보인다
우리 모둠에서 아무도 안 맡을 것 같은 일은 무엇인가요? 그 일을 누가 맡을지 지금 정해 보세요.
필요한 힘
필요한 힘은 「어떤 일에서 왜 필요한가」로 적어야 뜻이 분명해집니다. 『무엇을 하나』 절의 네 갈래에 붙여 봅니다.
| 어떤 일에서 | 어떤 힘이 |
|---|---|
| 이미 있는 것 읽을 때 | 모르는 채로 견디는 힘. 처음 여는 코드는 대부분 모르는 것투성이다. 다 이해하려 하지 않고 필요한 부분만 찾아가는 요령이 필요하다. |
| 무엇을 만들지 정할 때 | 되묻는 힘. 「이렇게 해 주세요」를 그대로 받지 않고 「왜 그게 필요하세요?」를 물을 수 있어야 한다. |
| 새로 쓸 때 | 쪼개는 힘. 큰 일을 작은 조각으로 나누어 하나씩 끝낼 수 있는 크기로 만든다. |
| 고치고 확인할 때 | 좁혀 가는 힘. 어디가 문제인지 범위를 절반씩 좁혀 가며 찾는다. 짐작으로 고치지 않는다. |
| 언제나 | 적어 두는 힘. 왜 이렇게 했는지 남겨 두지 않으면 석 달 뒤의 내가 남이 된다. |
「좁혀 가는 힘」을 조금 더
무엇이 잘못됐는지 모를 때 이것저것 고쳐 보는 것은 느리고, 멀쩡한 곳까지 건드리기 쉽습니다. 대신 범위를 반으로 줄여 가며 찾습니다.
- 어디까지는 맞는지 확인합니다. 중간에 값을 찍어 보면 됩니다.
- 맞는 곳과 틀린 곳 사이의 가운데를 봅니다.
- 이것을 몇 번 반복하면 문제가 있는 곳이 몇 줄 안으로 좁혀집니다.
기술은 바뀌고 이 힘들은 남는다
지금 배우는 언어와 도구는 몇 해 지나면 다른 것으로 바뀌기도 합니다. 그런데 『필요한 힘』 표에 적은 힘들은 도구가 바뀌어도 그대로 쓰입니다.
그래서 「무엇을 배워 둘까」보다 「어떻게 배우는지를 익혀 둘까」가 더 중요합니다. 처음 보는 것을 앞에 두고 스스로 알아 가는 경험을 해 두는 것이 준비입니다.
「이렇게 해 주세요」에 「왜 그게 필요하세요?」를 물으면 무엇이 달라질까요? 요청 뒤에 숨은 실제 문제가 무엇인지 생각해 보세요.
지금 할 수 있는 것
이 일에 관심이 생겼다면 지금 할 수 있는 것이 있습니다. 대단한 것이 아니라 작고 꾸준한 것들입니다.
작게 끝내 보기
큰 것을 시작해 못 끝내는 것보다 아주 작은 것을 끝까지 해 보는 편이 낫습니다. 끝내 본 경험이 다음 것을 끝내게 합니다.
남의 것 읽어 보기
공개된 코드를 열어 한 부분만 읽어 봅니다. 다 이해하지 못해도 괜찮습니다. 모르는 것 앞에 앉아 있는 연습이 됩니다.
남겨 두기
무엇을 왜 했는지 짧게 적어 둡니다. 나중에 이 기록이 내가 무엇을 할 줄 아는지 보여 주는 자료가 됩니다.
「남겨 두기」는 값진데 빠뜨리기 쉽다
만든 것은 시간이 지나면 돌아가지 않게 되는 경우가 많습니다. 그런데 「무슨 문제를 어떻게 풀었는지 적어 둔 글」은 남습니다. 그리고 그 글이 만든 것 자체보다 더 많은 것을 보여 주기도 합니다.
길게 쓸 필요 없습니다. 무엇이 문제였고 · 어떻게 해 봤고 · 왜 그렇게 정했고 · 무엇이 남았는지 네 줄이면 충분합니다.
이 분야로 가는 길은 하나가 아니다
새 직업의 이름은 흔히 「분야 + 다루는 방식」으로 붙습니다. 소프트웨어를 만드는 일도 마찬가지입니다. 앞자리에 무엇을 두느냐에 따라 아주 다른 일이 됩니다.
| 앞자리 | 그 분야에서 만드는 것 | 있으면 좋은 것 |
|---|---|---|
| 의료 | 검사 결과를 다루고 보여 주는 프로그램 | 몸에 대한 지식, 조심하는 태도 |
| 교육 | 배우는 과정을 돕는 도구 | 가르쳐 본 경험, 배우는 사람에 대한 이해 |
| 예술 | 표현을 넓히는 도구, 반응하는 작품 | 만들어 본 경험, 보는 눈 |
| 환경 | 측정하고 모으고 읽어 내는 시스템 | 자연에 대한 지식, 오래 지켜보는 끈기 |
「있으면 좋은 것」 열을 보세요. 프로그래밍 말고 다른 것이 적혀 있습니다. 지금 다른 과목에서 배우는 것, 좋아해서 오래 해 온 것이 여기서 앞자리가 됩니다. 이 과목의 이름이 「소프트웨어와 생활」인 까닭이기도 합니다.
내가 오래 해 온 것이나 좋아하는 것을 앞자리에 놓으면 어떤 일이 될까요? 표의 「있으면 좋은 것」 열에 무엇을 적을 수 있을지도 생각해 보세요.
핵심 정리
무엇을 하나
- 일은 넷으로 나뉜다. 읽기 · 정하기 · 새로 쓰기 · 고치고 확인하기.
- 넷 가운데 셋은 새 코드를 쓰는 일이 아니다. 읽기와 고치고 확인하기는 이미 있는 것을 다루는 일이다.
- 그래서 남이 쓴 것을 읽는 힘이 중요해진다.
여러 역할
- 정하기 · 보이는 것 · 화면 쪽 · 뒤쪽 · 잘 도는지 보기 · 계속 돌게 하기.
- 학교 모둠에서는 「잘 도는지 보기」와 「계속 돌게 하기」가 비기 쉽다.
- 만든 사람과 시험하는 사람은 떼어 두는 편이 좋다.
필요한 힘
- 모르는 채로 견디기 · 되묻기 · 쪼개기 · 좁혀 가기 · 적어 두기.
- 고칠 때는 짐작하지 말고 범위를 반씩 줄여 찾는다.
- 도구는 바뀌지만 이 힘들은 남는다.
지금 할 수 있는 것
- 작게 끝내 보기 · 남의 것 읽어 보기 · 남겨 두기.
- 만든 것은 안 돌아가게 되기 쉽지만 적어 둔 글은 남는다.
- 앞자리에 무엇을 두느냐로 아주 다른 일이 된다. 다른 과목이 밑천이다.
확인 퀴즈
배운 내용을 확인해 봅시다.
새 코드를 쓰는 시간이 대개 생각보다 짧은 편인 까닭으로 알맞은 것은?
학교 모둠에서 비기 쉬운 역할은?
어디가 잘못됐는지 모를 때 알맞은 방법은?
만든 것보다 오래 남는 것은?