2023.10.07
에피소드 01. 개발자에 대한 오해 5가지!
에피소드 02. 어떤 언어부터 공부해야 할까?
에피소드 03. 새 언어를 쉽게 배우는 노하우?
에피소드 04. 언어 이름은 왜 그렇게 지었을까?
에피소드 05. C, C++, C#은 이름처럼 비슷할까?
프로그래밍은 어렵고 괴롭지만 모든 과정을 참고 만들어 낸 결과물에서 느끼는 성취감 때문에 우리는 프로그래밍을 계속한다.
시니어 개발자가 개발에 능숙한 이유는 암기력이 뛰어난게 아니라 개발 과정을 잘 이해하고 있어서 무엇이 필요한지, 또 어떻게 검색해야 문제를 해결할 수 있는지를 잘 알고 있기 때문이다. 구글링 천재들!
천재만 개발자가 될 수 있는 것이 아니라 이 세상에는 보통 실력을 가진 개발자가 훨씬 많다. 주어진 역할을 성실하게 수행하는 사람들이 더 멋진 개발자이고 이런 사람들이 세상을 만든다.
개발에서는 재능이 아니라 포기하지 않음이 더 중요하다. '이 함수 고칠 때까지 잠자지 않겠다.'라는 각오가 필요하다. 이 버그를 잡을 때 까지 끝없이 파일을 읽고 또 고치고, 새롭게 다시 시작하는 과정을 반복할 수 있는 끈기와 근면 성실함이 재능을 이길 수 있다.
물리 엔진, 머신러닝, 자율주행, 주식 트레이딩 자동화 도구 개발 등의 분야는 수학을 잘해야 한다. 하지만 다행히 아직까지 나는 이 분야들에 관심이 없다. 이 외에도 내가 만들 수 있는건 무궁무진하고, 또 필요하면 공부하면 되니까 괜찮다!
프로그래밍으로 무엇을 하고 싶은지 부터 스스로에게 질문 해 보자.
아무 언어나 무작정 배우려고 하면 시간을 버리게 되고 공부도 재미 없어진다. 우선 뭘 하고 싶은지 생각 해보면 어떤 언어를 배우면 될지 가닥이 잡힌다.
에어컨, TV, 스마트 냉장고 같은 가전제품에 들어 있는 프로그램은 C언어로 프로그래밍 됐다.
C언어는 제한된 상황에서 최대 성능을 내기 위해 만들어졌다. 예를 들어 냉장고는 음식을 차갑게 유지하는게 중요하니까 프로그램을 실행하는 부품의 성능보다 냉각 부품의 성능이 더 좋아야한다.
자바는 주로 정부나 은행, 기업에서 많이 사용한다. 우리나라 대다수 회사는 자바에 기반한 전자 정부 프레임워크를 사용하기 때문에 취업시장에서는 자바가 유리하다. 하지만 스타트업에서는 자바 개발자를 많이 구하지 않는다. 자바는 역사가 아주 긴 언어여서 오래된 프로그램을 보수하는데 더 많이 쓰이지만 스타트업에서는 최신 기술을 주로 사용하기 때문이다.
안드로이드 애플리케이션 개발에도 자바가 쓰이므로 안드로이드 개발자가 되고 싶다면 자바를 공부하자. 이쪽 진영에서는 자바와 코틀린을 모두 사용한다.
코틀린
파이썬은 머신러닝, 데이터 과학 분야, 웹 스크래핑, 웹 사이트 만들기, 서버 만들기, 유용한 애플리케이션 만들기 등에서 사용 가능하다. 또한 읽기 편하고 코드가 예뻐서 초보자들에게 추천한다.
자바 코드 예
public class Main {
public static void main(String[] args){
System.out.println("안녕");
}
}
파이썬 코드 예
print("안녕")
웹 프로그래밍(웹 사이트나 웹 앱 만들기)를 하고 싶으면 HCJ(HTML, CSS, JavaScript)를 배우자.
이 중에서 특히 자바스크립트가 중요하다. 자바스크립트는 버튼을 누르면 데이터를 전송하거나 메뉴를 접었다 폈다 할 수 있는 등 동적인 웹사이트를 만들게 해준다. 또한 서버 쪽의 코드, 백엔드 영역도 개발할 수 있다.
새로운 프로그래밍 언어를 공부할 때 그 언어에 담긴 철학, 코드 구조, 개념, 패턴 등을 배워서 언어를 사용할 때 녹여 낼 수 있다면 개발자로서 능력이 어마어마하게 발전할 것!
프로그래밍 언어의 공식 문서 살펴보기
공식문서에는 그 언어를 만든 사람의 철학부터 시작해서 누가 이 언어를 사용해야 하는지, 올바르게 사용한 예, 관련 커뮤니티 등 모든 자료가 있다.
문법 확인하기
문법을 보고, 입력하고, 이해하고, 기억하려고 노력한다.
다른 언어와 비슷한 특징 집중해서 보기
내가 알고있는 언어와 새 언어의 공통점, 차이점에 집중한다. 우리 뇌는 이미 아는 것과 연관 지어 공부하는 것을 좋아하기 때문.
새 언어로 코딩 시도하기
공식 문서를 더 읽어야 한다며 시간 낭비하지 말고 함수나 변수를 선언하는 등 특정 패턴을 작성해보자. 그럼 쉽게 익숙해질 수 있을것.
튜토리얼 시작하기
오픈소스 프로젝트를 가져와서 해당 튜토리얼을 참고삼아 해체하고 다시 만들어본다. 프로젝트의 한 마당을 제거하거나 다른 부분을 해체하면서 무슨일이 일어나는지 살펴보고 다시 조립해본다.
나만의 프로젝트를 만든다.
거창한 목표보다는 이미 만들어봤던 주제의 프로젝트를 새 언어로 만들어보거나 간단한 프로젝트부터 시작해본다.
LS가 됐을지도 모르는 자바스크립트의 로고
50년 전에 개발된 언어다 보니 자원이 열악한 상황에서 사용하기 좋다.
화성의 지면 모습을 촬영해 NASA(나사)에 보내도록 화성 탐사선에 탑재된 프로그램은 C언어로 개발됐다. 왜? 화성 탐사선의 메인 부품은 엔진, 이동 부품, 우주 비행사의 공간 등 여러 장치가 더 중요하기 때문에 메모리를 최대한 적게 사용하면서 최대 효율을 내는 프로그램을 만들기 위해 C언어를 사용했다.
C언어는 절차 지향을 지원하고 C++은 절차 지향, 객체 지향을 모두 지원해서 C 언어에 없는 class와 같은 문법이 C++에 있기도 하다. 실행 속도는 C와 비슷하다. C와 C++은 공부하기 어렵고 개발 속도가 느리다.
C#은 C, C++와 이름은 비슷하지만 완전히 다른 언어다. C#은 C나 C++도 아닌 자바와 비슷한 언어이고 개발자가 개발한게 아니라 기업(마이크로소프트)에서 필요해 만든 언어다. 마이크로소프트는 '닷넷'이라는 윈도우 프로그램을 개발하기 위해 도구와 실행 환경을 제공하는데, 여기서 C#을 사용한다. 자신들만의 개발 유니버스를 구축하려고 만든 언어라고 생각하면 된다.
윈도우 운영체제 기반에서 동작하는 프로그램을 개발하거나 백엔드, 프런트엔드 개발, iOS 애플리케이션 개발까지 다양한 영역에서 사용할 수 있다. 세 언어 중에서는 공부하기 쉽고 개발 속도도 빠르지만 실행 속도는 가장 느리다.
"C#는 마이크로소프트가 만든 자바 언어다."
"영화에서 부풀려 표현한 해커의 천재 이미지 때문에 주니어 개발자들은 스스로 자신감이 한참 부족하다고 생각한다. 취업은 하지 않고 방구석에 처박혀 계속 공부만 하는 사람도 있다. 열심히 공부하는 학생들한테서 자주 볼 수 있는 유형이다." -에피소드 01
이 문장은 내게 적잖은 충격을 주었다. 정확히 나를 설명한 문장이었다.
난 늘 스스로 많이 부족하고 아는 것이 없어서 취업을 하기엔 무리라고 생각했다. 심지어 공부할 게 아직 많이 남았다는 명분 하에 취업을 피해왔고 스스로 완벽해질 때까지 기다렸다가 취업을 하고 싶었다. 어쩌면 나는 '공부'라는 자기 합리화 뒤에 숨어있는 것은 아닐까? 책의 내용대로 나는 '이미 개발자로 일할 준비가 되어 있을지도' 모르는 걸까? 이미 이전에 취준 경험이 있고, 취업 성공까지 해서 회사를 다녔고, 새로운 꿈을 위해 용기를 내서 퇴사까지 하는 과정을 거쳤지만 여전히 나는 취업으로 뛰어드는 것이 두렵다.
https://velog.io/@missingusers/IT-5%EB%B6%84-%EC%9E%A1%ED%95%99%EC%82%AC%EC%A0%84-TIL-EP.-6-10