BEYOND SW 캠프 15기 14주차 회고

mijuckboon·2025년 4월 26일
post-thumbnail

부트캠프 14주차 회고를 적어본다.

학습 내용

  1. JavaScript
    웹 페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어로, 컴파일러나 인터프리터 등 별도의 개발 환경을 갖추어야 하는 다른 언어들과는 달리 웹 브라우저 엔진으로 동작하는 유일한 언어라는 특징이 있다.

  2. Vue.js
    사용자 인터페이스(UI)와 싱글 페이지 애플리케이션(SPA) 개발을 위해 설계된 오픈 소스 JavaScript 프레임워크이다. HTML, CSS, JavaScript에 대한 지식이 있으면 비교적 배우기 쉬운 편이라고 알려져있다.

JavaScript

1. 유연성

자바스크립트는 동적 타입 언어이자 스크립트 언어이다. 변수를 선언할 때 문자열, 숫자 등 자료형에 관계없이 let, const로 선언하면 되고, 배열 안에 여러 자료형이 공존할 수 있는 등 유연하다는 특징을 가진다.

필자의 경우 처음 본격적으로 사용해본 언어가 파이썬이었고 그 다음으로 백엔드 공부를 하며 자바를 사용했는데, 초반에는 간결하지 못한 문법과 예외가 자주 발생하는 딱딱함에 적응하기 쉽지 않았다. 파이썬도 동적 타입 언어이자 스크립트 언어여서 꽤 유연한 편에 속하는데, 자바스크립트는 메서드의 매개변수 개수가 맞지 않아도 에러가 발생하지 않는 등 그런 파이썬에 비해서도 대체로 더 유연했다.

사용자의 화면에서 자주 예외나 오류가 발생하면 사용성이 떨어지기에, 자바스크립트의 이런 유연함은 프론트엔드 개발 언어로 자리 잡는 데 큰 도움이 되었을 것이다. 다만 유연하다는 게 항상 좋은 것만은 아닌 게, 언어의 동작을 정확하게 이해하지 않으면 코드에서 문제점을 파악하기 어려워 디버깅이나 예외 처리 등이 쉽지 않다. 자바가 백엔드 개발에 많이 사용되는 것은 스프링이라는 좋은 프레임워크의 비중도 크지만, 타입 검증이 엄격하며 Runtime Exception 대신 Compile-time Error를 자주 발생시키는 그 딱딱함 덕분이다. 또, JavaScript의 지나친 유연함으로 인한 불편에 대한 대안으로 TypeScript가 나오기도 했다.

결국 모든 것에는 장단점이 있으므로 각각의 특징을 잘 파악하고, 필요한 용도에 맞게 활용하는 것이 중요하다.

2. 다른 언어와의 공통점

새로운 언어를 공부할 때 기존에 학습한 언어와의 공통점과 차이점을 비교해보는 것은 이해에 큰 도움이 된다. 언어별로 철학은 다르지만 결국 필요하거나 하고 싶은 것들은 비슷하기에 살펴보면 공통점이 많다.

Java를 처음 공부할 때 많이 어려워하는 부분이 스트림인데, 필자의 경우 파이썬에서 이미 lambda, map, filter와 같은 함수들을 사용해봤기에 스트림을 비교적 빠르게 이해할 수 있었다고 생각한다. 또, Java만 배운 사람이라면 JavaScript의 유연함이나 특유의 문법에 적응하기 쉽지 않은데, 파이썬 사용 경험은 JavaScript 학습에 도움이 되었다. 예를 들어 Java에서는 대응되는 개념이 없는 구조 분해 할당의 경우, 파이썬에 있는 튜플 언패킹과 유사하다.

Java, Python, JavaScript를 살펴보면 이름은 다르지만 같거나 유사한 기능을 수행하는 함수가 많은데, 그 중 일부를 정리해보았다.

JavaPythonJavaScript
Stream.anyMatch(Predicate)any(iterable)Array.some(callbackFunction)
Stream.allMatch(Predicate)all(iterable)Array.every(callbackFunction)

코테 스터디

이번 주 목요일에 세 번째 코테 스터디가 진행되었다. 원래는 지난주 목요일로 예정되어 있었으나, 백엔드 프로젝트 보완으로 인해 1주 연기하는 게 서로에게 더 도움이 될 것 같아 일정을 조정하게 되었다. 일정이 조정된 후에도 프론트엔드 프로젝트 준비를 병행하다 보니 스터디 문제에 많이 신경쓰지 못해, 풀어온 문제에 대한 기억이 흐려진 상태로 스터디가 진행되었다. 그래서 이번 스터디에서 많은 내용을 공유하지 못한 게 아쉬웠다.
저자 출제 문제여서 프로그래머스 채점이 지원되지 않는 문제에 대해서는 테스트 코드도 작성해보는 등 프로젝트 시작 전에는 꽤 공을 들였는데, 확실히 프로젝트와 병행하는 것이 쉽지 않다. 그래도 개발자 취업을 위해서는 반드시 챙겨야 하는 부분이므로, 남은 단원에서는 더 신경 써서 스터디를 통해 많이 배워가야겠다.

느낀 점

  1. 그동안의 경험을 돌이켜보니 프론트엔드 학습에 도움이 될만한 일이 꽤 많았다. 대학원에 다닐 때는 한 교과목에서 HTML을 이용하여 간단한 홈페이지를 만들어보기도 했고, 이전 직장에서 입력값을 받기 위한 양식을 만들던 도중 표나 셀렉트 박스를 만들 때 사용했던 것이 HTML 코드였다.
    현재 새로 알게 된 지식이 지금 당장은 별로 도움되지 않더라도 나중에 어떻게 쓰이게 될지는 모르는 것임을 다시 한 번 느끼게 되었다. 앞으로 새로운 내용을 배울 일이 생기면 이 경험을 떠올리며 열심히 습득해 봐야겠다.

  2. 이전의 경험 덕분에 개념을 이해하는 것은 어렵지 않았지만, 막상 곧 있을 프론트엔드 프로젝트를 위해 적용해보려니 쉽지 않았다. 나중에 있을 최종 프로젝트에서는 프론트엔드, 백엔드 등 모든 부분을 신경써야 하므로, 이번 프로젝트를 통해 손에 익혀봐야겠다.

profile
곽진웅, 백엔드 개발자 준비 중

0개의 댓글