본문 바로가기

etc

퇴직 - 1년 8개월간의 업무(1)

오늘이 과거의 기억을 가장 잘 기억하는 날일 것이라고 문득 생각이 들었다. 그래서 오늘부터 '1년 8개월간 내가 뭘 했을까' 정리하는 시간을 가져볼 것이다. 각설하고 오늘은 가장 처음 한 프로젝트에 대해서 작성해 보았다.

 

첫 프로젝트 - 비용정산

01234

이 프로젝트에 대해서 간단히 설명하자면, 회사 법인카드를 사용하고 회사의 관리자 혹은 경영관리 지원팀 등에게 사용한것에 대한 내용 증명을 보내는 것이다. 규모가 크지 않았고, 스프린트가 진행되는 중간에 들어와서 회사에서 새로운 사람이 들어오면 맡기려고 했던 프로젝트라서 들어온 첫 날 오후에 이 프로젝트를 배정받았었다. 모든것이 처음이어서 어안이 벙벙한 와중에 프로젝트를 받게 된 것이다. 3년차라고 해도 하나하나 파악하기도 벅차서 계속 물어봐야 하는데, 코로나로 인해 1주일간 재택근무까지 들어가게 되었다. 그렇게 첫 프로젝트는 시작부터 헬 난이도의 가파른 비탈길로 빠져버렸다.

 

그래도 재택하는 일주일은 어찌저찌 무사히 지나가고 회사에 출근하게 되어서 다시 채워진 옆자리의 윌리에게 이것저것 많이 물어볼 수 있었다. 그러다 너무 많이 물어본걸까 윌리는 나에게 말했다. '피터, 이것도 아직 몰라요?' . 그리고 나는 이렇게 대답할 수 밖에 없었다.

윌리... 저 들어온지 일주일 밖에 안됐어요...

후일담으로 그때 내가 친화력이 굉장히 좋아서 들어온지 꽤나 시간이 지난 줄 알았다고 한다. 1년 8개월 중 유일하게 억울한 순간으로 아직도 회자된다.

 

기술적 회고

비용정산 메뉴를 탭하고 들어가면 날짜별로 제출한 비용이 나온다. 페이징 처리 된 해당 데이터를 불러올 때 마다, 아래와 같은 프로세스를 거쳐서 날짜별로 비용정산을 보여주었다.

  1. 모든 데이터에 대하여 날짜들을 추출한다.
  2. 추출한 날짜 데이터에 대하여 map으로 전체탐색을 하고, 날짜를 나타내주는 viewHolder를 추가해준다.
  3. 그리고 불러온 모든 비용정산 데이터에 대하여 전체탐색을 한다. 이때 비용정산 데이터의 날짜가 추출된 날짜의 데이터가 서로 일치하면 비용정산을 나타내주는 viewHolder를 추가해준다.

그리고 이러한 과정들을 조금 더 개선하고자 하면 아래와 같이 할 것 같다.

/* 
아래에 있는 데이터 Type 중 일부는 존재하지 않을 수 있다.
List<ExpenseData>로 해서 불가변적으로 하고 싶지만, paging처리되어 있어서
나중에 로딩되어서 데이터가 들어올것을 고려하여 MutableList로 만들어준다.
*/

// 해시맵으로 날짜 별 데이터 관리
val expenseHashMap = hashMapOf<String, MutableList<ExpenseData>>() 

expenses.map { expenseData ->
	// 해시맵에 해당 데이터에 대한 테이블이 존재하면 mutableList에 add해주기
    expenseHashMap[expenseData.expense_date]?.add(expenseData) ?: run {
    	// 테이블에 존재하지 않은 날짜면 새롭게 테이블을 만들어 put 해주기
        expenseHashMap.put(expenseData.expense_date, mutableListOf(expenseData))
    }
}

이렇게 하면 훨씬 더 간단하게 날짜별로 데이터도 추출하고, viewHolder로 만들기도 수월할 것 이다. 무엇보다 시간복잡도도 많이 줄어들게 된다.

 

정리

프로젝트 수행기간은 한 달정도로 짧았지만, 참 굵었던 프로젝트였다. 사수가 없었던 이전회사를 나와 매니저라는 직급이지만 어떻게 보면 처음으로 생긴 사수라는 존재로 인해 단기간에 급성장할 수 있었다. 여러 아쉬움이 남던 첫 프로젝트였지만, 나에게 충분한 양분이 되어주었다.

'etc' 카테고리의 다른 글

스타일쉐어 감사합니다.  (0) 2021.12.07
라인코딩테스트를 보고나서....  (0) 2021.03.22
Startup Coding Festival 2021 - scofe 2021  (0) 2021.03.03