단상 - 당하고 나서야(?) 배울 수 있는 것들 / 간만에 생긴 호기심
[1]
조금은 억울하게도(?) 겪어보고 나서야 머릿속에, 몸에 확실히 각인되는 것들이 있다.
사실 대부분의 지식이 그러하다고 생각한다.
막연했던 것들은 한번 직접 당해보면
"아 이래서 그렇구나" "이래서 조심해야하는구나"가 확실하게 와닿는다.
마치 시험문제에서 틀렸던 건 기억에 잘 남는 것처럼,
어떤 문제에 대해 예상한 답이 틀렸을 때 머릿속에 확실히 남는 것 같다.
최근 회사에서 신규 런칭한 서비스 때문에 여러 생각을 했다.
어떤 서비스에 대한 장애에 대응할 수 있다는 건
그 서비스의 로직을 잘 알고 있고,
정말 그것이 버그라면 코드의 어느 부분을 고쳐야할지 빠르게 찾을 수 있다는 거다.
만약 내가 그 서비스의 아주 작은 일부조차도 개발하지 않았다면 어떻게 해야할까?
별 수 없지 뭐.
1 따로 코드를 계속 찾아봐서 눈에 익거나,
2 아니면 아주 자그마한 기능이라도 (API 하나 새로 뚫는다든가) 추가해보든가.
근데 1은 좀 많은 노력이 필요하다고 생각한다.
당장 나에게 어떤 피해/이익을 주지 못하는 것을 노력해서 찾아보며 머리에 집어넣어야하는 거니까.
단순히 코드 전반을 훑어보면서 "아 이런식으로 돌아가네~"하고
전체적인 윤곽만 잡는 것과는 다르다.
갑자기 치고 들어오는 장애/버그에 대응할 수 있다는 건 그것보다 더 많은 것을 요구한다.
그러면 현실적은 대안은 2인데, 이미 잘 돌아가고 있고, 딱히 추가할 기능이 없으면
억지로 기능을 추가할 수는 없기 때문에 굉장히 미묘해진다.
1밖에는 할 수 없는 것이다.
[2]
어제 친구랑 이야기를 하다가..무슨 이야기를 하고 있었지?
모르겠다. 여하간 뭔가 이야기를 하다가 C++과 rust에 대한 이야기를 하게 되었다.
아마 GC 얘기하다가 러스트까지 흘러간 것 같은데...아무튼.
rust의 특징에 대해 조금 들었는데 너무 흥미로웠다.
다른 언어들에서 기본으로 상정하는 것과 정반대인 느낌?
다른 언어들은 const를 선언해서 변하지 않는 값이라는 걸 명시한다면
rust는 기본적으로 불변임을 가정하는.
그리고 타입에 따라 복사할 수 있는지 아닌지 정해지는 것도 재미있었다. (맞나?)
여지껏 리스프, 코틀린 등 뭔가 "아 한번 공부해보면 재밌을 거 같은데"싶은 언어들이 있었는데
매번 생각만하고 손이 가진 않았는데 러스트는 진짜 얘기 듣자마자
튜토리얼을 해보고 싶다는 생각이 들었다.
물론 허리, 어깨 다 뭉쳐서 머리도 아프고 피곤해서 아직 못봤다만...
타이레놀 한알가지고는 답도 없었고...
다른 친구한테 물어보니 안그래도 그 친구도 러스트에 관심이 있어서
공부하려고 하던 중이었다고 한다!
ㅋㅋ 같이 러스트로 조그만거 만들어보면 재밌을텐데.
한편 점점 강하게 느끼고 있는게
초심자에게 C++은 흥미 떨어뜨리기 딱 좋다는 이야기가 많기는 하지만
C++을 배우면 자료구조를 이해하는 것도 그렇고
다른 언어들을 이해하는데 엄청 큰 도움이 될 것 같다.
파이썬을 첫 프로그래밍 언어로 접한 것에 후회는 없지만,
C++을 기초 문법, 핵심 개념만이라도 떼놨으면
지금 훨씬 더 다른 언어들을 잘 이해하지 않았을까 싶고.
파이썬의 장점이자 단점은 내장 메소드가 풍부하고 문법이 간결하다는 거다.
어지간한건 싹~~~ 덮어놓으니 내부 원리에 대해서 생각이 안 미친다고 해야하나.
그러다보니 개인적으로는 "아 이거 파이썬에서는 쉽게 됐는데
왜 이 언어에서는 귀찮게 이렇게 해야돼요/없어요?" 하는 소리가
머릿속에 맴도는데 그걸 없애기까지 시간이 좀 걸렸다.
모든 것에는 대가가 있는 법. 세상에 마법은 없어서,
뭔가 쉽다면 그 이면에서 누군가/뭔가가 그걸 쉽게 할 수 있도록
열심히 노력하고 있기 마련이다. 메모리든 CPU든 뭐든..