개발 공부를 시작한지는 2년이 넘어가고 있다.
처음 자바스크립트를 통해 입문하게 되었고 개발에 흥미를 느끼게 되었다.
그러나 웹페이지를 만들면서 느낀 것은 단순 구현을 목적으로 코드를 타이핑 했을 뿐 실제 웹페이 치를 개인이 넘어버리게 하는 저급의 성능을 가진 애플리케이션을 만들어 결국에는 더 많은 비용을 들게하는 부끄러운 흑역사를 만들었다. 종국에는 업로드 되는 사진의 용량을 압축시켜서 애플리케이션의 성능을 향상시켰지만 별로 만족스럽지 않은 아쉬움이 많은 프로젝트였다.
개발에는 구현이 전부가 아니라는 것을 깨닫는 순간이였다. 애플리케이션의 기능성, 효율성, 단순성, 보안성을 두루 갖추어 코드스멜이 없는 고품질의 애플리케이션을 만들어야 한다.
그동안 학원과 인터넷 강의는 구현 중심의 교육으로 객체지향의 원칙이나 디자인 패턴을 가르치지는 않았다. 나 역시 그런 커리큘럼에 익숙해져서 단순 언어의 사용방법을 익히고 빠르게 구현하는 방법만 배웠고 구현을 중심으로 프로젝트를 하였다. 그 결과 반복되고 똑같은 작업은 능숙하게 코드를 작성하게 하지만 생각을 깊게하여 만들어진 코드는 아니라 품질을 보장하지 못하였다.
리액트는 컴포넌트 중심으로 작성하게 도와주지만 지금의 구현 중심의 코드 작성은 컴포넌트 간의 과도한 통신, 생성되는 불필요한 변수들은 애플리케이션의 성능을 저하시키고 코드스멜을 유발한다.
객체지향의 원리와 디자인패턴을 배우기 전에 먼저 컴퓨터와 친해질 필요성을 느꼈다.
컴퓨터와 친해진다는 것은 컴퓨터의 자원을 직접 조율하고 만지는 것 즉, 컴퓨터와 가까운 언어를 배우는 것이다.
그렇다고 어셈블리 언어를 배우는 것은 너무 나간 것이고 C언어를 배우는 것 보다 객체지향의 원리를 배우기 위해서는 C언어의 기능을 포함하고 있는 C++이 좋다고 생각한다.
C#은 메모리 관리를 자동으로 해주는 컴파일러가 있어서 컴퓨터와 친해지기는 어렵다.
컴퓨터의 메모리는 할당하고 해제시키고 객체지향적 언어를 배워 볼 수 있는 언어는 C++이 좋다고 생각한다.