끝을 보는 용기

Spring 사전캠프 Day 012 - 책 『오늘부터 IT를 시작합니다』 읽기 100%, 자바(Java) 공부 시작

writingforever162 2024. 10. 18. 20:37

"책과 코딩의 공통점이 있다면 많이 빌려서 많이 읽을수록 성장할 수 있다는 것입니다. 더 나아가 누군가에게 빌려줄 라이브러리를 만들 수 있는 개발자가 되는 것은 어떨까요?" 

 

책 『오늘부터 IT를 시작합니다』 221쪽을 읽고 영감을 받아 이 책을 소개했다. 때마침 빗소리가 고막을 토도독토도독 두드리니 오지랖 부릴 용기가 생기기도 했다.

물론 이때까진 정말 몰랐다. 이 오지랖이 어마어마하게 큰 눈덩이가 되어 굴러갈 줄은.

 

[Spring 백엔드 트랙 게릴라 이벤트]가 갑자기 짠! 나타날 줄은!

지금도 쥐구멍을 찾지 못해서 직접 파고 들어갈까, 너무 부끄러운 나머지 키보드에 얹은 손이 자꾸만 오그라든다. 누군가에게 코딩 관련 지식을 알려줄 능력이 없어서 그나마 도움처럼 보이는 글 하나 적었을 뿐인데, 이렇게 커질 줄은 꿈에도 몰랐다. 쑥스럽지만, 다른 수강생분들이 이 책을 읽어볼 수 있도록 기회를 마련해주신 매니저님들의 추진력에 감탄과 감사를 조심스레 전해본다.

 

굵고 거센 작달비를 뚫고 도서관으로 달려가 새로운 책 한 권 빌려오길 잘했다.

 

이번 주말의 TIL과 마음속을 채울 양식이 있어 든든하다.

 

[습관 관련]

어제의 피로가 오늘 아침 내내 이어져서 일곱 시에 눈만 잠깐 뜨고 느지막이 일어났다. 공부를 마치고 나면 어찌나 또 졸리던지. 공부 시간 앞뒤로 있는 여백을 어떻게 마음에 드는 색깔로 칠할 수 있을지 고민해야겠다.

 

[인용 및 참고 출처]

1. 단행본: "라이브러리", 고코더, 『오늘부터 IT를 시작합니다』, 한빛미디어, 2022, 218쪽~220쪽, (2024.10.18)

2. 단행본: "동기화와 비동기화", 고코더, 『오늘부터 IT를 시작합니다』, 한빛미디어, 2022, 224쪽~229쪽, (2024.10.18)

3. 단행본: "객체 지향 프로그래밍", 고코더, 『오늘부터 IT를 시작합니다』, 한빛미디어, 2022, 233쪽~239쪽, (2024.10.18)

4. 구글 검색: velog, "자바에서 메서드란", 메서드(method)란?, (2024.10.18)

5. 구글 검색: 티스토리, "자바에서 메서드란", 메서드(Method)란?, (2024.10.18)

 

[학습 관련]

1. 라이브러리(Library): 어떤 사람의 지식을 함축해 놓은 코딩 결과물. 스스로 동작하는 완전한 프로그램이 아닌 특정 기능만 수행하도록 개발된 코드 ▶ 라이브러리와 프레임워크의 차이점은 '제어 흐름 권한이 어디에 있는가?'이다. 프레임워크는 전체적인 흐름을 쥐고 있지만 라이브러리는 사용자가 직접 애플리케이션 흐름을 제어한다.

 

2. 책 『오늘부터 IT를 시작합니다』 219쪽: 코딩과 글쓰기는 닮았습니다. 잘 짜인 라이브러리는 책 한 권과 같은데 선배 개발자가 만들어 놓은 귀한 지식을 누구나 가져다 쓸 수 있기 때문입니다. 그것이 개발에서의 라이브러리입니다.

[24.10.27 추가] 글쓰기를 정말 좋아하는 사람으로서 공감한다. 무언가를 모를 때는 도서관으로 가면 된다. 지금은 검색 한 번으로 관련 연상이 수십수만 개가 뜨긴 하지만.

 

3. 동기화 vs 비동기화 추가 학습: 사용자인 클라이언트가 웹 브라우저로 제공자인 서버에 데이터를 요청했을 때, 서버가 응답하는 형식

동기화: 관리자 페이지나 금융 사이트에서 유리함. 즉, 정확한 순서가 필요한 곳에 적합함. ▶ 고객이 신발 주문했다고 바로 발송해 버리면, 그 사이에 고객이 주문을 취소할 시 골치 아파진다! 

비동기화: 일명 푸드코트. SNS나 포털 사이트에서 유리함. 즉, 기능 및 사용자가 많은 사이트에 적합함. ▶ SNS에 사진이 한 장씩 차례차례 로딩된다고 생각해 보자. 벌써 속 터진다!

 

4. 객체 지향 프로그래밍(OOP. Object-Oriented Programming)

(1) 정의: '객체'라는 독립된 기본 단위로 나누어 메시지를 주고받고 데이터를 처리하며 상호작용을 하는 방식

(2) 장점:

ⓐ 유연하고 변경이 쉬움 ▶ 대규모 소프트웨어 개발에 유리

ⓑ 이렇게 만들어진 프로그램은 유지 보수 및 개발이 편리하며 직관적으로 코드 분석 가능

(3) 특징: 객체(Object), 캡슐화(Encapsulation), 다형성(Polymorphism), 상속(Inheritance), 추상화(Abstraction)

 

5. 붕어빵을 굽듯이 OOP를 차근차근 알아보자!

클래스(Class): 일명 붕어빵 찍어내는 기계. 붕어빵 틀 ▶ 객체를 정의하는 틀이자 설계도

메서드(Method): 클래스의 일부이자, 특정 기능을 하는 코드를 묶어서 나타낸 함수의 한 종류 

(1) 객체: 붕어빵 ▶ 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중 자신의 속성을 지녔으며 다른 것과 식별 가능한 것

(2) 캡슐화: 비법이 담긴 밀가루 반죽과 팥앙금 ▶ 내부의 정보 캡슐 안에 담아 최소한으로 외부에 노출하는 것 

(3) 상속: 잉어빵, 피자 붕어빵 ▶ 부모 클래스의 변수나 매서드를 자식 클래스가 물려받아 사용하는 방식 

(4) 추상화: 미완성된 설계도. 객체의 공통된 속성과 기능을 추출하여 정의하는 것

(5) 다형성: 서로 다른 클래스의 객체가 동일한 값을 받고 나서 각자의 방식대로 동작하는 능력 

 

6. 오늘부터 IT를 시작합니다』 249쪽: 보안이 필요한 대형 시스템이라면 자바라는 필기도구가 적합할 듯합니다.

▶ 코딩이라는 편지를 컴퓨터에게 보내고자 필기도구까지 골랐다. 손 편지가 주는 기쁨을 잘 아는 만큼, 코딩이라는 편지 쓰기만의 재미를 앞으로 알아가면 좋겠다.

 

7. 『오늘부터 IT를 시작합니다』 250쪽: 훌륭한 언어와 성능 좋은 컴퓨터가 있더라도 중요한 것은 개발자의 실력입니다.

 

같은 명령의 코딩이더라도 더 간결하고 단순하게 컴퓨터가 일하기 쉽게 만드는 능력,

 

어디로 튈지 모르는 사용자를 위해 꼼꼼하게 점검하는 기능을 담는 노력,

 

다른 개발자를 위해 주석을 충실하게 다는 마음을 필요로 합니다.

 

그것이 개발자이고, 프로그래머가 하는 일입니다.

▶ 태도는 절대 하루 아침에 생기지 않는다. 반 년 가까이 되는 긴 시간 동안 관련 지식뿐만 아니라 태도가 몸에 베도록 노력해야 한다. 이런저런 글을 쓰면서 나만의 문체가, 내가 글을 대하는 태도가 잡히는 데 얼마나 오래 걸렸는지 잘 안다. 주니어 개발자라는 명찰을 달기 전 저 능력과 노력과 마음을 꼭 키워야겠다고 다짐했을 때, 개발자의 실력이 꼭 문체처럼 느껴졌다. 앞으로 공부하면서 갈피를 잡기 어려울 때 이 세 가지를 되새겨야겠다.

 

[기타 사항]

내일부터는 책 『비전공자이지만 개발자로 먹고 삽니다』를 읽는다. 

 

『Java가 보이는 그림책』은 우선 자바 강의를 좀 들은 다음에 문제를 풀기 어려울 때 참고하기로 했다. 생각을 정리하느라 TIL 작성이 늦어졌다. 앞으로 집중력을 더 발휘해야겠다.     

▲ 앞으로 자바를 공부하면서 이 미소를 잃지 않기를.