각종 후기/우아한테크코스

[우아한 테크코스 3기] LEVEL 1 회고 (50일차)

제이온 (Jayon) 2021. 3. 23.

안녕하세요? 제이온입니다.

 

오늘은 루터회관에서 수업을 듣고, 개인적으로 자습을 진행하였습니다.

 

 

엘레강트 오브젝트 수업

오늘은 포비가 저번 시간에 이어서 엘레강트 오브젝트 수업을 진행해 주셨습니다. 그 중에서 제가 기억에 남거나 배운 점을 중심으로 설명드리겠습니다.

 

첫 번째는 테스트가 잘 되는 코드를 만들라는 것입니다. 예를 들어, 0이상 9이하의 랜덤 숫자가 4 이상일 때 게임에서 승리하는 규칙의 게임이 있다고 합시다. 여기서 우리는 단순히 특정 메소드 내부에서 랜덤 숫자를 얻어올 수도 있습니다. 하지만, 이렇게 코드를 짜면 테스트를 하기 어렵습니다. 이때, 메소드 내부에서 랜덤 숫자를 생성하는 것이 아니라, 매개변수로 값을 가져오고 그 값이 4 이상인지 판단하고 승패를 결정하면 테스트를 할 수 있습니다. 이처럼, 테스트가 잘 되는 코드가 결국 변화에 잘 대처하는 유연한 코드가 되는 것을 알 수 있습니다.

 

두 번째는 어떠한 객체 A가 특정 객체 B의 비즈니스 로직에 많이 한다면 B의 필드로 A를 만들어서 DI를 하라는 것입니다. 저는 개발을 하면서 B의 필드로 A를 만들어야하는지, 매개변수로 A를 받아와야하는지 고민을 한 적이 있습니다. 이에 대해 포비는 동일한 매개 변수를 여러 메소드에서 사용하는지 여부를 확인하라고 하였습니다.

 

세 번째는 가능한 객체를 불변 객체로 만들라는 것입니다. 불변 객체는 예상치 못한 버그를 막을 수 있고, 유지 보수에 용이한 코드를 만들 수 있다고 합니다. 저는 여기서 컬렉션을 필드로 갖는 불변 객체는 컬렉션을 업데이트하는 메소드가 있다면, 컬렉션을 매번 새로 만들어야하는지 궁금하였습니다. 이에 대해 포비는 컬렉션을 새로 할당하는 것이 아니라, 요소를 업데이트하는 것 정도는 괜찮다고 말씀해 주셨습니다. 하지만, 결국 컬렉션의 요소가 변하는 것은 가변적인데 이것을 불변으로 볼 수 있는지는 의문이 듭니다.

 

네 번째는 public 상수를 만들지 말라는 것입니다. 이것은 당연히 enum 클래스도 해당이 됩니다. OOP 관점에서 객체들은 어떠한 것도 공유하면 안되므로 public 상수는 사용하지 말라는 것인데, 사실 실무에서 enum을 쓰지 않는다는 것은 오히려 프로그램의 복잡도를 높인다고 생각합니다. 가령, 체스에서 나이트 체스말은 이동할 방법이 8가지나 되는데 이를 모두 각각의 클래스로 만들어서 toString() 오버라이드 하는 것은 바람직하지 않다는 생각이 듭니다. 그래서 이 부분은 제 소신을 따르기로 하였습니다.

 

 

크루와의 대화

오늘은 수업 이후 아론과 제리와 셋이 사업에 관한 이야기를 하였습니다. 정확히는 제리의 교육 사업에 관한 이야기였고, 저는 중간에 껴서 대화를 들었습니다. 제리의 20살부터 현재까지 인생 스토리를 들었고, 정말 다사다난했다고 생각합니다. 군대 다녀와서 재수, 실패에 굴하지 않는 창업 도전 등은 확고한 추진력이 없으면 불가능할 것이고, 추진력이 있더라도 쉽게 이를 시행한다는 용기에 정말 감탄했습니다. 그리고 앞으로도 제리는 뭘해도 잘할 것 같다고 느꼈습니다.

 

아론도 대학교 4학년 2학기 졸업 시즌에 들었던 데이터 관련 R 프로그래밍 수업을 듣고 진로를 IT 분야로 틀었는데, 저같으면 그냥 남들처럼 점수 맞춰서 취업을 하지 않았을까 생각이 듭니다. 실패할 리스크도 있지만, 결국 우테코에 들어온 것을 보면 결단력과 함께 엄청난 노력을 한 것을 알 수 있습니다.

 

두 크루의 이야기를 들으면서 사업은 무조건 리스크가 큰 행위가 아니라는 편견을 깨게 되었고, 교육에 관심 있는 저는 앞으로 제리와 아론의 사업 이야기를 중간 중간 들을 것 같습니다. 또한, 인생에 타격이 입을 정도의 큰 실패가 아닌 이상, 미래의 제가 후회하지 않도록 현재 도전을 하는 삶을 살아야겠다고 생각했습니다.

 

 

새로운 미션

오늘 새로운 미션 소식을 들었습니다. 첫 번째는 바닐라 자바스크립트를 사용하여 To-Do List를 만드는 것이고, 두 번째는 SQL 퀴즈를 푸는 것입니다.

 

저는 JS를 공부한 지 1년이 넘었고, 그 마저도 생활코딩으로 대충 한 번 훑은 것이므로 거의.. 기억이 나지 않습니다. 그래서 미션 시작부터 아무것도 못하겠고 막막했습니다. 제리에게 물어보니, 모든 문법을 다시 공부하기보다는 JS의 DOM 개념만 익히고 다른 To-Do List 예제를 클론코딩해 보는 것을 추천해 주었습니다.

 

프론트엔드 고수인 제 동기에게도 물어보니, To-Do List 튜토리얼 사이트를 알려주어서 내일 이 포스팅을 따라서 학습할 예정입니다.

 

 

SQL은 현재 SQL 첫 걸음을 통해 학습 중입니다. 오늘 MySQL 깔려고 삽질을 좀 많이 하긴 해는데 후딱 책 읽고 프로그래머스의 SQL 연습 문제를 풀어서 씨유의 퀴즈를 풀 예정입니다.

 

 

정리

오늘은 스스로 공부한 내용은 많지 않지만, 사업이 꼭 나쁜 것은 아니라는 것을 알게 되었고 도전하는 삶의 중요성을 알게 되었습니다. 해 보지도 않고 지레짐작하여 포기를 하였던 과거의 저를 반성하며, 앞으로의 저는 이런 실수를 하지 않도록 노력해야겠습니다.

댓글

추천 글