코딩, 능력보다는 성격
나는 현재 소프트웨어 엔지니어로 캐나다에서 5년 가까이 근무 중이다. 예전 글에서도 밝힌 적이 있지만, 캐나다에 오기 전까지 나는 코딩을 한 번도 해본 적이 없다. 뭔가 특별한 케이스인 것처럼 들릴 수도 있겠지만, 나의 솔직한 심정을 이야기하자면 코딩은 능력보다는 성격이 더 중요하다고 생각한다.
아주 높은 수준의 개발이 아닌 이상, 적어도 지금 내 포지션 정도의 개발은, 어떻게든 쥐어짜면 생 초보라도 어느 정도는 따라갈 수 있을 거라 생각한다. 나는 지금까지 어려워서 못해먹겠다는 생각은 해본 적이 없기 때문이다. 잘난 척이 아니라, 그만큼 벽이 높지 않다는 이야기이다. 하지만 이 일을 즐기지 못한다면, 일 자체에 대한 스트레스가 커질 것이고, 결국에는 오래 지속하지 못할 것이기에, 능력보다는 성격이 더 중요하다는 이야기이다. 다시 말하자면, 능력이 없어서 코딩을 못한다 라는 표현보다는, 코딩에 재미를 느끼지 못해서 코딩을 안 한다 라는 게 더 맞는 말이지 싶다.
코딩은 어떻게 하는건가?
경험이 없는 사람들에게는 막연한 이야기처럼 들릴 수 있겠지만, 원리는 굉장히 간단하다. 여기에 음료 자판기가 있다고 치자. 자판기에 돈을 넣고, 음료를 고르면, 덜컹하고 나온다. 그럼 자판기는 어떤 과정을 거쳐서 동작해야 하는가?
- 돈을 넣었는지 아닌지, 그리고 얼마나 넣었는지를 확인해야 한다.
- 어떤 음료를 골랐는지 확인해야 한다.
이게 코딩이다. 물론 이게 실제로 동작하게 하려면, 더 많은 것을 생각해야 한다.
- 돈을 넣는 과정에서
- 돈을 넣은 액수만큼 화면에 금액이 증가해야 한다. 그러려면...
- 돈을 실에 묶어 넣었다가 빼거나, 환불 버튼을 누르면 제대로 액수가 차감되는지 검증해야 한다
- 진짜 돈인지 아닌지 검증해야 한다
- 돈을 100원만 넣고 1시간 동안 아무것도 안 하면 어떻게 해야 할지 정해야 한다
- 돈을 계속 넣어서 1000만 원 정도 넣어 돈 통이 꽉 차면 더 이상 돈을 넣을 수 없게 해야 한다
- 돈을 넣은 뒤 정전이 되면 그 돈을 어떻게 할지 정해야 한다
- 기타 등등
- 음료를 선택하는 과정에서
- 음료를 선택하면 해당 음료가 나와야 한다. 그러려면...
- 음료의 가격이 자판기에 들어간 돈의 금액보다 같거나 적어야 한다
- 해당 음료의 재고가 있어야 한다
- 빠르게 두 번을 누르거나, 음료 버튼과 동전 환불 버튼을 동시에 눌러도 정상적으로 동작해야 한다
- 음료 선택 후 차감된 금액만큼 잔돈이 나와야 하는데, 잔돈 통이 비어있을 경우 어떻게 할지 정해야 한다
- 음료 선택 후 잔돈 나오기 전에 정전이 되면 그 돈을 어떻게 할지 정해야 한다
- 기타 등등
물론 나는 자판기를 만들어 본 적이 없으므로 전문가의 입장에서 보면 이게 뭔 소리야라고 할 수도 있겠지만, 어쨌든 이것도 코딩이다. 실제로 위의 리스트를 일종의 수도 코드(Pseudo code)라고 볼 수도 있겠다. 수도 코드는 "버튼을 누르면 불이 켜진다" 식으로, 논리 또는 알고리즘을 코딩을 흉내 내서 말로 적은 거라 보면 되겠다.
위의 과정이 즐거웠는가?
나는 위의 목록을 작성할 때, 1. 돈을 넣는다 2. 음료가 나온다 로 시작했다. 그러면서 계속 다른 상황을 가정하면서 살을 붙여나갔고, 그 과정이 꽤나 즐거웠다. 아이들에게 코딩을 가르칠 때에도 비슷한 방법을 쓰기도 했다. 자 그렇다면 과연 당신은 위의 이야기를 읽으면서 재미를 느꼈는가? 뭘 저기까지 생각을 해?라고 느꼈다면, 당신에게 코딩은 어울리지 않을 듯하다. 어, 아직 이것저것 빠진 게 있는데? 라며 태클 걸 생각에 신이 났다면 축하한다. 당신은 코딩을 사랑할 성격을 타고났다. 내 경험 상, 지적질하길 좋아하는 사람들이 코딩도 좋아한다. 오타에 민감하고, 두 칸의 스페이스가 불편하게 느껴지며, 리포트 작성 할 때 폰트 종류나 크기가 제각각인 것을 극혐 한다면, 당신에게 코딩은 천직일 지도 모르겠다.
어디서 시작해야 하나?
혹시라도 코딩에 조금이라도 관심이 있거나, 내가 개발자로 먹고살 수 있을지 궁금하다면, 취미 삼아라도 좋으니 당장 코딩을 시작해 보길 권한다. 그렇다면 제일 처음 어떤 언어를 배워야 할까? 2023년 제일 인기 있는 언어를 검색해 보면 대략 Javascript, Python, Go, Java 이런 것들이 나온다.
사실 가장 접근성이 좋은 것은 Javascript라고 본다. 코딩에 필요한 개발 툴 같은 거 하나 없이도, 당장에 컴퓨터에 메모장만 있어도 시작할 수 있기 때문이다. Javascript로 시작을 하면 코딩을 한 결과물을 어느 컴퓨터에나 다들 깔려있는 웹 브라우저를 이용해 확인할 수 있기 때문에 간편하게 시작할 수 있다. 그 과정에서 HTML도 간단히 익혀보자.
하지만 내 개인적인 의견으로는, 어떤 언어로 시작하든 크게 상관없다고 본다. 나 역시 일을 하면서 Java, JavaScript, C#, Python 등 꽤나 다양한 언어를 사용하고 있기는 하지만, 어차피 프로그래밍 언어라는 큰 틀에서 크게 벗어나지 않기 때문에 크게 무리가 없다. 심지어 처음 써 보는 언어라 할지라도 몇 가지 예제만 있으면 대체로 금방 배울 수 있을 것이다. 중요한 것은, 무엇이 되었든 당장 시작하는 것!