반응형
개발자란?
다음부터는 이해를 돕기 위해 건물과 건설 현장에 프로그래밍을 빗대어 설명하겠습니다. 기업에서는 사소한 버그 하나가 큰 스노볼(눈밭에서 주먹만 한 눈을 굴리면 큰 눈사람이 완성되듯이, 작은 실수 하나가 나중에는 걷잡을 수 없이 커진다는 뜻) 이 되어, 막대한 경제적인 손실을 안겨줄뿐더러 유저에게 매우 좋지 않은 경험을 줄 수 있습니다.
이를 줄이기 위해 개발자는 다양한 노력을 기울여야 하며, 단순히 건설 현장에서 벽돌을 쌓아 올리는 사람인 프로그램 코더(Coder)가 아닌, 어떻게 하면 벽돌을 효율적으로 쌓아야 건물이 무너지지 않을지 고민하고 설계하는 프로그램 설계자(Architect)가 되어야 함을 명심해야 합니다.
프로그래밍?
프로그래밍은 크게 두 가지로 구분할 수 있습니다
추상화, 프로그램 틀을 잡음
- 알고리즘
- 어떤 벽돌을 어떻게 효율적으로, 안무너지게 쌓을 수 있을까요? 정답은 알고리즘에 있습니다.
- 알고리즘은 프로그램을 구성하는 가장 기본적인 단위이자 기반으로서 개발자는 이를 꾸준히 공부해야 할 필요가 있습니다
- 알고리즘에 무지한 상태로 건물을 만든다면 마치 종이로 101층 롯데타워 만들기에 불과합니다 •종이로 틀을 잡고, 페인트를 칠해 멀리서 보면 그럴싸할지 몰라도(그럭저럭 작동하는 대로 앱을 출시함), 손가락으로 건들거나 바람이 분다면(100만 명이 넘는 글로벌 유저의 행동은 예측 불가능함 + 모바일의 특성상 lifecycle, memory 등 고려사항이 매우 많음) 금방 무너질 것입니 다.
- https://www.acmicpc.net 과 https://solved.ac 를 통해 공부하는 것을 추천해 드립니다.
- 컴퓨터 공학
- 알고리즘이 전부는 아닙니다. 컴퓨터 프로그래밍은 학문으로 존재할 정도로 깊이가 깊은 학문 입니다.
구체화, 틀을 활용해 제품을 만들어냄
- 구현(iOS)
- 이제 예쁜 벽돌을 고를차례입니다.
- 앞서 말했듯이 알고리즘과 컴퓨터 공학은 프로그램을 설계하는 방법입니다.
- 우리가 말하는 프로그램은 이에 UI/UX 그리고 로직, 데이터 등등 다양한 명세가 추가됩니다.
- 작성한 사람이 아닌 다른 사람이 읽어도 이해할 수 있는 코드는 깃허브에 많습니다. 하나의 오픈소스를 잡고 코드가 어떻게 쓰이는지에 대해 탐구해보시길 바랍니다. 특히, 어떤 타이밍에 파일을 새로 만들어 작성하는지, extension이나 enum같은 기능들은 언제 쓰이는지, 또 뷰와 직접 연관되어 있지 않은 정보는 어떻게 관리하는지 등을 관찰해보는 것을 추천해 드립니다.
마치며
개발자 생태계는 마치 우주의 빅뱅처럼 급변하기에 끊임없이 노력하고, 무지에 대해 두려워 해야합니다. 배움에서 끝나는 것이 아니라 응용을 해야 하며, 최신 기술 트렌드에 뒤쳐질까 늘 경계해야 합니다.
반응형