Vision
들어가며
내가 가지고 싶은, 가지려고 노력을 하고 있는 기본이라고 생각을 하는 것들에 대한 내용이다.
프레임워크가 범람하는 시대에서 전부 쫓아가기는 벅차고 그렇다고 그런 프레임워크들을 안다고 해서 언제 다시 새로운 것을 공부해야할지 모르는 상황에서 안주 하지 않기 위한 기본이라고 생각하는 것들이다.
물론, 개발자는 항상 공부를 해야하는 직업이므로 새로운 것을 등한 시 할 수도 없다.
하지만 나는 밑에 나온 내용들을 항상 상기하기 위해서 정리한다.
그리고 수시로 이 문서를 업데이트 한다.
비판적 사고
나의 생각, 의견이 없이 만들어진 코드는 내가 어떤 기여를 했다고 할 수가 없다. 항상 어떤 일이 주어지거나 새로운 것을 만들어 내야 한다면 더 좋은 방법이 없는지 왜 이것을 해야하는지 최우선으로 생각하고 커뮤니케이션을 한다.
알고리즘 작성
아이디어가 있어도 그것을 제대로 구현을 하기란 쉬운 일은 아니다.
구현을 했다고 해도 더 좋은 방법은 언제나 있기 마련이므로 알고리즘을 작성하는 능력은 무엇보다도 중요하다고 생각을 한다.
항상 알고리즘 문제를 풀어보고 생각을 한다.
프레임 워크 및 라이브러리를 적재 적소에 활용
최신 기술이 언제나 옳은 것은 아니다.
최신 기술이라고 해도 내가 하는 프로젝트에서는 사용을 하면 안되는 경우도 종종 있다.
적재적소에 활용을 하기 위해서는 그 기술들의 장점 및 단점을 파악하고 있는 것이 중요하다.
단순하게 생각하기
개발을 하다보면 그 기능에 빠져서 이 기능이 다른 곳에 어떠한 영향을 미칠지 생각을 못하곤 한다.
그래서 언제나 좀 더 단순하게 할수는 없을지 한번 더 생각을 해봐야 한다.
그러기 위한 방법으로 나는 노트와 펜을 즐겨 사용하곤 한다.
언제나 무언가를 개발하기 전에는 어떻게 만들 것인지 대략적인 흐름을 작성 한다.
테스트 코드 작성
시간이 없다는 핑계로 가끔은 빼먹은 경우가 있었는데 무슨일이 있어도 테스트 코드는 중요하다고 생각한다.
이 코드를 수정시 오류 없이 돌아가는 것을 확인하는 유일한 방법이고 가장 빠른 방법이다.
하루에 몇십번씩 반영을 하기 위해서는 테스트 코드 작성은 기본이다.
아직 TDD 까지는 능숙하게 하지는 못하지만 도전 중이다.
항상 코드를 개선하려고 하는 의지
해당 기능을 개발 했다고 해서 그 기능 개발이 끝이라고 생각하지 않는다.
언제나 더 좋은 방법이 있고, 뜻하지 않게 그런 방법이 생각나기도 하기 때문이다.
항상 더 좋은 방법은 있다는 생각으로 지금의 끝이 아니라고 생각하자.
지적 호기심
무엇이든지 관심을 가지는 것이 나를 위해서도 그렇고 주변 사람들을 위해서도 좋다고 생각한다.
개발 뿐만 아니라 개발 외적인 것에도 관심을 가지자.
핵심적인 부분 파악
무언가를 개발을 하기 위해서는 핵심적인 것을 관통을 해야한다고 생각한다.
그렇지 못하면 삽질의 연속이고 버그의 연속이다.
삽질이 나쁜 것은 아니지만 방향을 알고 삽질을 해야한다고 생각한다.