React/Redux 를 써보는 중입니다.
개념은 이제 좀 이해가 되는데,
문제는 javascript 문법과 런타임에 대한 이해입니다.
ES5 이후 ES6, JSX 등 문법이 새로 도입되었습니다.
이들을 정리하는데 시간이 좀 걸리네요.
예전엔 새로운 언어가 나오면, 안정될 때 까지 좀 기다리다가,
이를 기반으로 라이브러리, 프레임워크가 나오고,
이를 기반으로 어플리케이션을 만들었는데,
요즘은 어플리케이션이 라이브러리를 드라이브하고
라이브러리가 언어 자체를 바꿔버리는 희안한 세상이 된 것 같습니다.
소프트웨어 발전 속도가 그만큼 무지막지하단 뜻이겠지요.
이쯤 되면, "나는 어디에 중심을 두어야 하나" 생각이 들 텐데요.
저는 '언어와 런타임의 이해'에 중심을 두고 있습니다.
이를 이해하면 그 위에 올라가는 라이브러리/프레임워크의 학습시간을
단축시킬 수 있습니다.
게다가 라이브러리/프레임워크 보다 언어/런타임은 변화의 속도가 느립니다.
런타임의 대표적인 예가 CPU + Memory 구조인데,
이 구조는 튜링 머신으로부터 시작해서 폰 노이만 구조의 컴퓨터에 이어
현대 컴퓨터까지의 런타임은 바뀌지 않았습니다.
이쯤 되면 C 를 공부하라는 뜻이냐고 반문 하실 수도 있겠지만,
결코 그런 이야기는 아닙니다.
Programming is understanding 이라고 합니다.
대부분의 경우 도메인을 이해할 때 쯤 프로젝트는 끝납니다.
프레임워크에 대해 의문이 간혹 생기지만, 그냥 지나치거나 나중에 하지 뭐
이 순간에 언어/런타임까지 들어가 보는 것이 경험치 상승입니다.
IT 회사 면접때, 도메인을 묻지 않고, 내부의 동작을 묻는 경우가 많습니다.
그런 경험은 어디서나 쓰이기 때문입니다.