brunch

You can make anything
by writing

C.S.Lewis

by GMIND May 20. 2022

주니어에서 한 단계 오른다는 것

험난한 1년 차를 넘긴 안드로이드 개발자가 풀어보는 주니어란


 처음에 안드로이드를 접했을 땐 단기간에 많은 새로운 것을 배워가며 신기함을 느꼈다. 내 손으로 어느 정도 모양새가 갖추어진 안드로이드 어플리케이션을 만들었을 땐, 안드로이드라는 분야에서 할 수 있는 것을 모두 다 익힌 줄 알았다. 여기저기 두드리면서 일거리를 찾아보기도 했다. 그땐 안드로이드라는 분야 안에서는 뭐든 해 낼 수 있을 것 같았다. 안드로이드 공부가 너무 짧게 끝났다는 아쉬움에, 플러터, 장고, 리엑트, 노드js 등 여러 가지 다른 개발환경을 체험하면서 안드로이드를 소홀히 하기도 했다.


 본격적으로 안드로이드 어플리케이션 개발을 직업으로 여기기 시작했을 때도, 그때까지는 안드로이드 서비스 개발에 있어서는 모든 것을 완벽히 익혔다고 오해했었다. 나의 오해가 걱정으로 돌아온 것은, 프로젝트가 좀 더 커지면서 경험 많은 개발자를 수혈했을 때부터였다.


 나는 학원은 고사하고, 체계적인 프로젝트 경험이나, 심지어 인터넷 강의도 없이 오로지 구글링으로만 안드로이드를 배웠다. 어설픈 지식으로 그럴싸하게 포장해놓은 작업물은 경험자의 눈에는 그저 서툰 졸작일 뿐이었다.


 MVVM* 디자인 패턴**의 편리함만을 주워 들어 그럴싸하게 만들어 놓은 코드는 실무자의 눈에는 모양도 못 갖춘 패턴일 뿐이었다. 어설프게 설계한 데이터베이스***는 관계형 데이터베이스가 가져야 할 요소들을 모두 배제한 채 파일 스트림****처럼 사용하고 있었다.


*) MVVM : Model - View - ViewModel의 축약어로, 어플리케이션의 디자인 패턴 중 하나다. 데이터 계산을 담당하는 “Model”, 화면 레이아웃 구성을 담당하는 “View”, 화면에 부여할 반응형 데이터를 담당하는 “ViewModel”로 구분된다.

**) 디자인 패턴 : 다른 개발자와 협업을 할 때, 최대한 작업하기 편하게 프로젝트를 설계하는 방식을 정한다. 이 중 대표적인 설계 패턴을 디자인 패턴으로 규격화되어있다.

***) 데이터베이스 : 데이터를 빠르게 저장하고 읽어올 수 있는 시스템을 의미한다. 관계형 데이터베이스는 여러 종류의 데이터들이 서로 관계를 가지는 형태의 데이터베이스 시스템

****) 파일 스트림 : 순차적인 데이터 리스트


 다행히도, 이런 꼼꼼한 지적 덕분에 내가 어느 부분이 부족한지 알 수 있었다. 엉망이었던 코드를 하나 둘 만져가면서, 보다 남이 보기 편한 코드가 되어감에 따라서 나의 부족한 점이 하나하나 개선되어감을 느꼈다. 


 단순히 엉망인 코드를 정리하는 것뿐만 아니라, 보다 더 섬세하게 안드로이드라는 주제를 열어볼 수 있었다. 가장 재미있었던 것은 의존성 주입*과 터치 제스처 인식이었다. 일일이 선언했던 동일한 객체를 의존성 주입을 통해 하나만 선언하여 보다 효율적인 메모리 관리를 할 수 있었다. 터치 제스처를 통해 능동적으로 반응하는 레이아웃을 픽셀 단위로 섬세하게 깎아 나가는 것은 하나의 예술 작품을 만드는 기분이었다.


*) 의존성 주입 : class 문법을 사용하는 객체지향 프로그래밍에서, class에 소속되지 않은 정적인 전역 데이터를 남발하는 것은 성능 측면에서나 보안 측면에서나 바람직하지 못한 방향이다. 하지만 어느 객체에서도 접근할 수 있는 전역 객체가 필요할 때가 있다. 이런 객체를 전역 데이터가 아닌 지역 데이터로 제공하는 방법을 의존성 주입이라 한다.


 지금 나는 확실히 멋모르는 햇병아리 주니어의 시절을 지났다고 여긴다. 확실히 코드를 보면서 추구하는 방향이 더 깊어졌다고 할 수 있다. 내 코드가 깔끔해지니까 남의 코드를 읽는 실력도 크게 향상된 것 같다. 하지만 아직 나에겐 더욱 배워야 할 것이 많이 남았다. 시니어를 향해 가는 머나먼 항해에서 잠깐의 보급지를 지났다고 봐야 할까.



Artist 'KimJinnyeong' with Gallery MIND

                    

작가의 이전글 클린 코드
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari