끝을 보는 용기

Spring 본캠프 Day 034 - 머릿속 기억 장치 최적화

writingforever162 2024. 11. 9. 17:52

"메모리가 부족합니다."

내가 만약 컴퓨터라면 분명 머릿속에 저 경고문이 떴을 거다. 자바(Java) 문법 강의를 들을 수 있었지만, 과감히 강의 듣기 대신 정리하기를 택했다. 특강을 들을 때나 발표회에서 메모장을 켜고 적곤 했는데, 이렇게 많이 쌓일 줄은 몰랐다. 무작정 앞만 보고 달렸다가는 용량 초과로 다른 지식이 들어오지 못할 듯했다. 무엇보다 본캠프가 열리고 맞이하는 첫 주말인 만큼, 쉬어가는 시간을 누리기로 했다. 오늘은 메모를 대부분 정리하고 내일 발표회 녹화 영상을 다시 보면서 개인 KPT 작성 및 팀 KPT 수정을 하며 팀 프로젝트를 진짜로 마무리 지으련다.

 

[습관 관련]

어제 새벽 2시 넘어서까지 팀원들을 비롯하여 다른 사람들의 TIL을 읽으며 생각에 잠겼다가 아주 제대로 늦잠 잤다. 평일 내내 일찍 일어나다 늦게 잠에서 깨니 머리가 지끈댔다. 오늘 밤부터 다시 자정 전에 자야겠다고 다짐하는 동시에, '그새 아침 기상 습관이 잡혔나?' 속으로 내심 뿌듯해했다. 운동은 점심과 저녁 식사 전 각각 10분씩하고 거북목 스트레칭과 허리 근력 강화 운동은 자기 전에 할 예정이다.

드디어 오늘 문제 1개를 더 풀고 Lv2가 되었다! 자바(Java) 문제는 정말 수학 문제와 닮았다. 문제를 읽고 출제 의도를 파악해서 어떤 공식을 쓸지 빠르게 생각해서 풀어야 한다. 10번 문제를 풀 때도 출제 의도를 파악하지 못해서 많이 헤맸다. 조만간 문제를 다시 풀어야겠다. 예전에 수학을 공부할 때도 어떤 문제는 정확히 10번 풀었으니까. 

 

[인용 및 참고 출처]

1. 구글 검색: 티스토리, "스파게티 코드란", 스파게티 코드, (2024.11.09)

2. 구글 검색: Wikipedia, "What is spaghetti code?", 정의, (2024.11.09)

3. 사전: "pejorative", "viable", 네이버 영어사전, 네이버 영어사전, (2024.11.09)

4. 구글 검색: Amazon Web Services, "디버깅이란", 디버깅, (2024.11.09) 

5. 강의: 내일배움캠프, OT, 백엔드 개발 부트캠프 소개, (2024.11.09)

6. 구글 검색: 브런치, "MVP란?", 최소 기능 제품, (2024.11.09)

7. 구글 검색: 아임웹(imweb), "SSL이란?", 데이터 전송을 안전하게, (2024.11.09)

 

[학습 관련]

1. 스파게티 코드(Spaghetti code)

ⓐ 한글 설명: 프로그램 제어 흐름이 복잡하게 얽혀 마치 그 모습이 스파게티 면발을 닮은 코드. 읽기 어렵고 이해하기 힘든 코드를 의미한다.

ⓑ 영문 설명: Spaghetti code is a pejorative phrase for difficult-to-maintain and unstructured computer source code.

▶ 스파게티 코드는 유지 보수가 어렵고 체계가 없는 컴퓨터 소스 코드인데, 여기서 'pejorative' 단어가 있어서 움찔했다. 이 단어는 '경멸적인' 혹은 '가치를 떨어뜨리는'을 의미하는데 대부분 전자가 가장 먼저 나온다. 거의 경멸하는 수준으로 피해야 하는 코드라는 뜻이나 마찬가지인 셈이었다. '스파게티'라는 친숙하고 좋아하는 음식 이름이 붙어서 가볍게 넘어갈 일이 아니라, 누군가의 경멸 어린 시선을 받지 않도록 코드를 짤 때 주의해야겠다는 경각심이 일었다. 

 

2. 디버깅(Debugging): 코드 오류나 버그를 찾아서 수정하는 과정. 일명 벌레 잡기!

 

3. MVP(Minimum Viable Product)

ⓐ 사전 속 viable 의미: 실행할 수 있는 

ⓑ 최소 기능 제품. 즉 스타트업이 제품의 가장 중요한 기능에 집중하여 개발하는 초기 모델

 

4. 좋은 개발자란?

(1) 호기심이 많고 배울 자세가 된 사람
(3) 스스로 문제를 파고들 줄 아는 사람
(3) 팀 동료로서 함께 일하고 싶은 사람

 

5. 꿀단지에서 나온 조언

혼자 두 시간 넘게 고민하지 마라. 반나절 넘게 고민해 문제를 해결해도 다른 수강생과 자연스럽게 스스로 비교하여 상대적 박탈감이 올 수 있다. 

ⓑ 개발에서는 불편함을 경험해야 한다. 그래야 왜 해당 프로그램을 쓰는지 알 수 있다.
ⓒ 부족하거나 고민이 담긴 코드를 과제로 제출하라. 그래야 부족한 부분을 파악하고 피드백을 받을 수 있다.
ⓓ 무언가를 노트에 글 쓰고 그림을 그려라. 프로그램 사용에 익숙해지는 시간을 들이기보다는 이 편이 낫다.
ⓔ 기능 구현이 끝나면 시연 영상을 찍어라. 어제는 잘만 작동한 기능이 갑자기 오늘 안 될 수도 있다.

 

6. SSL(Secure Sockets Layer): 사용자와 서버의 통신을 암호화하여 해커가 중간에 데이터를 가로채도 알 수 없도록 하는 통신 방법

 

[기타 사항]

오늘 자바(Java) 강의는 대신 기술 번역 강의를 들었다. 왜 듣냐고 묻는다면, 사전캠프부터 지금까지 공부하고 팀 프로젝트를 진행하며 현재의 영어 실력에 한계를 느꼈기 때문이다. 특히 개발 분야 용어는 대부분 영어의 줄임말이라, 지금은 질문하는 왕초보이지만 언젠가는 질문을 받는 위치에 오를 테니 미리 설명하는 실력을 키우고 싶었다.

 

번역 투를 쓰면 한글이 영어처럼 들리는 이상한 마법이 펼쳐진다.

 

'~에 대해'라든지 '~하기 위해' 또는 '~로부터'를 쓰지 않으려고 몇 년을 공들였는데, 이제 와서 열심히 쌓아 올린 탑을 무너뜨릴 순 없었다. 먼 훗날 만난 예비 개발자의 물음에 번역 투로 대답한다면, 냅다 영어로 말하는 '불친절한' 선배로 비칠 터였다. 평일에 시간을 내지 못한다면 주말에라도 꼭 번역 공부를 병행해서 최대한 친절한 개발자가 될 수 있도록 노력하기로 했다. 그러려면 결국, 자바(Java) 공부도 열심히 해야 한다. 능숙하게 다루어야 내 시간이 늘어날 테니까.

메모 2에는 발표회에서 들은 내용이 적혔으니, 나는 팀원으로서 어땠는지 내일 돌아볼 겸 정리해야겠다.