개발을 공부하고 싶은 건축가들을 위한 스킬트리 - 도입부
2024. 08. 03.
그래스호퍼에서 for문을 쓰기 어렵다고 한 글(link), 구현력과 설명 능력이 있는 개발자와 같이 일하고 싶다고 했던 글(link), 그리고 건축가들이 재현 가능성에 대한 고민을 너무 안 한다고 했던 글(link)에서 하고 싶었던 이야기는, 짧게 줄이자면 이거다. "개발을 공부하고 싶은 건축가라면 그래스호퍼만 쓰는 건 그만 두고, 프로그래밍 언어를 공부하자. 그리고 개발자들이 어떻게 프로젝트를 관리하고 있고 어떻게 협업하고 있는지도 배우자".
위 문장을 더 짧고 명료하게 바꾸자면, 프로그래밍 언어 하나 붙잡고 공부하고, git을 쓰는 방법을 공부해보자는 이야기다. 그럼 구체적으로 무엇을 공부해야 하고, 얼마나 깊이까지 공부해야 하며, 어떻게 공부해야 하는 것일까? 꽤 오랜 기간 건축학도의 입장에서 개발 영역을 독학하고 현업에 나가서 개발자로 일하면서 나름대로 스킬트리를 생각해본 것이 있는데, 우선 아래와 같이 시작하면 좋을 것이다.
- 프로그래밍 언어를 한 번도 다뤄본 적이 없다면 python, C#, 이 둘 중 하나로 시작하자. 건축가들이 쓰는 프로그램들을 기반으로 생각하면 이게 일반적인 선택이다. 혹시 웹서비스를 만드는 것에 관심이 있다면 javascript도 선택지로 생각해볼 수 있다.
- 언어를 하나 골랐으면, BOJ에 있는 브론즈(solved 기준) 문제를 풀 수 있을 정도 까지만 일단 공부한다.
- 아마 대다수의 건축가들은 git이 뭔지 모를 것이다. 처음에는 "최종.psd, 진짜최종.psd, 진짜진짜최종.psd, 진짜진짜최종-2.psd, ..." 를 훨씬 세련되게 관리할때 쓰는 툴이라고 생각하고 접근하는 것으로 충분하다.
- 위의 관점을 기반으로, 스스로 BOJ에 있는 문제를 푼 코드를 github에 올려서 관리할 수 있을 정도 까지만 일단 공부한다.
물론 프로그래밍 언어도 그렇고 git도 그렇고 공부할만한 자료들이 웹상에 많이 있을 텐데, 오히려 너무 많아서 뭘 공부해야 하는지 헷갈릴 수 있다. 이 문제는 내가 직접 공부하기에 딱 적당한 자료를 선별해서 공유를 하든, 아니면 직접 자료를 제작하든 하면 해결이 될 것 같다.
그럼 그 다음으로 풀어야 하는 문제는 공부가 일회성으로 끝나지 않으려면 실습할만한 컨텐츠가 계속 필요할텐데, 이를 어디서 찾느냐-일 것이다. 이 문제에 대한 일차적인 해법으로는 앞서 제시한 알고리즘 문제 풀기가 있겠다. 두 달 정도 전에 solved에 마라톤이라는 기능이 생겨서 내가 지금까지 푼 문제들의 난이도를 기반으로 매주 여덟 문제씩 선정해서 제공해주고 있는데, 이것도 꽤 쓸만한 실습 자료라고 생각된다.
건축가들에게 익숙한 것을 구현하는 것이 알고리즘 문제를 푸는 것보다 재밌을것 같다면 그래스호퍼의 컴포넌트나 다이나모의 노드를 하나씩 잡고 코드로 구현해보는 것도 괜찮다. 문제가 하나 있다면, 그래스호퍼 컴포넌트들은 구현 난이도가 정말 제각각인 반면 어떤 컴포넌트부터 구현하는 것이 좋을지 정리되어 있는 자료가 없기 때문에 난이도 파악이 가능할 정도로 개발에 숙달이 되기 전에는 실습하기에 별로 좋은 자료가 아닐 수도 있다는 것이다. 예전에 BOJ에 있는 문제들을 보고 난이도를 부여하고자 solved가 만들어졌듯이, 컴포넌트를 직접 구현하는 것에 관심있는 건축가들이 직접 구현한 코드들을 서로 공유하면서 난이도를 매길 수 있는 시스템을 만드는 것도 재밌겠다는 생각을 했던 적도 있었는데, 이에 대해서는 나중에 다른 글에서 좀 더 설명하도록 하겠다.