처음 코딩을 배우기 시작했을 때,
'개발자를 직업으로 삼아야겠다!'
이런 확신은 없었어요.
그때 누군가 너가 지금 시작해서 컴공 전공한 사람이나, 이미 경험 많은 사람만큼 잘할 수 있을까?
이런 얘기를 한적이 있었거든요. 그런 걱정이 저도 마음속에 있었어요.
아 내가 정말 이걸 직업으로 했을때 경쟁력이 있고 잘할 수 있고, 내가 이 일을 좋아할까?
그때는 누가 요즘 뭐 하냐고 물어보면. '요즘 코딩을 배우고 있다.' 라고 했어요.
근데 나 이거 진지하게 하는 거 아니야. 나 그냥 앱 만들어보고 싶었어.
굳이 이렇게 얘기했던 거 같아요. 왜냐하면 아직 저도 확신이 없으니까.
아직 진지한거 아니라고. 일부러 방어를 하는거죠.
그랬던 제가 근데 그게 딱 깨지면서 ‘아 나 정말 개발자라는 직업을 해볼 수 있겠는데? 재미있겠는데?’ 했던 순간이 있어요.
그 얘기를 간단하게 해보려고 합니다.
처음에 저는 코딩이 수학 문제 같은 거라고 생각했어요.
컴퓨터라는 기계가 있고. 제가 원하는 동작이 있는데. 그 기계는 내가 뭘 하고 싶은지 모르죠. 프로그래밍은 그걸 시키는 거잖아요. 그게 약간 수학 문제 같았어요.
‘막대기 2개랑 뭐 상자 하나가 주어지는데 이걸 가지고 초가 벽에서 떨어지게 하라.’ 뭐 이런 퀴즈 아시죠?
프로그래밍은 그런 느낌의 문제를 수학이나 컴퓨터과학 지식을 가지고 푸는 거라고 생각했어요.
다시 말해, ‘컴퓨터가 작동’하도록 하는 게 프로그래밍인 줄 알았어요.
근데 공부를 하다보니까 그게 아니었더라고요.
물론 컴퓨터가 원하는 대로 작동하게 코딩하는 건 기본이에요.
그런데 더 중요한 건 다른 사람, 다른 개발자가 이해할 수 있는 코드를 써야해요. 이게 소프트웨어 개발의 마스터들이 다들 입을 모아서 하는 얘기거든요.
‘컴퓨터가 알아듣는 코드를 쓰는 것은 아무나 하는 것이다. 진짜 좋은 개발자는 다른 사람이 쉽게 알아볼 수 있게 쓰는 코드를 쓴다’
그래야 다른 개발자들이 이해하고 수정하는 비용이 줄어들고, 그게 진짜 개발에서 중요한 부분이라는 거에요.
그런 말들을 들으면서 어느 순간 딱 느꼈어요.
아 이게 내가 글을 써왔던 과정이랑 굉장히 비슷하구나.
(여기서 말하는 글은 비문학적인 글)
첫번째로, 글을 생각해보면, 단순히 정보를 다 담았고, 문법이 맞게 문장을 구성했다고 해서 끝이 아니거든요.
프로그래밍도 마찬가지였던 거에요. 단순히 제대로 작동한다고 끝이 아닌거죠.
유튜브 조회수 높은 것부터 정렬해서 보여줘. 구독 버튼 눌렀을 때 이 사용자가 이 채널 구독하는 상태로 만들어줘. 이런 기능을 구현하는 코드는 많이 있을 거에요.
하지만 그게 진짜 좋은 코드라면, 도대체 어떻게 정렬을 하고 있는 거고, 어떤 동작을 의도한 건지 코드만 보고도 쉽게 이해가 돼야 한다는 거죠.
두번째, 글쓰기의 핵심은 구조를 짜는 거에요.
글쓰기는 쓰는 사람이 맥락과 독자를 고려해서, 어떻게 구조를 짜느냐에 따라서 잘 읽히는 정도가 완전히 달라져요.
문장을 어디에서 끊을 건가, 어디서 단락을 나누고, 소제목을 어떻게 붙이고, 어떻게 서로 다른 예시들을 하나의 주제로 묶을 것인가. 이런 것들을 고민하는 구조의 아트거든요.
근데 코드도 똑같아요. 복잡한 문제, 복잡한 동작들을 더 이해하기 쉽게, 더 깔끔하게 만들기 위해서 함수를 쪼개고, 이름을 붙이고, 객체로 묶거든요.
좋은 프로그래밍의 기술이라고 하는 것들, 객체지향이니 함수형이니 뭐 이런 것들도 다 결국은 이런 구조화하는 아트의 일종이거든요.
개발자들이 이름짓기가 제일 어렵다고 하는 것도 같은 맥락이고요.
세번째로, 좋은 글이든 좋은 코드든 ‘인간’을 고려해야한다는 게 비슷해요.
왜냐하면 우리가 글쓰기를 할 때는 어떤 ‘나와 다른 지식, 생각를 가진 다른 사람들이 이걸 읽고 이해하기를 바라면서 글을 쓰잖아요. 그렇기 때문에 좋은 글을 쓰려면 읽는 사람의 인지와 마음을 생각해야 해요.
근데 코드도 똑같아요. 코드를 실행할 컴퓨터도 중요하지만, 코드를 읽는 다른 개발자들은 인간이거든요.
컴퓨터에만 초점을 맞춘다면 우리는 굳이 뭐 어렵게 함수 나누고 클래스 짜고 할필요가 없어요.
하지만 프로그래밍을 잘하려면 ‘사람’에게 초점을 맞춰야 돼요. 사람은 기억력과 인지력, 받아들일 수 있는 복잡성에 한계가 있거든요.
좋은 코딩 스킬이라고 하는 것들은, 이것과 연관이 되어있어요. 중요하지 않은 정보는 안으로 숨긴다. 사람들이 많이 하는 현실의 개념으로 이름을 붙인다.
코드를 작성한 사람의 의도를 다른 개발자, 혹은 미래의 나한테 전달한다. 이런 과정도 모두 개발자의 일상이고 프로그래밍의 일부이거든요.
저는 이걸 그때 당시에 아주 어렴풋하게 깨달았는데요. 그때 딱 ‘아 이거 내가 잘할 수 있겠다’라는 생각이 들었어요.
저는 글쓰기를 좋아하고, 특히 글쓰기 안에서도 저렇게 논리적으로 구조화하는 부분을 굉장히 좋아하거든요. 저는 주장1 근거1 근거2 이런 식으로 논리적인 글쓰기를 되게 좋아했고, 예전에 수능에서도 국어가 가장 자신이 있었어요.
내가 수학이나 알고리즘, 컴퓨터라는 기계에 대해서는 잘 모르겠지만. 논리적으로 구조화하는 거, 이건 내가 컴공과 나온 사람만큼 잘할 자신이 있는데? 라는 생각이 들었어요. 글쓰기랑 비슷하다고 생각하니까, ‘국문학과 나왔다고 글쓰기 잘하는 거 아니 잖아?’ 라는 생각이 들면서 자신감이 생기더라고요.
그 지점에서 갑자기 개발이라는 게 ‘내 거’ 같다는 생각이 들기 시작했어요.
그때부터 확신을 가지고 개발 공부를 하기 시작했고,
'어떻게 코드를 읽기 좋게 구조화할 것인가'
이게 실제로 지금까지도 제가 가장 재미있어하고 좋아하는 분야입니다.
좋은 프로그래밍은 글쓰기와 닮아있다는 말
너무 공감합니다~
그리고 구조가 핵심이다 라는
말에도 너무 공감합니다!
좋은 글 잘 읽고 갑니다 :)