지난 포스팅에서 개발자에게 필요한 기술 5가지를 열거했다. 5가지로 끝이구나~라고 생각했다면 아쉽지만 필요한 기술은 더 있다. 이번 포스팅에서 나머지 기술들에 대해 알아본다. 본 포스팅은 "커리어 스킬"을 참고하였습니다.
1. 프레임워크와 스택
프레임워크는 개발에 사용하는 라이브러리를 한 장바구니에 담아둔 것이라고 생각하면 된다. 개발을 하다 보면 특정한 기능을 하는 코드가 필요할 때가 있다. 그럴 때 기초적인 부분부터 하나씩 모두 손을 대면 개발 시간이 너무 길어질 것이다. 그런 부분을 미리 구현해 둔 것이 바로 라이브러리이고 그런 라이브러리가 모여있는 것이 프레임워크이다. 예를 들어 C#개발에서는. NET 프레임워크를 사용한다. 여기에는 이미지 작업용 코드가 포함되어 있어 관련된 프로그램 작성 시에 굉장히 도움이 된다. 스택이라는 것은 하나의 애플리케이션을 완성할 때 필요한 기술들의 모음이다. 예시로 MEAN 스택은 MongoDB, Express.js, AngularJs, Node.js 모음이다. 여기서 MongoDB는 데이터베이스 담당, Express.js는 Node.js의 프레임워크이다. AngularJS는 자바스크립트의 프레임워크이고 Node.js는 웹 기반 애플리케이션 개발에 사용되는 런타임 환경이다. 모든 개념을 상세히 이해할 필요는 없지만 어떤 것인지는 알아두는 것이 좋다. 스택을 알면 애플리케이션 개발의 처음부터 끝까지에 필요한 기술을 안다는 것이다. 이걸 잘 알게 되면 회사에서 적응하기에도 몹시 편할 것이다
2. 데이터베이스 관련
데이터베이스에도 종류가 있다. 관계형 데이터베이스와 문서 데이터베이스. 데이터베이스에 관련해서 알아두면 좋은 최소한의 지식은 다음과 같다. 우선 작동하는 방식을 아는 것이 중요하다. 또한 저장된 데이터를 얻기 위한 단순한 쿼리 수행 방법과 데이터를 넣고 변경하고 삭제하는 방법을 알면 좋다. 마지막으로 여러 테이블을 결합하는 방식도 아는 것이 좋다. 또한 자신이 사용하는 플랫폼과 프레임워크에서 어떻게 데이터를 가지고 오고 저장하는지 알아야 한다.
3. 소스 제어 시스템
대표적으로 내가 사용해본 소스 제어 시스템에는 git과 svn이 있다. 두 시스템 모두 여러 개발자들이 효율적으로 코드를 관리할 수 있도록 도움을 준다. 이런 시스템들이 만들어지기 전에는 USB에 코드를 담아 공유하기도 했다고 한다. git과 svn을 활용하면 코드를 누가, 언제, 어떤 부분을, 어떻게 고쳤는지 알 수 있다. 모든 이력이 남아있기 때문이다. 또한 서로 공유하기도 쉬워서 여러 사람이 함께 개발을 진행할 경우 거의 필수적인 시스템이라고 할 수 있다. 또한 git의 경우 branch라는 개념이 있어 가지치기하듯이 프로그램을 여러 방식으로 개발한 후 합치는 방법도 가능하다고 한다.
4. 빌드와 배포
프로그램을 만들고 나서 개발자는 소스 제어 시스템에 코드를 공유한다. 그러고 나면 모든 개발자는 이 코드를 테스트해볼 수 있다. 어디서? 모든 환경이 갖추어져 있는 곳에서만. 그렇다. 일반 사용자는 이 코드를 사용해 볼 수 없다. 이를 가능하게 해주는 것이 빌드와 배포이다. 빌드와 배포의 과정을 거치고 나면 일반 사용자도 프로그램에서 새로 만들어진 기능, 바뀐 기능들을 사용해 볼 수 있게 된다. 이러한 과정에 대해 기본적인 작동 방법을 아는 것도 큰 도움이 된다.
5. 테스트
예전에는 테스트 담당자가 존재하여 코드가 완성되면 테스트는 따로 진행해주는 시스템이었다고 한다. 하지만 요즘은 개발자가 개발 중에, 개발 후에 테스트를 진행한다. 테스트와 관련하여 알아두면 좋을 용어는 다음과 같다. 화이트박스 테스트, 블랙박스 테스트, 단위 테스트, 경계 조건, 테스트 자동화, 인수 테스트 등이다. 보통 개발 단계에서 단위 테스트라는 것을 계속해서 진행하는 것 같다. 한 단계 한 단계 개발을 진행해 가면서 단위별로 이 기능이 잘 돌아가는지 계속 테스트를 진행해 가면서 개발하기 때문이다. 또한 올바른 값을 확인하기 위해 경계 조건을 데이터로 대입하며 살펴본다. 인수 테스트는 가장 마지막 테스트라고 할 수 있다. 실제 사용할 고객들이나 의뢰한 고객이 살펴보며 기능을 확인하는 단계이다.
댓글