본문 바로가기

서평/코딩, 개발

성공으로 이끄는 팀 개발 실천 기술

반응형

오늘도 사람이 꽉찬 지옥철에 몸을 맡기고 회사로 출근한다.

프로그램을 업데이트 해야하는 바쁜 일정이 있어서 그것을 어떻게 구현할지 고민하다가 회사에 도착했다.

자리에 앉아 컴퓨터를 켜고 이메일을 열어봤더니 읽지 않은 메일들이 화면을 가득 채우고있다.

-

[긴급] 당장 봐야하는 이메일

[긴급!!] 당장 안보면 후회하는 이메일

[정말긴급!!] 버그 발생

경력공채 일정이 도착했습니다 (평균연봉 ... )

[긴급긴급] 이거 하는 방법좀 알려주세요

...

-

광고 메일을 제외하고는 '긴급'이라는 키워드가 안붙은 이메일을 찾기가 힘들다.

모든 메일이 긴급하다고 하니까 어떤 것을 먼저 처리해야 할지도 모르겠다.

사실 메일을 열어서 확인해보면 나랑 관련없는 메일들이 대부분이다.

이런 사소한 내용조차 왜 나에게 메일을 보냈는지 모르겠다.

오늘 당장 업데이트해야하는 프로그램들이 있으나, 급하다는 메일을 처리하지 않으면

난리칠게 뻔하고, 테스트중 발견했다는 버그를 먼저 처리하지 않으면 개발을 진행할수도 없으니

발생했다는 버그를 먼저 해결해야겠다.

분명 이전에 해결했던 버그가 또다시 발생하고 있다.

하지만 그 버그를 해결했던 시기를 알 수가 없어서 희미한 기억을 뒤집으며

그 버그를 수정했던 부분을 찾는데 오전 시간이 지나가버렸다.

분명 버그를 수정하고 주석까지 달았던 부분인데 누가 그 부분을 삭제해버린 것이다.

'어떤 놈이 이렇게했어!'라고 화내기에는 시간이 부족하다. 빨리 이 코드를 다시 수정하고

또 다른 버그를 해결해야 하기 떄문이다.

또 다른 버그는 개발을 진행하는 컴퓨터에서는 발생하지 않던 버그가 다른 컴퓨터에선 발생하고 있다.

이 컴퓨터와 저 컴퓨터에는 무슨 차이가 있는걸까? 그렇게 한참을 찾아보다가

겨우 문제를 해결하고나니 벌써 저녁9시가 되어버렸다. 오늘 해야할 개발은 손도 못대고

집에 가서 잠만자고 바로 출근해야겠다.

-다음날

겨우 두가지 버그를 수정하고 아침에 출근했더니 또 다른 문제가 발견했다.

다른 개발자가 그 버그수정이 안된 버전을 베이스로 새로운 버전을 만들어버린 것이다.

새로운 버전을 개발하는데 걸린 시간은 약 1주일,

내가 수정한 이 코드와 그 새로운 버전을 통합하면 아무 문제가 없을까?

역시는 역시, 이 과정에서 또 큰 문제가 발생해버렸다.

내가 업데이트하는 프로그램을 진행하기 위해서는 이 문제를 다시 해결해야한다.

프로그램을 하나하나 뜯어보니 구버전과 신버전의 데이터베이스 스키마의 차이로 인해 문제가 발생하고 있었다.

겨우 이 문제를 해결했지만 시간은 벌써 막차가 끊긴 시간이다.

오늘은 집도 못가고 회사에서 잠시 눈붙혔다가 내일 나의 업데이트를 진행해야 할 것 같다.

그러나, 다음날 새로운 문제가 발생하고

나는 일주일동안 내가 원래 해야할 업무에 손도 대지 못했다.

이대로라면 평생 이렇게 일할지도 모르겠다는 생각이 들었다.

© plqml, 출처 Unsplash

이런 이야기가 남 이야기가 아닌거 같다거나,

이런 환경은 말도 안된다고 생각하는 무경력자들이 있을 것이다.

하지만 현실에는 저런 회사들이 존재한다.

모든 것을 g-mail로 처리하는 회사

메일에 나랑 상관없는 내용들도 일단 보내고 보는 직원들 ( 또, 메일앞에 '긴급'을 붙이는 )

그리고 합이 안맞아 시너지가 나긴 커녕 서로를 방해하는듯한 기분이 드는 팀

이런 상황에서 일한다면 일의 난이도를 떠나서 엄청난 스트레스를 받게 될 것이다.

그렇게 엄청난 스트레스를 받기 싫다면 똑똑하게 일해야 한다.

어떻게 팀이 똑똑하게 일할 수 있을까?

수많은 회사들이 더 효율적인 업무를 위해 엄청난 시간을 투자해서 개발한 도구들이 있다.

그 도구들을 팀에 도입한다면 팀과 회사는 똑똑하게 일할 수 있는 환경이 설정된다.

적은 시간 그 도구들을 공부하는데 투자한다면,

프로젝트를 진행하는데 수 많은 시간을 절약할 수 있을 것이다.

프로젝트에서 어떤 도구들을 사용하면 좋을까?

간단하게 이러한 도구의 종류들과 그 도구들을 소개하고 글을 마무리하려고 한다.

자세한 것은 '성공으로 이끄는 팀 개발 실천 기술'이라는 책을 읽어보는 것을 추천한다.

효율적인 팀을 위한 도구의 종류

1. 버전 관리 시스템 - '관리할 수 있는 모든 것을 버전 관리 시스템으로 관리해야 한다'

2. DB 마이그레이션 Tool

3. 티켓 관리 시스템

4. 배포 자동화 시스템

- 부트스트랩핑

- 컨피규레이션

-오케스트레이션

5. 테스트 자동화 시스템

마무리 - 책에서 소개한 도구들

Source Tree : GUI용 버전관리 시스템 ( https://www.sourcetreeapp.com/ )

GitHub : Web용 프로젝트관리 시스템 ( https://github.com/ )

Trac : Web용 버전관리, 버그추적 시스템 ( https://trac.edgewall.org/ )

South Django : DB 마이그레이션 Tool ( https://south.readthedocs.io/en/latest/ )

Redmine : 도입 장벽이 비교적 낮은 오픈소스 티켓 관리 시스템 ( https://www.redmine.org/ )

Mockito : DB와 연계된 테스트가 가능한 오픈소스 테스트 프레임 워크 ( https://site.mockito.org/ )

Vagrant : 가상화 소프트웨어를 고 관리하는 도구 ( https://www.vagrantup.com/ )

Chef : 원하는 환경을 구성하기 위해 서버나 미들웨어를 설정하는 도구 ( https://docs.chef.io/cookbooks/ )

Jenkis : 지속적 통합을 제공하는 툴 ( https://jenkins.io/ )

Selenium : 웹 어플리케이션 기능 테스트나 통합 테스트를 자동화하는 도구 ( https://www.selenium.dev/ )

 

 

 

성공으로 이끄는 팀 개발 실천 기술 - 교보문고

[성공으로 이끄는 팀 개발 실천 기술]은 효율적 현업을 위한 도구와 방법론을 소개한 책이다. 지속적인 개발을 실현하는 최신 개발 흐름을 살피고, 효율적 프로젝트를 지탱하기 위한 노하우를 ��

www.kyobobook.co.kr

 

반응형