교육센터 수업이 2/3 지점쯤 지나고 있을때 몇몇 학생들이 취업을 위해 면접을 보고 있다는 소식을 듣게 되었다. 그 가운데 어떤 학생들은 수료 후 출근하기로 예정되거나, 또 어떤 학생들은 도중에 수업을 그만두고 바로 취업을 한 학생도 있었다. 같이 공부하고 있던 학생들 사이에서 그런 소식을 들을때는 적지않게 마음의 동요가 일기도 하고, 나도 취업을 할 수 있을까? 하는 생각이 들곤 했다.

 

그러던 중에 2월 초에 이력서를 넣게 되었다. 사실 이 분야에서 이력서는 처음인지라, 이력서를 작성하는데 많은 에너지를 쏟을 수 밖에 없었다. 프로젝트를 진행하는 과정이었기 때문에 이력서를 작성하면서도 마음이 초조했다. 그런데 이력서를 작성하면서 느낀것은 그동안 배워왔던 것들을 다시 정리하는 계기가 되었다. 단순히 코드를 작성하는 것으로 그친게 아니라, 내가 작성한 코드를 누군가에게 설명하는 식으로 생각해 보기도 하고, 머릿속에서 멤돌던 개념들을 입으로 소리내어 보는 계기가 되기도 했다. 특히 자기소개 또는 포트폴리오를 작성할 때 이런 부분들을 경험하게 되었던 것 같다. 여러 번의 수정 과정을 거쳤고, 지인에게 작성한 이력서를 보여주기도 했다.

 

 

그렇게 작성된 이력서를 전송했다.

 

 

주말에 이력서를 보냈는데, 그 다음주에 한 통의 전화가 왔다.

내가 지원한 회사의 담당자 분이셨다. 면접 날짜와 시간이 결정되어서, 이메일로 안내해 주겠다는 연락이었다.

연락을 받고 순간 가슴이 떨리면서도, 동시에 오만가지 생각이 들기도 했다.

 

면접 날짜까지는 약 9일정도의 시간이 있었다. 그 가운데서 현재 내가 작업한 프로젝트를 어떻게 설명하고 이야기 해야할까? 에 대한 고민이 있었다. 그러던 중에 신입 개발자들이 자신의 포트폴리오를 어떻게 하는지에 대해 검색해 보니 여러가지가 있었는데 깃허브 Readme file 로 만들거나, 영상을 촬영하기도 했다. 그래서 나는 이 두 가지는 꼭 하고 싶었다. Readme file에 기록하는건 어렵지 않았지만, 일단 프로젝트를 영상으로 만든다면 설계 당시의 기능들이 반드시 구현되어야만 했다. 남은 시간이 많지 않았지만 면접일 전까지는 마무리 되어야 했기에, 일주일 동안은 정말 정신없이 살았던것 같다. 다행히도 영상을 기록하기 전까지 생각했던 기능들을 구현할 수 있었고, 완성된 듯 했으나 지속적으로 발생했던 에러들도 잡아낼 수 있었다.

 

 

그리고 면접 당일.

 

긴장하고 싶지 않았는데, 염치없는 내 심장은 미친듯이 쿵쾅거렸다. 

우황청심환이라도 먹어야 하나 생각했는데, 괜히 평상시에 먹지 않던걸 먹었다 탈이 날까 싶어 "평소대로 하자" 라고 말하며 집을 나섰다.

지하철로 이동하는 시간과 지하철 역에서 걸어가는 시간을 넉넉히 계산해서 일찍 집을 나섰다. 건물 앞에 도착해서 시간을 보니 면접 시간까지 아직 15분이 남았다. 바로 들어갈까 하다가 건물 아래에서 면접 때 질문할 것들이나, 프로젝트에 대한 것들을 머릿속으로 다시 정리했다.

 

 

그리고 면접...ing

 

 

첫 면접이기도 했지만, 면접을 보는 도중 이 회사에서 일하고 싶은 마음이 더욱 강하게 들었다. 면접을 준비하며 회사에 대해서 알아보기도 했지만, 회사의 방향이 내가 생각하는 가치와도 잘 맞았기 때문이다. 거리로 나와 시간을 보니 족히 1시간은 면접을 보았다. 그 1시간이 정말 1분처럼 빨리 지나갔다. 과연 면접에서 나는 어떤 사람으로 어필되었을까? 현재의 나를 충분히 보인걸까?하는 생각과 아.. 그건 좀더 얘기했어야 했는데  하는 아쉬움들이 혼재된 상태로 길을 걸었다. 그리고 지하철을 타기 위해 역내로 걸어가는데 전화가 왔다.

 

 

"안녕하세요. ㅇㅇㅇ입니다.  출근 일정을 잡으려 하는데 언제 출근 가능하신가요?"

 

 

그 순간.. 내 귀를 의심했다. 그래서 나도 모르게 "저 합격한건가요?" 라고 되물었던 것 같다.

 

집으로 돌아왔는데 마음이 울컥했다. 

그리고 너무 감사한 분들이 떠올랐다. 

 

혼자의 힘으로 해낸게 아니라, 함께 한 사람들이 있었기에 가능한 일이었다. 

 

 

 

 

더보기

 # 이력서를 작성하면서 많은 도움이 되었던 워니님의 블로그

http:// wonny.space/writing/work/engineer-resume

 

 

 

 

 

 

'일기' 카테고리의 다른 글

두 번째 프로젝트를 마친 소회  (0) 2020.12.25
HTML & CSS 를 정리하다가..  (0) 2020.11.20
미니 프로젝트를 마친 후의 소회  (0) 2020.11.06

글 list 페이지에서 1개의 글을 클릭했을 때 '조회수'를 Update 한다.

 

[실행흐름]: 원리

1. BoardController 의 상세페이지를 담당하는 메서드: detatil 에서

 - service.hitUp(id) 를 실행.

 

2. BoardService(interface)와 BoardServiceImp(구현객체)

 1) BoardView hitup(int id);

 2) 구현객체의 오버라이드 메소드에서 boardDao.hitUp(id)를 실행 + return boardDao.get(id);

 

3. BoardDao(interface)와 MyBatisBoardDao(구현객체)

 3.1 hitUp(id) - 해당 글 ID로 UPDATE 쿼리문을 실행 ID의 hitCnt 컬럼을 +1 

 1) int hitUp(id)

 2) mapper.hitup(id);

 3.2 get(id) - 해당 글의 ID 값으로 상세 페이지를 get 하는 메서드

 

4. BoardDaoMapper.xml

  1) id = "get" 인 쿼리문(id의 모든 컬럼)

  2) id = "hitUp"인 쿼리문(hitCnt+1)

 

# 추가적으로 필요한 기능: 트랜잭션

 

 

# 무턱대고 생각했던 부분

이 기능을 어떻게 구현할까를 생각했을 때 굉장히 어렵게 접근했던 것 같다.

list 페이지의 해당 글을 클릭하는 이벤트가 발생할 때 자바스크립트에서 그  아이디 값을 얻어서,

다시 컨트롤러로 보내고,

그 아이디에 해당하는 로우의 hitCnt를 +1 해줄 생각을 했었다.

 

그런데 다른 사람들이 어떻게 이 기능을 구현했는지를 검색해 보니 내가 생각했던게 잘못되었다는 판단을 하게 되었다.

처음 글을 읽으면서는 다른 코드들을 보면서도 무슨 의미인지, 왜 이렇게 작성했는지 알지 못했지만

하나씩 곱씹어 보니 어떤 원리로 동작하는지를 알게 되었다.

 

 

Controller

Service

ServiceImp

BoardDao

MyBatisDao

BoardDaoMapper.xml

게시판 댓글의 수정 기능을 구현해 보았다.

자바 스크립트의 fetch를 사용하여 비동기로 작동된다.

 

[해결점1]  자바 스크립트에서 보내는 데이터를 컨트롤러에서 어떻게 전달받는가?

자바스크립트에서 fetch()의 body: 에 입력을 처리할 데이터를 담아서 보내고,

컨트롤러에서 @RequestParam 을 사용하여 데이터를 받아 사용한다.

 

[해결점2] 여러개의 댓글이 작성될 경우, 어떻게 해당 댓글을 찾아서 이벤트를 발생시킬 것인가?

참고문서: ko.javascript.info/event-delegation#tasks

이벤트의 위임에 대해서 학습해볼 필요가 있다.

Dom을 선택할 때 QuerySelectorAll을 사용하여, 0번째, 1번째 클릭했을 때를 판단하며 처리할 수 있겠지만,

e.target.closest(selector); 함수를 사용하면 e.target의 조상 selector 에 가장 근접한 것을 선택할 수 있고, 이를 이용하여 내가 원하는 버튼에 이벤트를 실행할 수 있게 된다.

아래의 자바스크립트 코드는 이를 이용하여 댓글이 2개 이상이라도 원하는 댓글Id 값을 찾아서 컨트롤러로 데이터를 보내어 댓글을 수정한다.

 

 

 

 

 

 

community/list

 

 

BoardController.java

 

datail.js

  지난 11월 1일부터 시작된 두번째 프로젝트. 기획부터 프로그램 설계, HTML, CSS, JAVA SCRIPT, 데이터베이스 모델링, JDBC 를 공부했다.

 

  처음 한 달은 HTML/CSS와 JDBC를 병행하며 배웠고, 12월 부터 본격적으로  JAVA SCRIPT가 추가되었다. 선생님께서 JAVA를 했기 때문에 자바 스크립트를 배우는게 쉽다고 하셨는데 물론 기본적인 문법은 유사했지만 DOM을 다루는 것이 쉽지는 않았다. 특히, JDBC의 경우에는 기본적인 CRUD 즉, Create(생성), Read(읽기), Update(갱신), Delete(삭제) 를 마친 후에는 코드 분리가 이루어졌다.

  코드 분리의 이유는 업무를 비동기적으로 수행하기 위해서이다. 프로그램을 개발할 때는 여러 사람이 서로 다른 업무를 처리해야 하므로, 1) 업무적인 것은 Service에서 맡고,   2) 데이터를 조작하고 SQL은 DAO에서 맡도록 하는 것이다.

 

  이 시점부터 어려워졌다고 느꼈는데, 크게 두 가지 이유이다.

첫 번째는, Servlet에서 DAO까지 연결되어 가는 과정. 좀 더 넓은 관점에서 얘기하면, 프로그램의 흐름을 이해하는게 쉽지 않았다.

두 번째는, 본격적으로 프로그램에서 요구되는 기능이 다양해졌다. 단순히 데이터를 insert, update, delete 하는 것만이 아니라 조건에 맞는 검색, 정렬, 다른 테이블에 참조된 자료를 가져오는 일, 글의 조회수 count, 평가 등등의 다양한 기능이 필요하게 되었다.  그리고 이 기능을 구현하기 위해서는 1) 자바와 2) SQL에 대한 기본기가 중요하다는 걸 느꼈다. 이것은 지금 뿐만이 아니라 앞으로도 계속 다듬어져야 할 부분이다.

 

  프로젝트가 본격적으로 시작된 12월 부터는 6시 30분까지 수업을 들은 이후에는 저녁식사 후에 팀원들과 다시 온라인으로 만나 새벽까지 복습과 프로젝트하는 걸 반복했다. 아예 모르는 걸 수업 때 이해하고, 바로 적용하는게 쉽지는 않았지만 모르는 걸 하나씩 알아가는 재미도 있었고, 수많은 오류들을 만나고 해결하며 잠깐의 기쁨을 느끼기도 했다.

 

어렵고 힘들지만, 긍정적인 마인드로 배우고,  즐겁게 공부하고 싶다.

어느덧 2020년이 저물어 가고 있다. 코로나 팬데믹으로 인해 올해는 유난히 시간이 더 빠르게 지나간 것 같다. 2021년이 기대 된다. 올 한 해를 성실하게 그리고 바쁘게 보냈다.

수고했어!

2020년 12월 25일 메리 크리스마스!

 

 

 

'일기' 카테고리의 다른 글

2021년 2월 이력서 그리고 면접  (0) 2021.02.12
HTML & CSS 를 정리하다가..  (0) 2020.11.20
미니 프로젝트를 마친 후의 소회  (0) 2020.11.06

  블로그를 만들때는 지금 배워가는 것들을 차곡차곡 정리할 요량이었다. 그런데 배워가는 것들이 많아지고, 내 생각을 정리할 시간조차 없다보니 이렇게 텅 비어버린 공간이 되었다. 그래서 오늘은 빈 공간을 조금 채워보려 한다.  

 

  나는 이제 막 JavaPrograming을 배웠고, 이제 html과 css를 배우고 있는 중이다.  html과 css를 접할 때는 내용이 너무 방대하게 느껴저서 정리도 되지 않았고, 손에 잡히지도 않았다. 아직 java 문법이 익숙한 상태였기에 솔직히 그립기도 했다. 가르쳐 주시는 선생님께서 수업때 배웠던 것들을 바로 사용해 보지 않으면 "여러분이 직접 사용해보면서 자기 길을 걸어가 보지 않으면 아무 소용이 없습니다!" 라고 강조하셨기 때문에 매일 매일 수업때 배웠던 것들을 내가 맡은 부분에 적용하고, 연습하는 방식으로 공부를 했다.

 

일주일여 만에 html을 마치고, css를 처음 접할무렵 선생님께서 Flex 를 수업때 알려주셨다. 블록화된 요소들을 플렉스 아이템화하여 정렬 및 다양한 기능을 제공하는 엄청난 녀석이었다. 그때는 몰랐다. HTML/CSS가 또하나의 블랙홀이라는 것을... 지난 일요일엔 각 태그의 요소들을 정확히 파악하지 않은 채 이것저것 다 해보다가 큰 진전 없어서 멘붕이 오기도 했다. 와.. 뭘 해도 아무 반응이 없었다. java 같은 경우에는 그래도 에러 메시지라도 보여주는데, CSS는 정말 매일 같이 고구마 100개를 먹은 것처럼 만들었다. 많은 사람들이 이 부분에서 어려워 한다고 했다. 

 

  그리고 이번 주 수업 때 정렬에 필요한 것들을 하나씩 알게 되면서, "아.. 그래서 내가 아무리 애를 써도 적용이 안됐었구나!" 하고 알게 되었다. 지난 한 주 동안 시간과 노력을 쏟은 것에 비하면 큰 결과물은 없지만, 분명 헛된 노력은 아니었다. 누구에게 자랑스럽게 보이긴 민망하지만, 나의 첫 관리자 페이지를 캡쳐해 본다.  

 

 

정말 보잘것 없지만, 하나씩 만들어가면서 답답한 시간도 많았지만, 내가 생각했던 모양대로 디자인되고, 배치되는 걸 보면서 기쁨을 느끼기도 했다.

 

'일기' 카테고리의 다른 글

2021년 2월 이력서 그리고 면접  (0) 2021.02.12
두 번째 프로젝트를 마친 소회  (0) 2020.12.25
미니 프로젝트를 마친 후의 소회  (0) 2020.11.06

수업이 20년 9 2일부터 시작되었고, 오늘은 10월 31일 토요일이다. 

 

2달이 꼬박 걸렸지만, 9월 내내 온라인으로 강의가 진행되었고, 9월 말에는 추석 연휴가 있었던 걸 감안 한다면, 약 7주 정도의 수업이 진행되었다.

그리고 본격적으로 프로젝트가 진행된 것은 10 5()부터 였던 같다.

추석을 앞두고 프로젝트에 대한 몇번의 조별 회의가 있었지만 당시에는 어떻게 해야 할지에 대한

막연함이 있었기 때문에 주제 선정이나 계획 등이 지지부진했다.

10 초부터 선생님이 자바 AWT 기반으로, 캔버스에 paint 하는 방법, 애니메이션 처리 방법 등을 하나 둘씩 가르쳐 주시면서, 프로젝트에 대한 윤곽이 잡혀져 갔던 같다.

 

프로젝트가 한참 진행될 당시 자바 기본적인 문법이 익숙치 않았기 때문에, 해야할지, 어떻게 만들어 가야할지 많은 애를 먹었다.

 

수업은 오전과 오후로 나뉘어서 오전3시간+1시간(조별스터디), 오후2시간+2시간(조별스터디) 진행되었다.

 

우리 조의 프로젝트 주제는 '신비한 동물도감'이었다.

'프로젝트 기획 동기'에서 밝힌 것처럼, 지선이의 아이디어로부터 시작되었다. 아이에게 한글을 교육할 , 좀더 쉽고 재미있게 가르칠 없을까? 하는 기본적인 생각이었다. 프로젝트가 완성될 즈음에, 우리가 모두 머리를 맞대어 프로그래밍을 한다면, 사람에게, 아이에게 멋진 선물을 있을 것만 같았다.

선물이 돈을 주고 구입한게 아니라, 엄마의 사랑과 정성으로 만들어진 거라면 아이에게 더없는 뜻깊은 선물이 있을 것이다.

 

10 둘째주가 시작되면서 프로젝트의 윤곽이 어느 정도 자리를 잡았다.

인트로 캔버스, 동물도감 캔버스, 게임캔버스1,2 미니맵 캔버스

인트로는 혜영이가 맡았고, 게임은 성현이가 진행하기로 했다

나도 무언가 선택을 해야 시점에서 고민하다가, 왠지 동물도감 캔버스 부분은 기존에 수업에서 배웠던 것을 십분 활용할 있을 같았다. 그리고 가지 기능들이 추가되어야 텐데 그것들은 구현하는 과정에서 차차 추가하면 되었다. 결과적으로 동물도감은 지선이와 내가 맡게 되었다.

 

10 3째주(19) 주간이 시작되면서 페이지에 대한 틀이 하나 둘씩 완성되어 갔는데, 그러나 페이지마다 구현하는 과정에서 크고 작은 어려움들이 많았다.

특히, 내가 가장 어려움을 느꼈던 것은, 10개의 동물들 중에 하나를 클릭했을 동물의 소리가 재생되며, 사용자 캐릭터의 우측에 옮겨져야 하는 부분이었다.

이것을 구현 하다가 10 17(), 18() 이틀 동안 끙끙 앓았다. 나의 AWT프로그램 일지에도 기록해 놓았지만, 블랙홀에 깊숙이 빠졌던 시간이었다#참고 [해결]동물 클릭한 후 유저 옆에 페인트.

 

나는 24(), 25() 주말 동안 게임 설명 페이지를 맡아서 해보기로 했다. 난이도가 높지는 않았지만, 와중에도 페이지를 다시 그려 넣기 위한 로직들이 필요했다. 처음에는 아주 쉬울 것으로 예상했었는데, 막상 진행해 보니 그리 쉬운건 아니었다.

게임설명을 만들 가장 기뻤던 것은 페이징 처리를 하는 로직을 완성했을 였다. 물론, 이미지를 가져오고, 그리는 작업도 중간 중간 진척이 더뎠지만, 그러나 로직을 작성할 머릿속에서 "이렇게 하면 되겠지?"라는 생각을 하고 작성했는데 실행해 보니 정말 그렇게 실행이 되었다. 분명, 난이도가 쉬운 것임에는 분명하지만 개인적으로 나의 사기를 진작시키기에는 충분했다.

 

이제 프로젝트가 있는 마지막 주간이 시작되었다.

페이지마다 어느 정도 완성되어진 모습들이 보였다. 주간에는 각자가 구현한 것들을 성현이가 취합해서 하나의 프로젝트로 만드는 작업들을 진행했고, 캔버스마다 다른 소리를 재생하는 문제, 코드를 합쳤을 발생하는 문제 등등을 하나씩 해결해갔다. 프로젝트 기간을 앞두고 초를 다투는 시간에 쫒기지 않고, 예정대로 모든 일들을 진행할 있었다. 30()에는 전체적으로 코드를 정리하고, 발표를 위한 PPT 준비했고, 성현이의 주도로 동물의 인덱스를 파일로 저장하여 처리하는 것과 다시 불러올 인덱스가 저장된 파일을 불러오는 로직을 추가하였다.

 

이번 프로젝트를 진행하면서 확실히 느낀건

다른 조에게도 느꼈지만, 우리 조의 열정이 뜨거웠다.

물론 각자의 실력이 다르지만 어느 사람도 다른 마음을 품지 않고, 오직 프로젝트에 집중하고 있는 피부로 느껴졌다.

나는 동안 여기에 빠져 살았다.

특히, 10월에는 정말 앞만 보고 달리는 경주마 같았다.

 

학원 - - 저녁 - 복습 프로젝트 준비

사실 이거 외에는 없었다.

내가 보지 못한 예능 프로그램 에피소드가 하나둘씩 쌓이기 시작했고, 운동도 가지 못할 때가 많아졌다.

생활과 일상이 매우 단순해졌다.

 

나는 프로젝트를 진행하면서 조원들의 도움을 가장 많이 받았다고 생각한다. 나랑 같은 줄에 앉았던 지선의 도움을 많이 받았다. 수업 중에도, 프로젝트 중에도 안되는 것들을 두 사람에게 물어보면서 문제를 하나씩 해결 있었다. 특히, 동물도감을 같이 진행했던 지선이에게도 되도록 폐를 끼치지 않기 위해 부단히 노력했다. 같은 페이지를 만들어도 나보다 실력이 좋았기 때문에 항상 먼저 앞서 나가고 있는게 보였다. 하지만 무작정 가져가는 것보다는 조금은 늦더라도 나혼자 만들어 보는게 좋겠다는 생각이 들어서, 틈틈이 나만의 프로그램을 만들어 갔다. 그리고 성현이에게도 도움을 받았다. 24()에는 장작 6시간 동안 건대 탐탐에서 1:1 과외를 받으며 그간 배워왔던 것들에 대한 부분들을 복습했고, 내가 진행하고 있는 프로젝트에 대한 로직들 중에서 안되는 것들을 도움을 받아 해결 있었다. 그리고 혜영이가 조장으로서 이미지 작업(?) 같은 것들을 도맡아 하려고 하고, 자기가 맡은 부분들을 스스로 해결하려고 하는 모습을 보면서, 나도 그렇게 해야 겠다는 도전을 많이 받았다. 내가 포토샵을 다룰 모르지만, ppt 하기 때문에 이걸로 충분한 작업들을 되도록이면 혜영이에게 미루지 않으려 했다.

 

2달여 동안 나는 무엇을 해왔고, 지금 어디에 서있는지 한번 생각해 본다.

나는 여전히 같은 반에서도 부족한 실력을 갖고 있다고 생각한다.

물론 간극을 줄이기가 쉽지는 않을 것이다. 하지만 노력에는 반드시 보상이 뒤따른다.

 

당신을 영리하고 재능 있게 만드는 것은 노력이며,

실패란, 단지 다음번에 다른 방법을 시도해 볼 수 있도록 하는 보상이다.

- 「프로그래머의 , 멘토에게 묻다」   -

 

나는 책에서 말하는 문구가 좋다.

나를 보더라도 노력이 지속적으로 반복되지만, 결과가 항상 좋지는 않다. 성공보다는 실패의 맛을 때가 많다. 하지만 실패를 이분법적으로 정의할 없는 것은 실패는 실패로 남지 않기 때문이다.

'다음번에 다른 방법을 시도해 있도록 하는 보상'

2달여동안 얼마나 많은 실패를 맛보았나. 아니 인생에서 얼마나 쓰디쓴 실패를 맛보았나. 그러나 실패를 축하하고 싶다. 실패에 감사하고 있다.

앞으로도 나는 많이 실패할지도 모른다. 그러나 거기에 안주하지 않고, 계속 걸어갈 것이다.

'일기' 카테고리의 다른 글

2021년 2월 이력서 그리고 면접  (0) 2021.02.12
두 번째 프로젝트를 마친 소회  (0) 2020.12.25
HTML & CSS 를 정리하다가..  (0) 2020.11.20

당신을 영리하고 재능 있게 만드는 것은 노력이며,

실패란, 단지 다음번에 다른 방법을 시도해 볼 수 있도록 하는 보상이다.


견습생이 된다는 것

"견습과정은 당신이 발전해 가면서 더 나은 방법을 찾아 가는, 그리고 더 좋고 세련되고 빠른 방법을 배우도록 만드는 사람, 회사 혹은 상황을 찾는 상태이자 과정이라고 봅니다.

해답을 건네줄 누군가에게 의존하지 않으며 문제를 해결하는 건설적인 방법을 찾도록 하는 이런 내적인 추진력을 갖는다는 것은 실로 커다란 가치가 있을 것이다. (중략) 그것은 우리가 사람들에게 스스로 해 나갈 수 있도록 채비시켜주는 그런 어떤 것이다. 그러기 위해서 우리는 세련된 겉모습보다 배움에 더 가치를 두고, 도전을 즐기고, 실수를 숙련에 이르는 수단으로 이용하도록 가르친다." p48

잔을 비우다

한 가지의 언어를 깊이 이해하기.

그 언어로 무언가를 만들어 보라.

그 언어를 숙련한 뒤에는 그 언어와 전혀 다른 언어를 배워보기

 

+ Recent posts