1.1변하는 것과 변하지 않는 것
프론트엔드 개발 생태계와 안티프래질
TL;DR
본격적으로 프론트엔드에 대한 이야기를 시작하기 전, 저자 김상철님은 이 책의 제목이자 전체를 관통하는 주제인 안티프래질(antifragile)이라는 개념에 대해 소개한다.
1. 프래질과 안티프래질
안티프래질은 회복력 혹은 강건함 이상의 의미가 있다. 회복력이 있는 물체는 충격제 저항하면서 원상태로 돌아온다. 반면, 안티프래질한 대상은 충격을 가하면 더 좋아진다.
안티프래질은, 한마디로 충격을 가했을 때 오히려 강해진다는 의미다.
우리가 살고 있는 세계는 복잡계(complex system)다. 복잡계는 수많은 구성 요소가 상호 작용하면서 결과를 정확하게 예측하기 어렵다는 특징을 가지고 있다. 미세한 변화로부터 연쇄 작용의 결과를 추론할 수 없으며, 동일한 변화도 매번 다른 결과를 초래한다.
우리가 몸담고 있는 프론트엔드 개발 생태계 역시 복잡계에 속한다. 5년, 10년 후에 어떤 일이 일어날지 예측하는 것은 불가능에 가깝다. 현재 시점에서 5년 뒤에 일어날 일을 예측해보려 해봐야, 인공지능이 더 발전해 개발자들 중 상당수가 일자리를 잃는다거나, 리액트 대신 Svelte가 가장 인기 많은 라이브러리가 된다거나 하는 정도인데, 우리가 현재 알고 있는 정보를 바탕으로 미래에 대한 예측을 해도 전혀 예상하지 못한 도메인의 변화로 인해 모든 것이 틀어질 수도 있다.
따라서, 복잡계 속에서 의사 결정을 내릴땐 선택이 얼마나 변화에 강한지를 고려해야 한다. 이 원리는 학습에도 적용되어, 변화를 예측하기보단 변화에 강건한 옵션을 보유하는 것이 중요하다.
2. 프론트엔드 개발 생태계와 안티프래질
안티프래질은 미래를 정확하게 예측하려는 대신, 좋은 옵션을 구비하는 전략을 통해 변동성이 큰 복잡계에서 이익을 얻는 구조를 구축하는 것이다.
프론트엔드 세계는 하루가 멀다하고 수많은 라이브러리가 등장하고 소멸하고 새로운 브라우저가 등장하고 업데이트된다. 또, 이 변화를 예측하고 대비하기가 쉽지 않다. 아무리 학습 속도가 빠른 사람이라 해도 생태계에서 일어나는 모든 변화와 지식을 머릿속에 넣을 수는 없다. 변화가 학습 속도보다 빠르기 때문이다.
따라서 이러한 변화와 상관없이 변화 속에서 이익을 얻는 구조를 만들어야 하는데, 이를 위해선 '좋은 옵션'과 이를 알아보는 '시각'이 필요하다.
3. 안티프래질한 옵션을
미래를 알려면 당신은 킬러 애플리케이션에만 몰두하면서 기술 자폐적인 용어와 씨름할 필요가 없다. 오직 다음과 같은 원칙을 따르면 된다.
과거를 존중하고, 역사적 기록에 관심을 가지고, 옛것이 주는 지혜를 찾으려고 노력하고, 생존에는 필수적이지만 때로는 문자로 전해지지 않는 경험 법칙을 알아내려고 노력해야 한다. 다시 말해, 주변에 있는 것, 즉 살아남은 것에 비중을 두어야 한다.
-나심 탈레브
프론트엔드 생태계의 빠른 변화에서 비대칭적인 이익을 얻는 옵션이란 무엇일까?
우선, 오래 살아남은 것들은 안티프래질하다. 운영 체제, 데이터베이스, 시스템 프로그래밍 등 컴퓨터 공학 교과의 강의 계획서는 20년이 넘어도 커리큘럼이 그다지 바뀌지 않는다. 해당 기술이 20년이 넘는 세월 동안 거의 동일한 커리큘럼으로 강의되고 여전히 전공 필수 과목이라는 것은, 해당 기술이 여러 변화에도 살아남았으며 이 기간에 가해졌던 여러 변화로 인해 다듬어져서 더 강건해졌다는 뜻이다. 다시 말해, 20년이 넘는 기간의 변화에도 살아남아 강건해진 운영 체제라는 교과 과목은 방금 등장한 따끈따끈한 라이브러리보다 더 오래 살아남을 가능성이 높다는 뜻이다.
프론트엔드 생태계에선 브라우저가 동작하는 원리, 웹이 동작하는 방식 등 시간에 따른 변화에도 오래 살아남은 것들을 이해하고 공부하는 것이 방금 생긴 힙한 라이브러리의 기능을 익히는 것에 비해 안티프래질한 것으로 볼 수 있다.
뛰어난 프론트엔드 개발자들은 새로운 라이브러리나 프레임워크를 학습할 때 본질적인 부분을 먼저 파악하고 이를 기반으로 빠르게 학습을 진행한다. 이들은 문제를 해결하거나 새로운 도구를 학습할 때 이 옵션을 단순히 개념이나 해결책 그 자체로 생각하지 않는다. 이들은 웹이 동작하는 방식이나 브라우저가 웹 페이지를 로드하는 방식에 대한 지식을 옵션으로 보유하며, 이 옵션을 통해 CDN을 활용할지, SSR을 사용할지, 혹은 렌더링을 최적화하는 라이브러리를 적용할지 결정하는 방식으로 문제를 해결한다.
요컨대, 좋은 옵션은 변화로 인해 이익을 얻는 성질이 있다. 학습한 것이 변화로 인해 이익을 얻는다면 그것이 안티프래질한 좋은 옵션이다. 이렇게 얻은 옵션들을 차근차근 쌓아가는 식으로 학습한다면, 생태계에서 살아남고자 너무 많은 것을 알아야 할 필요가 없다.