[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/개발상식

개발자의 기본

inu 2020. 3. 15. 12:15
반응형

개발이란

기획, 디자인, 개발

  • 기획자 : 세상에 이런 제품이 있으면 좋겠다. 우리 제품에 이런 기능이 있으면 좋겠다.
  • 디자이너 : 제품 또는 기능을 눈에 보이게 만들자.
  • 개발자 : 제품 또는 기능을 실제로 사용할 수 있게 만들어보자.

다양한 개발자

  • 서버 개발자(백 엔드) : 사용자의 정보를 서버로 넘겨줌으로써, 사용을 멈추고 다양한 디바이스에서 다시 사용을 시작하더라도 기존의 정보들을 불러와 활용할 수 있다. 그리고 서버에서 사용자들의 정보를 불러오고 송출함으로써, 사용자들간의 정보를 공유할 수도 있다. 이러한 서버를 개발한다.
  • 클라이언트 개발자(프론트 엔드) : GUI(Graphic User Interface), 사용자가 실질적으로 보게되는 인터페이스 부분을 개발한다. 안드로이드, IOS, 웹 세 가지로 나누어진다고 볼 수 있다. 물론 모두 다루는 통합 개발자도 존재한다. (cf. 클라이언트 개발자는 서버 개발자와 의사소통을 가장 많이 한다. 클라이언트는 서버에게 정보를 보내 서버는 이를 저장하고, 서버는 저장한 정보를 클라이언트에게 보내 클라이언트는 이를 다뤄야하기 때문이다.)
  • 머신 러닝 개발자 : 유튜브, 넷플릭스의 영상추천 알고리즘과 같이 단순한 알고리즘으로는 만들 수 없는 기술을 머신러닝을 이용하여 개발한다.
  • 게임 개발자 : 클라이언트 개발자와 비슷하지만, 게임 개발자는 좀 더 특수하여 따로 분류된다.
  • 임베디드 개발자 : 다양한 소형기기(하드웨어)들에 들어가는 특수한 소프트웨어를 개발한다.
  • 보안 개발자 : 보안에 관련된 개발을 한다.

개발 프로세스

  • 다양한 인풋 : 신기능, 버그수정, 신제품 등
  • 워터폴 : 다양한 인풋(필요) -> 기획 -> 개발(서버) -> 개발(클라이언트) -> 검수(QA) -> 개발(수정) -> 배포
  • 애자일 : 워터폴방식의 빠른 순환버전. 워터폴이 완벽을 추구한다면, 애자일은 속도를 추구한다. 빠르게 변화하고 있는 세상에 적절한 방식이라고 할 수 있다.

개발자의 의사소통

개발자와의 의사소통이 중요한 이유

  • 의사소통이 곧 모두의 시간을 아끼는 방법이기 때문 : 검색어탭을 클릭할 때 검색창이 열려야 하는데, 버튼을 눌러 검색창을 눌리는 방식으로 잘못 개발한다면? QA, 기획자, 개발자 등 다양한 직군들의 사람들의 시간이 낭비된다.
  • 면접의 포인트 : 개인의 효율보다는 팀의 효율이 중요하다. (팀에서 의사소통이 잘 이루어지는 사람을 원한다.)

무엇이 의사소통을 어렵게 만들까?

  • 전문용어의 차이 : 개발자들이 사용하는 전문용어는 타 직군이 이해하기 어렵다.
  • 관점의 차이 : 시간투자에 대한 해당 기능,디자인의 가치 (밑줄 하나하나를 디자이너,기획자는 중요하게 여길 수 있지만 개발자는 그렇지 않을 수 있다.)

의사소통을 원활하게 하는 방법

  • 전문용어를 최대한 피한다.
  • 전문용어 사용이 필수적일 경우, 설명한다.
  • 비유해서 설명하기 보다는 좀 더 직관적으로 이야기한다.
  • 자기방어를 위해 숨기지말고, 솔직하게 말한다.

개발자와의 의사소통

서버, 백 엔드

  • 서버란 특수한 장치가 아니라, 저장소 역할을 하는 장치를 의미한다. 단순한 컴퓨터가 될 수도 있다.
  • 단순한 컴퓨터를 사용할 경우, 클라이언트가 많아지고 적어짐에 따라 서버에 요구하는 성능이 달라지므로 장치구성이 어려워질 수 있다.
  • 따라서 일정 요금을 내면, 해당 요금에 해당하는 클라우드 컴퓨터를 제공하는 서비스를 사용한다. 그 예로 AWS, Azure가 있다.

개발언어

  • C언어 : 가장 고전적인 언어로, 효율이 매우 중요한 작업에서 주로 활용된다.
  • 안드로이드 개발 : 자바, 코틀린 활용
  • iOS 개발 : Swift 활용
  • 서버 : 파이썬, 자바스크립트 등 활용

소스코드

  • 개발자가 개발언어를 활용하여 적어놓은 코드
  • Git : 버전에 따른 소스코드를 관리해주는 툴
  • Github : 소스코드를 원격으로 저장해주는 저장소

운영체제

  • 하드웨어와 소프트웨어가 의사소통을 할 때 중계자 역할을 해주는 것
  • 안드로이드, iOS
  • 윈도우, Unix, 우분투

데이터

  • 엑셀파일과 같이 파일의 정보를 저장하는 것
  • 데이터베이스 : 이러한 데이터를 저장하는 것. MySQL, Oracle 등이 있다.
  • 빅데이터 : 매우 매우 많은 데이터

개발 관련 용어

  • 프레임 워크 : 개발을 할 때 미리 어느정도의 기능을 준비하여 제공하는 툴
  • 라이브러리 : 프레임 워크가 제공하지 않는 기능을 외부에서 불러올 수 있도록 마련된 기능의 뭉치
  • 디버깅 : 오류를 추적하는 과정
  • 레거시 : 오래전에 작성된 소스코드 (오래전에 작성되었기에, 지금과는 맞지 않다.)
  • 리팩토링 : 레거시 코드를 현재 트렌드와 조직의 스타일에 맞게 수정하는 것.
  • TDD (Test Driven Development) : 테스트를 기반으로 개발을 진행하는 것. 개발 후에 테스트를 하는 것이 아니라, 테스트를 하면서 개발을 진행한다.
  • API (Aplication Programming Interface) : 응용프로그램에서 데이터를 주고 받기 위한 규격
  • JSON : 데이터를 주고받을 때 쓰이는 형식 중 하나. (그 외에도 대표적으로 XML이 있다.)

안드로이드 관련 용어

  • Activity : 앱의 화면 하나하나
  • Dialog : 팝업창
  • 애뮬레이터 : 가상 기기 환경
  • 안드로이드 스튜디오 : 안드로이드 개발용 프레임워크

웹 관련 용어

  • 트래픽 : 서버가 클라이언트로부터 정보를 요청하는 횟수
  • html : 웹페이지의 전체적인 구조를 구성
  • css : 웹페이지를 치장하는 데에 활용
  • bootstrap : css의 테마
  • 반응형 : RWD, Responsive Web Design. 사용자의 환경(화면크기)에 반응하여 구성이 바뀌는 것.
반응형

'🛠 기타 > 개발상식' 카테고리의 다른 글

Data Storage  (0) 2020.03.28
프론트엔드와 백엔드의 기본  (2) 2020.03.15
네트워크의 기본  (0) 2020.03.13
OS(운영체제)의 기본  (0) 2020.03.12
다양한 컬러코드를 색감별로 확인할 수 있는 사이트  (0) 2020.01.14