프로그래밍 개관 - 2

김태완·2024년 8월 14일

개발에 사용되는 방식

1. 폭포수 방식 (Waterfall Model)

  • 폭포수 방식은 개발에서 전통적으로 사용되어온 선형적이고 순차적인 접근 방식이다.
  • 각 단계가 완료되어야 차례대로 다음 단계로 넘어갈 수 있는 구조
  • 따라서 프로젝트가 복잡해질 경우 각 단계가 한번에 완벽하게 끝나기 어려우며, 중간중간 수정사항이 발생한다면 반영하기 어려운 경우가 많다. 특히, 요구사항이 명확하지 않거나 수정 소요가 높은 프로젝트에는 부적합하다.
  • 복잡하지 않은 프로젝트라면 폭포수 방식이 유리.

2. 에자일 방식 (Agile Methodology)

  • 에자일 방식은 소프트웨어 개발에서 점진적이고 반복적인 접근 방식을 강조하는 방식이다.
  • 전체 프로젝트를 짧은 주기(스프린트)로 나누어서 각 주기마다 결과물을 미리 확인하고, 중간중간 사용하면서 발전시킨다.
  • 따라서 중간에 변경된 요구사항에 대해서 유연하게 대응이 가능하며, 지속적인 피드백을 통해 프로젝트를 조정할 수 있다.
  • 이에따라 결과물의 품질이 향상되고, 위험요소를 조기에 발견할 수 있으나, 프로젝트가 복잡해질 가능성이 높으며, 협업이 원활하지 않은 경우 혼란이 발생할 수 있다.

개발 관련 Tool

프로젝트 관리 및 이슈 추적 도구

  • 소프트웨어 개발 팀이 작업을 계획하고 관리하며 협업할 수 있도록 도와준다.
  • 에자일 프로젝트 관리에 특히 유용하며, 다양한 보고서와 대시보드를 통해 프로젝트 상태를 시각적으로 파악할 수 있다.
  • 이슈가 발생하면 해당 이슈를 추적하며 팀은 스프린트 기간동안 완료해야 할 작업을 계획하고 지속적으로 추적할 수 있다.
  • Jira, Trello, Asana 등이 있다.

버전 관리(형상관리) 시스템

  • Git은 개발에서 사용하는 버전 관리 시스템이다. 개발자가 작성한 코드의 이력을 관리하고, 여러 명의 개발자가 동시에 작업할 수 있도록 협업을 지원한다.
  • 특히, 분산형 버전 관리로 중앙 서버에 의존하지않고 각 로컬에 복사본을 가지고 작업할 수 있다. 이와 연장선상에서 Git은 브랜치를 사용해 독립적인 작업 흐름을 관리할 수 있다. 공통된 코드에서 각 버전별로 코드들이 다르게 관리될때 브랜치(가지)가 활용된다.
  • 커밋(Commit)을 통해서 변경사항, 수정내역 등이 기록된다. 그리고 병합(merge) 등의 기능을 통해 코드의 변경 사항을 체계적으로 관리할 수 있다.

통합 개발 환경(IDE)

  • IDE(Integrated Development Environment)는 통합 개발 환경이다.

  • 개발자들이 코딩할 때 도움이 되는 기능을 모아둔 프로그램이다. 코드 작성부터 디버깅, 컴파일, 배포까지 모든 단계를 지원하여 개발 생산성을 높여준다.

  • 코드 편집기, 컴파일러/인터프리터, 디버거, 프로젝트 관리 도구, 버전 관리 시스템, 플러그인/확장 기능, 빌드 자동화 도구 등으로 구성된다.

  • 대표적인 IDE로는 Visual Studio Code, Intellij IDEA, Eclipse, PyCharm 등이 있고, 특별하게 뛰어나다는 느낌 없이 고만고만 했던 것 같다.

    // 컴파일러: 프로그래밍 언어를 컴퓨터 언어(머신코드)로 바꾸어 주는 것
    // 인터프리터: 개발자 컴퓨터에서 프로그래밍 언어를 사용자 컴퓨터로 넘겨서 사용자 컴퓨터에서 번역한다. 컴파일러에 비해 느리고 코드가 유출될 위험성 있지만, 용량이 작다.

개발 트렌드를 읽는 방법

프로그래밍에서는 라이브러리나 프레임워크, 심지어 프로그래밍 언어까지 선택해야 할 것이 많다. 너무 많다. 그리고 이 선택들은 되돌리기 어려울 뿐 아니라, 선택지가 많고 빠르게 바뀌어서 결정하기 쉽지 않다. 올바른 선택을 위해서는 트렌드를 읽고 나의 목적에 맞는지 등 스스로 판단할 수 있는 능력을 길러야 합니다.

1. 활발한 기술

  • 좋은 기술은 자연스레 많은 사람들이 사용한다. 많은 사람들이 사용하면 커뮤니티가 활발해 지고, 좋은 토론과 자료들이 많이 만들어 진다. 좋은 토론과 자료를 통해, 더 많은 사람들이 기술을 선택하게 된다.

  • 활발한 기술은 좋은 자료를 쉽게 찾을 수 있고, 커뮤니티에서도 빠른 답변을 기대할 수 있기 때문에 빠르게 배우고 빠르게 문제를 해결할 수 있다. 혹은, 이미 나와 같은 일을 겪은 사람들의 질문과 답변도 많이 발견할 수 있다.

2. 인정받는 기술

  • 여러 회사들이 선택한 기술은 주로 뛰어난 개발자들의 많은 고민과 상의 끝에 내려진 결정이다. 이유가 있다는 것이다. 물론 규모나 목적에 따라 더 적합한 기술이 달라질 수 있겠지만, 참고하면 나쁠 것은 없다.

  • 관련하여 StackShare를 통해 유명한 회사들이 사용하는 기술을 알 수 있다. 하나의 회사에서 사용하는 기술들을 모아서 “기술 스택(Stack)”이라고 표현하기도 한다.

  • 기업에서 직접 만들거나 관리하는 기술도 있습니다. 예를 들어 React는 페이스북에서, AngularJS는 구글에서 관리를 하고 있다. Java는 오라클의 소유이고, Swift는 애플에서, Go는 구글에서 만든 언어이다.

  • 든든한 지원군이 있으면 기술이 안정적으로 성장할 가능성이 높다. 지속적인 업데이트와 기술 지원은 점점 더 많은 사용자를 끌어당긴다.

3. 유망한 기술

  • 트렌드가 바뀌면, 개발자의 실력과 관계 없이 입지가 늘어날 수도, 줄어들 수도 있다. 그래서 기술을 선택할 때는 이 점을 고려해야 한다.

  • 단순히 프로그래밍 분야의 트렌드만 파악할 것이 아니라, IT 혹은 산업 전반에 대한 이해를 가지고 판단해야 더 정확하게 판단할 수 있다. IT 산업은 워낙 변화의 속도가 빠르기 때문에, 늘 귀를 열어두어야 하는데, 가트너에서는 매년 10대 전략 기술 트렌드를 발표하니 참고하자.

profile
중고

0개의 댓글