코딩을 왜 배워야하고 왜 알아야하는 것인가
코딩은 컴퓨터에게 어떤 동작을 하도록 명령을 내리는 것.
컴퓨터는 이진수(0과 1)만 이해할 수 있기 때문에
코딩에서 정해진 규칙에 맞게 명령을 작성하면 이진수로 번역되어
컴퓨터가 이해할 수 있게되는 것이다.
소프트웨어 ? 물리적으로 만지지 못하는 프로그램
컴퓨터 뿐만아니라 스마트폰, 태블릿, TV, 청소기같은 가전제품에도 소프트웨어가 들어간다.
코딩으로 인해 세상이 많이 변하고 있다.
인공지능, 클라우드, 메타버스, 블록체인, IOT 들도 모두 소프트웨어 기술인데
우리 다음세대도 소프트웨어 기술이 이끌어나갈 거라는 전망이 지배적이다.
취업시장도 변하고 있는데 개발자 수요가 폭발적으로 성장하고 있다.
코딩이 열풍이 된 이유
1. 기술의 발전
기술의 발전으로 스마트폰이나 노트북에서도 복잡한 계산을 할 수 있다.
컴퓨터는 덧셈, 뺄셈 뿐만아니라 다양한 일들을 할 수 있다.
2. 컴퓨터 보급 활성화
코딩을 활용할 수 있는 컴퓨터가 많아졌다.
3. 코딩 접근성 좋아짐
배우기 쉬운 강력한 언어 등장
다양한 라이브러리와 프레임워크가 발전하면서
웬만한건 다 가져다가 쓸 수 있다.
코딩하다가 막혔을 때 도움을 청할 수 있는 곳이 많아졌는데,
이것이 코딩의 진입장벽을 많이 낮췄다.
여기에 코로나 시대를 거치면서 소프트웨어 산업의 발전이 가속화된 것도 한 몫했다.
프로그래밍 혁명에 참여하는 방법
트렌드 이해하기
4차 산업혁명이라는 큰 변화가 생기면서
흐름을 놓치지않고 따라갈수 있게 코딩을 모르더라도 이해하고 있어야 한다.
코딩을 알면 앞으로 생길 변화에도 잘 대처하고 이해할 수 있을 것이다.
직접 만들어보기
최근에 코딩의 진입 장벽이 많이 낮아졌고 또 활용도는 높아졌다.
포트폴리오 사이트 제작, 실무에서 반복적인 업무 자동화, 데이터 분석 등
좋은 아이디어나 재밌는 아이디어로 토이 프로젝트를 만드는 것도 유행이다.
그렇게 사이드 프로젝트가 사업으로 발전하거나 팔리기도 한다.
직접 개발자 되기
꾸준히 공부해서 개발자 커리어 쌓아보는 것도 좋다.
프로그래밍의 큰 그림을 보기 위해서 두가지가 필요하다.
- 동작원리
- 구현방법
클라이언트와 서버의 구조를 예를 들면
클라이언트는 음식을 주문하는 손님이고, 서버는 음식을 제공하고 서빙해주는 역할이다.
클라이언트에게 정보나 서비스를 제공하는 컴퓨터 - 서버(Server)
하나의 서비스가 크게 클라이언트 쪽 코드와 서버 쪽 코드로 나뉜다.
가장 보편적으로 클라이언트와 서버는 웹사이트 모바일 앱 게임 데이터사이언스 등 다양한 분야에서 두루 사용되는 구조이다.
웹 개발 기준으로 클라이언트는 Chrome이나 Safari 같은 웹 브라우저이다.
브라우저가 우리에게 화면을 보여주기 위해서는 HTML, CSS, JavaScript 코드가 필요하다.
HTML, CSS, JavaScript 코드가 하는 역할은 아래와 같다.
- HTML : 이미지, 글자, 버튼 등이 어디에 들어갈지 정해준다.
- CSS : 이미지, 글자, 버튼 등의 요소에 크기나 색깔 같은 스타일을 입혀준다.
- JavaScript : 유저 동작에 따른 사이트의 반응을 정해준다.
웹사이트를 보여주기 위해 필요한 코드들은 서버에서 온다.
서버도 컴퓨터이다. 구글이 유튜브를 위해 항상 켜놓는 서버컴퓨터가 있다.
인터넷 통신으로 클라이언트와 서버가 소통하면서 웹세상이 돌아간다.
클라이언트가 서버로부터 사이트를 어떻게 받아내는지
브라우저 주소창에 주소를 입력한다.
입력한 주소를 DNS 인터넷 주소록 찾아본다.
DNS에서는 입력한 주소가 어떤 숫자들을 가리키고 있다.
IP주소가 서버 컴퓨터의 위치를 나타낸다.
IP주소를 알아내면 서버 컴퓨터에게 요청하고
클라이언트에게 코드들을 주면 브라우저가 해석해서 유저에게 보여준다.
서버에는 데이터베이스(DataBase)라는 저장소가 있다.
새 포스트를 올리면 이것들은 유저 모두가 공유하는 데이터베이스에 저장이 되고 다른 유저가 볼 수 있게 새 포스트를 모두 공유할 수 있다.
서버의 역할
- 브라우저로 웹사이트에 접속하려고 할 때 html코드 보내줌
- 음악 스트리밍 서비스를 구독하면 결제일에 맞춰 자동으로 결제를 실행
- 작성한 음식 리뷰를 배달 앱의 데이터베이스에 저장
- 내가 팔로우한 사람들의 게시물을 sns앱으로 보내줌
서버는 클라이언트에게 필요한 정보를 제공하거나, 데이터베이스에 저장하기도 하고, 필요에 따라서는 스스로 작업을 수행하기도 한다.
실제 개발할대도 작은단위로 나눠서 만든다
코딩 처음 배우는 내용
반복문 : 같은 동작을 원하는 만큼 반복
조건문 : 원하는 조건에 따라 코드를 실행
개발자들이 실제로 하는 일이 서비스작은 단위로 논리를 세우고 하나로 합치는것이다.
ex) 스포티파이 기능
회원가입은 어떤 서비스마다 다 쓰는데 처음부터 만든다면 효율적이지 않다 .
미리 만들어둔 코드들을 가져다가 쓴다면 매우 효율적일 것이고,
생각보다 빠르게 결과물을 만들 수 있을 것이다.
라이브러리와 프레임워크는 사람들이 쉽게 사용할 수 있도록 미리 만들어둔 코드들의 모음이다
라이브러리와 프레임워크에는 자주 사용되는 코드가 모여 있어서, 이를 활용하면 서비스를 쉽고 빠르게 만들 수 있다.
프로그래밍 공부 시작 전
프로그래밍이 어떻게 쓰이고 어떤 분야들이 있는지 공부 방향성을 잘 알수있을 것이다.
웹 개발, 모바일 앱 개발, 데이터 사이언스, 게임, 블로체인, iot, 임베디드 시스템 등 다양하다.
각 분야에서 어떤 일을 하고 어떤 기술을 쓰고 어떤 역할들이 있는지 알아볼 것
웹 개발 분야
수요가 가장 많은 분야는 웹 개발이다.
웹 사이트만큼 빠르게 많은 사람들에게 서비스를 제공할수있는 수단은 없다.
한번 만들면 컴퓨터에서도 볼수있고 모바일에서 볼수있다.
그러다보니 대표적인 분야이다.
프론트엔드
프론트엔드는 사용자에게 보여지는 화면을 그려주는 것이고,
HTML, CSS, JavaScript 코드들로 웬만한 화면을 구현할 수 있다.
페이지가 복잡해질수록 구현이 어려워지고,
지저분한 코드가 쌓이면서 작업하기 어려운 코드가 되기 시작한다.
효율적으로 개발하고 여러사람들이 더 효과적으로
코드를 구조화 관리할 수 있는 방식을 사용한다.
라이브러리, 프레임워크가 다양한데,
React, Angular, Vue 가 대표적이다.
이중에서 리액트를 가장 많이 쓴다.
백엔드
백엔드는 뒤에 숨어있는 유저들에게 안보이는 부분을 담당한다.
서버 역할, 데이터베이스, api를 통해
클라이언트와 서로 소통할 수 있게해주는 것이다.
백엔트개발자가 API를 만들면 클라이언트와 서버가 소통할 수 있다.
클라이언트가 필요한 것을 서버에 요청할 수 있다.
백엔드 개발자는 API 개발과 데이터베이스 관리를 할 수 있어야 한다.
API, Java, Python, Kotiln, PHP, Ruby,
자바스크립트도 node.js 를 통해 백엔드를 개발할 수 있다.
데이터베이스는 SQL과 NoSQL로 나뉜다.
SQL
NoSQL
SQL은 널리 쓰고있고 NoSQL도 많이 쓰고 있다.
편하게 세팅하고 쓰려면 mongoDB NoSQL 데이터베이스를 공부하고,
제대로 백엔드 배우려면 SQL 먼저 배우고 NoSQL 추가 공부하는 것이 좋다.
모바일 개발 분야
앱을 잘 만들면 사용자에게 깔끔한 경험 제공할 수 있다.
앱이 있으면 홈 화면에 아이콘도 생기고 푸시알림도 생기기 때문에
유저들이 더 꾸준히 쓸 수 잇도록 유도하는 이점이 잇다.
웹 개발과 개념은 동일하다.
스마트폰에 있는 앱이 클라이언트 역할을 한다.
웹 개발과 크게 다를게없다.
모바일은 아이폰 앱과 안드로이드 앱을 각각 따로 만들어야한다.
각각 Swift, Kotlin 언어를 사용하는데, 두가지 앱을 따로 만드는 부분이 힘들다.
그래서 기업에서도 비용적으로도 매우 불리하다.
이를 해결하기 위해 크로스 플랫폼 모바일개발 솔루션들이 나왔다.
리액트를 발전하여 나온게 React Native이다.
페이스북에서 나온 기술이다.
구글에서 나온 기술은 Flutter 이고, Dart라는 언어를 써서 개발한다.
Swift와 Kotlin
React Native와 Flutter
두 기술은 현재 나의 상황과 목표에 따라 결정하면 된다.
필요한 것만 배워서 빠르게 모바일 개발을 하고 싶다면 Dart와 Flutter,
자바스크립트와 React를 배울 계획이 있다면 React Native를 공부하는 것이 좋다.
데이터 분야
90년대말 인터넷이 널리 퍼지게 되면서 웹 사이트 하나만 만들어두면 전세게 누구든지 들어가서 쓸 수 있게 되었다.
그렇게 웹 상에서 다양한 일들이 일어났고, 모두 데이터베이스 기록된다.
페이스북, 유튜브, 인스타그램이 생기면서 사진이나 영상, 글을 유저들이 직접 올리게 되었고, 더 많은 데이터가 쌓이게 되었다.
2000년대 말에는 스마트폰이 생기면서 말도 안 되는 속도로 데이터가 쌓였다.
아직까지 인간처럼 사고하거나 행동하지 못하지만,
음악을 잘 알아맞추는 AI, 광고추천을 잘하는 AI, 사람발음을 잘 받아적는 AI, 바둑을 잘두는 AI, 운전을 잘하는 AI 등
타겟을 좁게 잡으니까 인간보다 훨씬 뛰어난 퍼포먼스를 내는 사례가 계속 나오게 됐다.
다양한 방면에서 데이터를 활용하기 시작
데이터 엔지니어링
데이터 애널리스트
데이터 사이언티스트
머신러닝 엔지니어
머시러닝 리서처
이 외에 다양한 분야들
게임
컴퓨터게임, 모바일게임, 콘솔게임 다양하다.
게임을 개발하기 위해서는 unity, unreal엔진 기술을 사용한다.
블록체인
가상화폐, NFT, DeFi
탈중앙화된 시스템을 개발한다.
클라이언트는 동일하고, 데이터베이스 백엔드가 탈중앙화가 된 형태이다.
블록체인 엔지니어는 블록체인 위에 올라갈 앱을 만든다.
IOT
데이터를 공유하는 사물인터넷 기술이다.
여기서도 임베디드 시스템이 필요하다.
시스템 프로그래밍
운영체제를 개발하고 시스템 눈에 보이지않는 내부 프로그램을 만든다.
가상현실, 증강현실
비개발자 코딩어디에 쓸까
창업 또는 편리한 웹사이트나 어플
의사 결정할때 데이터 분석을 뒷받침하고 데이터 기반으로 의사결정
사무직중에 매일 또는 매주 반복적인 업무
더 퀄리티 높은 코드 작성을 해야하는 이유
예상치못한 상황으로 문제가 발생하지 않도록 해야한다.
코드잇에서 수강하며 학습한 내용을 정리한 글입니다.