3기 코딩 페스티벌
여태 배웠던 프로그래밍 언어 기술을 검증하고 활용하는 차원에서 한화시스템 beyond sw 3기 코딩페스티벌을 열어봤다.
항상 쫓기는 커리큘럼탓에 짧은 시간밖에 진행되지 못했지만, 수강생들의 발전된 실력에 감탄하는 시간이었다.
실전 코딩테스트처럼 1시간 가량을 주고 개인적으로 문제를 풀어보고, 조별로 코드리뷰를 거친뒤, 발표 후 토론하는 과정이었다.
문제의 난이도는 프로그래머스 기준 lv2~lv3 수준의 문제였고, 카카오 블라인드 기출도 들어 있으니, 왠만한 기업 코테문제 중 중상급 난이도에 속하는 문제들이었다고 생각한다.
사실, 원래 잘했던 수강생들은 한번쯤 풀어봤을만한 문제일테고 이 문제풀이 시간이 크게 의미가 없었을지도 모르나,
프로그래밍 자체를 처음하거나, 기초가 부실해서 수강기간 어려움을 겪던 수강생들 중에 제 시간안에 문제를 풀거나, 거의 근접한 모습들을 보면서 크게 놀라고 감탄을 했다.
각자가 같은 문제를 두고 다른 방식으로 접근하고, 그 풀이법을 나누고 토론하는 과정에서 즐거움을 느꼈고, 발표과정에서의 반복학습으로 인해 이 문제들과 유사한 문제가 코테에 나오면 수강생들이 놓치지는 않겠다 라는 생각이 들었다.
이런식으로 1,2달만 더 임팩트있게 알고리즘 공부를 함께 해볼수 있다면 26명 모두 코딩테스트에서 떨어질일은 없겠다 라는 생각도 하면서, 아쉬운 마음도 들었다.
앞으로 교육종료까지 남은 기간이 4달이니 절대 문제풀이를 손에서 놓지 않고 꾸준히 이어가길 바라고, 취업을 하고 현업에 가서도 이직을 위해 또는 개발자로서 역량유지를 위해 계속해서 문제를 풀어가길 바란다.
물론, 일에 치여 살다보면 지금처럼 온전히 개인공부에 집중하는게 쉽지가 않겠지만, 모두가 장기 비전을 가지고 꾸준히 역량을 쌓아가길 바란다.
스프링 시작
스프링 이니셜라이저 사이트에서 프로젝트를 생성하면서 본격적으로 스프링이 시작되었다.
스프링은 java로 직접 구현하기에 어려운 http통신, DB 작업, 로그인과 세션유지 등 웹서비스의 수많은 기술을 미리 구현해놓은 java 구현체들을 배우는 과정이다.
웹서비스에 사용되는 구현체들과 라이브러리가 몇개나 있을까?
엄청나게 많은 기술이 있기에 스프링은 자칫하면 무의미하게 라이브러리를 가져다가 사용하는 레퍼런스의 복붙 과정이 돼버리기 십상이다.
또한 많은 기술에 의해 겁을 먹거나, 조바심이 생기거나 하는 다소 무의미한 감정소모가 될수도 있다. 이는 불필요한 감정소모일수밖에 없는것이, 수많은 구현체들을 모두다 알고 있는 사람은 없고 그럴필요도 없다. 실전에서는 필요에 의해서 레퍼런스를 참조해서 가져다가 쓰면 그만이다.
그러면 스프링에서는 무엇을 배워야하고 무엇에 중점을 두고 강의가 진행되어야 할까?
일단은 기본패턴에 대한 학습과 암기이다. 모든 웹서비스에서 자주 사용되고 기본적으로 사용해야만 하는 기술들에 대해 학습할것이다.
먼저, http request, response처리를 위한 기본패턴들과 원리들에 대해 이해해야 한다. 즉, Controller의 기능에 대한 이해가 필요할것이고, 이는 두고두고 써먹게 되니 처음부터 정리를 잘해두면 좋을것이다.
DB 작업을 쉽게 해주는 구현체에 대한 깊은 이해도 필요하다. 우리 수업에서는 주로 SpringDataJpa를 활용할 것이기에, jpa에 대한 다양한 패턴들과 기능들에 대해 배울것이다.
로그인을 위한 기술, 웹서비스의 사용자 접속기록이나 에러기록과 같은 로그처리, 예외처리패턴, 테스트코드작성 등 기본적인 웹서비스 패턴적인 기술에 대해 학습할 것이다.
그리고, 이 때에 내가 중점을 두고자 하는 방식은 수강생들이 단순히 따라치기만 하면서 따라오게 하지는 않을것이라는 것이다.
웹개발 강의에서 가장 의미없는 것은 패턴을 제대로 익히지 못하고 남의 코드를 따라치기만 하는 것이라 생각한다. 구조와 패턴을 온전히 익히고 기반기술에 대한 이해를 갖고 난 이후에야, 다른 레퍼런스를 참고하든지 복사해오든지 하는 순서가 옳은 순서라 생각한다.
그래서 수업시간에는 최대한 디자인이나, 복잡한 화면을 배제하고 단순한 화면에서 스프링의 중점기술에 대해 학습할 것이다.
물론, 최종 프로젝트에서는 온갖 다양한 디자인과 신박한 레퍼런스들을 참고해서 다채로운 기능과 화면이 될것이지만, 수업시간에 다룰 주요 패턴과 기능들을 온전히 자기것으로 만들고 나서야 그런 응용이 유의미함을 알았으면 좋겠다.
실무에서 개발자들이 주로 하는 일이라고는 레퍼런스를 찾아 복사붙여넣기 하는 것이라고는 하지만, 개 중에 잘하는 개발자들과 못하는 개발자들의 차이는 근간의 기술을 이해하느냐에 있다.
근간의 기술에 대해 이해하고 작업하는 경우에 추후에 해당 작업이 문제를 일으킬 여지가 크게 떨어지고, 생산성도 높을수밖에 없다.
그리고 무엇보다, 아무것도 모르고 복붙할경우에 신규개발은 그럭저럭 할수 있으나, 라이브 상황에서 소스코드에 문제가 생겨 고쳐야 하는 상황에서 뭐가 문젠지 알지를 못한다. 레퍼런스를 참고 할때도 내가 붙여 넣는 소스코드의 의미를 온전히 알고 사용해야 하고, 그렇기 위해서는 스프링의 기본기가 되어 있어야 한다.
다음주부터 본격적으로 스프링과 웹개발에 대해 배울것인데,
향후 2달간은 지엽적인 코드레벨에 대한 이해도 중요하지만 스프링과 웹개발의 구조적인 형식과 통신방식에 대한 추상적인 영역에 대한 시뮬레이션 등에 조금 더 초점을 두고 강의를 하고자 한다.
다음주 강의도 잘 준비해보자~
'부트캠프 이야기 > 한화시스템 sw부트캠프 3기' 카테고리의 다른 글
spring 게시판 강의 (0) | 2024.01.27 |
---|---|
Spring 기본 강의 (0) | 2024.01.20 |
html, css, javascript 강의 후기 (1) | 2024.01.06 |
java 알고리즘 강의 후기 (1) | 2023.12.30 |
java 강의 후기 (0) | 2023.12.23 |