추상화, 저도 한번 써 봤어요

주병현
∙∙조회 17

추상화, 저도 한번 써 봤어요

요즘 디벨로그에 추상화 글이 자주 올라와요.
읽어 보니 게임 개발반에서 수업 들은 내용을 정리해서 올리는 글들이더라고요. 진도가 추상화, 인터페이스 이쪽인가 봄니다!

사실 추상화라는 단어는 일상에서 안쓰잖아요?
"추상화" 하면 미술관에 걸린, 뭘 그린 건지 모르겠는 그림이 먼저 떠올라요.
그런 개념을 수업 끝나고 다시 꺼내서 정리하고, 예시 찾고, 자기 말로 풀어 보려는 글들을 보니까 흐뭇했읍니다.

그 와중에 이상하게 추상화라는 단어가 유독 눈에 들어왔어요.

그래서 저도 한번 써 봤습니다. 미리 말씀드리면 정확하지는 않아요.
교과서 정의를 옮긴 게 아니라 제가 이해한 방식으로 접근해 본 거라, 틀린 데 있으면 댓글로 알려 주세요.


우선, 제가 추상화를 처음 접할 때, 저를 가르쳐주셨던 분에게 들었던 설명 먼저 하겠습니다.

새랑 낙타를 떠올려 볼게요.

닮은 데가 거의 없어요. 새는 깃털 달고 날아다니고, 낙타는 혹 달고 사막을 걸어 다녀요. 사는 곳도 먹는 것도 달라요.

근데 우리는 둘 다 그냥 "동물"이라고 불러요.
그렇게 부르는 순간 깃털이니 혹이니 하는 건 머릿속에서 싹 빠지고, breathe, move 정도만 남아요.

제가 이해한 추상화는 이거예요. 필요한 것만 남기고 나머지는 일단 치운다.

"일단"이라고 쓴 데는 이유가 있어요. 깃털이 쓸모없어서 버린 게 아니에요.
지금 "동물" 얘기를 하는 데는 필요 없으니까 잠깐 옆에 치워 둔 거예요. 새 얘기만 할 땐 다시 꺼내면 돼요.

수업에서 배운 걸로 쓰면 아마 이런 모양일 거예요.

csharp
abstract class Animal
{
    public abstract void Move();
}

class Bird : Animal
{
    public override void Move() { /* 난다 */ }
}

class Camel : Animal
{
    public override void Move() { /* 걷는다 */ }
}

Move()를 부르는 쪽은 상대가 새인지 낙타인지 몰라도 돼요. 움직이라고만 하면 새는 날고 낙타는 걸어요. 이렇게 놓고 보니 말이 되더라고요.


여기까지는 배운 내용을 적은 단순한 수업 내용이었습니다.

그럼 "필요한 것"은 누가 정할까...라고 생각했을 때, 여기서 한 번 막혔어요.

동물원 사육사한테 새랑 낙타를 "동물"로만 묶어서 넘기면 곤란해요.
먹이도 다르고 우리도 다르니까요. 사육사한테는 깃털이랑 혹이 오히려 꼭 필요한 정보예요.

같은 새, 같은 낙타인데 누가 보느냐에 따라 남길 것과 치울 것이 바뀌어요.
즉, 추상화 앞에는 관점이 먼저 있어요.

업무를 진행하면서 느꼈다

저는 요새 회사에서 문서 쓸 일이 많아졌어요. 같은 일인데 읽는 사람마다 궁금한 게 달라요. 결정하는 분은 왜 하는지, 얼마 드는지가 궁금하고, 참여하는 사람은 어떻게 하면 되는지가 궁금해요. 그 사람한테 필요한 것만 남기고 나머지는 치워야 읽혀요. 새랑 낙타에서 "움직인다"만 남긴 거랑 하는 일이 같아요.

말로 하면 쉬운데.... 근데 여전히 어려웠습니다.

피드백을 받으면 그때는 "아 이분은 이게 필요했구나" 하고 알겠는데, 다음 문서를 쓸 때 보면 또 제 관점으로 쓰고 있어요. 다른 사람의 관점으로 생각하는 게 여전히 어려워요.

그러다 이렇게 생각하기로 했어요. 추상화는 원래 어려운 게 맞다. 뭘 남기고 뭘 치울지는 보는 사람이 정하는데, 저는 그 사람이 되어 본 적이 없으니까요.

그럼 어떻게 하란 말일까?

제가 찾은 정답은 소통이에요.

제가 그 사람이 될 수 없으면, 그 사람한테 물어보면 된다.


최근에 기안서와 계획서를 썼어요.

처음 판은 꽤 길었어요. AI로 다듬은 문장이 깔끔하게 들어가 있었고, 숫자도 근거 있는 것만 골라 넣었어요.
틀린 말은 하나도 없었어요. 나름 잘 썼다고 생각했어요.

돌아온 말은 "설득이 안 된다", "너무 AI 같다"였어요. 근거 있는 숫자만 골라 넣었더니, 읽는 쪽에서는 목표를 작게 잡고 방어하는 걸로 보였다는 얘기도 들었어요.

솔직히 좀 찔렸어요. AI 덕분에 편해졌는데, 돌아보니 활용이 아니라 의존이었더라고요. 언어를 처음부터 공부하고 코드를 직접 써 본 게 언제였나 싶을 만큼 AI한테 맡긴 게 많았는데....문서도 마찬가지였어요.

그래서 다음 날 아침까지 처음부터 다시 썼어요.
이번엔 AI로 다듬은 문장은 걷어 내고 제 말로 썼어요. AI한테는 질문이랑 정리만 맡겼고요.

치운 건 두 가지예요. AI로 다듬은 문장, 그리고 근거 있는 작은 숫자. 남긴 것도 두 가지예요. 제가 하려는 것, 그리고 제 말로 쓴 목표.

다시 쓴 판은 처음의 3분의 1 정도 길이가 됐어요. 그걸 보고 들은 말이 "뭘 하려는지 이해했다"였어요.

처음에는 의아했습니다.
분명 초안은 AI, 제가 2차로 수정, AI로 다듬을때는 "이해가 되지 않는다...거부감 들어" 라고 하시고 "AI티가 너무 난다. 처음부터 끝까지 써보는게 도움이 된다."라고 피드백을 주셨습니다.
그리고 AI를 걷어내고 처음부터 끝까지 문서를 작성했을 때는 "이제야 이해가 되고 글이 읽혀진다."라고 하셨어요.
업무가 끝나고, 제가 걷어내었던 수 많은 기안서를 다시 보았습니다. 저로서는 납득이 안가더라구요.

한 30분 보았나? 그 계획서를 두 번 세 번 읽고 팀장님 관점에서 읽으려고 노력하다보니 AI 티도 나고 웬지 모르는 거부감이 들더라구요. 팀장님은 읽을 사람의 관점을 들고 오셨고, 저는 하려는 것을 들고 왔고, AI는 질문이랑 정리를 했어요.
각자 할 수 있는 걸 들고 와서, 서로 얘기하면서 쓸모없는 걸 걷어 냈어요. 그래서 결과가 나왔어요.

얘기가 길었습니다.

제가 생각하는 실무의 추상화는 이거예요.
혼자 다 정하는 게 아니라, 필요한 능력을 가진 사람들끼리 소통해서 걷어 낼 걸 걷어 내는 것.


여러분은 수업에서 추상화를 공부하고 정리해 두셨어요. 저는 그걸 읽고, 업무에 적용해 보고, 몸으로 느껴 봤어요.

이 글을 쓴 이유는 제 경험을 빗대어 추상화가 업무에서도 녹아있다.라는 것도 말하고 싶었지만, 처음 배웠을 때 추상화가 어려웠어요. 제가 처음 배울 때의 저한테 해 주고 싶은 말을 적었습니다

여러분 글 덕분에 좋은 인사이트를 얻었습니다!
늘 열심히 보고 배우고 있습니다 ㅎㅎ