관리 메뉴

A seeker after truth

한빛미디어 주니어 공감 세미나 2019.6.29 토 본문

the way about me/행사 참여 및 특강

한빛미디어 주니어 공감 세미나 2019.6.29 토

dr.meteor 2019. 10. 24. 20:52

[1 - 신입 개발자가 되려면 커뮤니티를 찾아보자!]

일단 개발을 업으로 할건지 취미로 할건지 그걸 생각해 볼 것

1.     개발자 하려면 어느 정도의 코딩 실력이 필요한가요?

2.     팀플 경험 없이 개인 플젝 경험만으로도 충분?

 

일반 언어로 개발 -> 컨테이너 -> 인공지능 데이터 클라우드 기반으로 개발.

클라우드 기반 개발은 엔지니어링에 대한 이해가 있어야….

언어는 초반에는 일단 하나만 잘하면 된다

Ex: 원래 자바였다가 닷넷으로 개발을 한다? – 회사에서 다시 교육을 시킨다. 하나만 제대로 하면 된단 뜻. 의미가 없다. 경험상.

 

 

[2 – 초보가 프로그램을 만드는 방법]

1.     프로그램 구상

너무 원대하다. 만들고 싶은 프로그램.

수정 사항 겁나 많이 나온다.

최소 규모로 구상한 뒤 추가하고 싶은 사항은 따로 써둔다

다른 사람이 많이 한 프로젝트 중 자신이 흥미가 생기는 플젝 찾는다

내가 하고 싶은 플젝 예시 코드가 깃허브에 있는지 찾는다

참고할 코드가 많아야 한다

요구 사항 기술서 간단히 작성.//버릇 들이면 좋다

나중에 이 기능 빠졌는지 안빠졌는지 확인할 수 있

2.     구현에 필요한 언어 공부

필요한 언어와 작업 환경 찾아보고 확습

만약 이걸 모른다?

코드부터 읽고 이해가 안되는 부분 체크하고 강의듣고 질문하고 키워드 정리하고 관련 문제 풀어봄

 

3.     구현

설계대로 일단 코드 짠다. / 막힌다 또는 에러가 난다 / 구글, 다른 코드, 커뮤니티

내가 필요한 기능은 대부분 이미 구현되어 있다

How to / what is , 최소 키워드로 검색

 

 

 

[3 – 문서화에 대한 이야기]

1.     문서화란 무엇인가

요구 화면 사전 엔티티 프로세스 목록 에 대해 문서가 필요하다

화면 정의서: 유저에게 보여질 화면

엔티티/테이블 정의서는 데베와 관련된 것

안에 있는 엔티티들끼리 어떤 관계/위치에 있는지 알려주는 것이 테이블 정의서

프로세스는 레시피

 

 

[4 – 문서화 된걸로 뭘 했나]

협업 능력은 어필 안하면서 실력만 강조하는 지원자는 좋아하지 않는다.

 

 

[5 – 기초 공사 없이 탑을 쌓으면 안되는 이유]

JSPMVC 패턴 이용해서 게시판 구현

 

 

[6 – 웹 개발자가 하는 일]

JBOSS USER GROUP: 오픈 소스 커뮤니티

KBSYS

회사마다 용어가 다르다, 분위기를 반드시 읽게 만드는 분위기(선배들은 너무 바빠서 가르쳐 줄 여유가 없음. 그래서 알아서 배워야 함)

문서가 대부분 없음

10분 내로 고민해도 답이 안 나오면 질문하자

 

보통 가장 처음에 받는 피드백은 기본이 안된다

개발 문화 차이 때문에, 어디까지가 내가 눈치로 알아야 하는 부분인지 알 수가 없다.

예를 들면 git을 ㅔㅈ대로 이해하지 못했다, url에 링크를 왜 걸지 않았느냐와 같은

그런데 위 일은 사실 기본이라고 한다. (url 부분)

오픈그래프: 간단한 정보가 뜨는 것. 카카오톡에 url 걸면 나오는 거

일단 기본으로 해놓고 빼라고 하면 빼는 게 기본 신상에 이롭고 살아남을 수 있음

오픈 그래프로 구현하는 것이 굉장히 쉽다. 반면 웹에서 구현하는 것은 쉽지 않다

그래서 보통 서버 API로 구현한다

사실 이것도 어려워서…. 그러고 나면

오픈 그래프 백엔드 API 개발 연동

웹서버 띄우기

도커 이미지로 실행

젠킨스 연동…. 파이프라인 구축

이 정도 알아야 요즘 백엔드 개발할 수 있음

엔진엑스 오픈그래프 깃헙 깃랩…. 이런 것들 지식 꼭 알아야 함

이걸 책으로 배우면 끝도 없어서그냥 가서 배울 것이라고 생각하고 즐겨야만 한다

 

 

많이 하는 실수가, “나는 할 수 있어!”류의 착각. 주의하자. 내가 어디까지 할 수 있는지를 알아야만 한다! 내가 다 할 수 있을 것처럼 생각하면, 내가 하기 힘든 일들이 오며, 감당하기 힘들어짐. 자존감 많이 내려감

주의사항 2. 끝이 아닌 새로운 시작. 끝이라고 생각해버리면 관리직으로 가게 된다.

윗 사람들도 많이 말하는데, 쿼리만 하는 사람들도 많고, 플젝 업무 하는 사람이 있고, 기술적으로 개발 계속 하는 사람들도 있는데..

뭐가 옳다 나쁘다 이런 건 없지만 개발자로 계속 살고 싶음 끝은 없는 거다.

6개월 정도만 아무것도 안해도 어느새 뒤쳐져 있음 항상 긴장하고 있어야.

이건 모든 직업이 마찬가지요.

 

살아남는 방법

1.     내가 못하는 걸 주변에 널리 알리라

내가 얼만큼 못하는지 주변에 알려줘야 그만큼 피드백이 잘 돌아온다.

회사에서는 신입사원 = 못하는. 그냥 공식. 그래서 선배들은 리드하고 싶은 준비, 욕망이 있으며

그 속에 우리가 들어가는 것이므로

그렇게 일정을 적어도 시간, 일 단위로 좁혀서 구체적으로, 실행 가능한 계획으로.

그렇게 안하면 죄송해요. 다음주까지 할게요이런 식으로 되어 버림

2.     3. 번임. 유산소 운동 많이 해서 체력 많이. 근력이라기보단 이거라는데, 근력과 절대 무관하지 않을 것 같은데...

여기까지 말한 것만 실천해도 신입은 약간벗어날 수도….

디지털 트윈 대화형 시스템 메시 앱 및 서비스

클라우드에서 엣지로 / 몰입 경험/ 스마트 공간….

디지털 트윈: 현실세계로 있는 뭔가를 가상 세계로 갖고 오는 것을 말한다

슬랙 같은 메신저 시스템을 생각해보자. 메신저 시스템을 소통으로 생각하고 있는 세상.

현실세계의 소통이 디지털로 넘어왔다. 예전에는 그렇게 쓰지 않았지만

어플리케이션뿐 아니라 업무 프로세스도 그렇게 되고 있다

이젠 가상 세계에서 현실세계에 준하는 만큼 그 과정들이 구현되고 있는 상황

지금까지 갖고 있던 결제 시스템은, 결제될 때까지 나는 기다려야 했다.

이제는 리얼 월드처럼 뭐 보는 즉시 결제를 할 수 있다던가그런.

인공지능도 사실 현실 세계로 갖고 들어오는 방법론 중 하나. 챗봇 역시 그러하고

현재는 핀테크/ 위주 스타트업들에 투자가 많이 이뤄지고 있. 그리고 자동차 산업.

퍼센테지가 많이 열리지 않은 것들은

데복스는 젠킨스와 깃을 잘하는 것과 같은 말. 그냥 많이 하다 보면 그렇게 되는

글고 데브옵스는 곧

국비 학원에서는 아직도 JSP를 쓴다. 그러나 요즘 산업에서는 이를 쓰지 않음. 그냥 기초 다지는 용. 지금의 트렌드는 당연히 컨테이너 환경! 가상머신과 비교되는 개념

자사 서비스를 컨테이너화 시킨 기업들은 점점 많아지고 있다

컨테이너 라이징되는 서비스는 점점 많아지고 있다

모바일 폰에서 돌아가는 앱들은 대부분 다 ASP. 화면 전환 없이 모든 기능들이 돌아가게 만들어져 있음. 웹은 아직 그런 서비스가 많지 않다. 웹은 태생적으로 그럴 수 없었지만 이젠 바뀌고 있다.

텐서플로 리액트 파이토치 노드제이에스 넷코어 스파크 스프링 장고 앵귤러 하둡 자마린 코르도바 순서

ASP를 구현할 수 있는 여러 언어는 자스, 뷰 앵귤러 리액트. 이렇게 있음. 그러나 트렌드로 보면 리액트가 1. 뷰가 더 쉽다는 의견도 많고최근 깃헙 보면 뷰가 더 좋단 사람도 많고. Mpm 모듈이 굉장히 많은데…. 그게 리액트 뷰 앵귤러. 다운로드 수로 봐도 리액트가 넘사.

파이썬은 라이브러리가 많은 것이 아닌 모듈이 크다? Repository가 크다

 

 

[슬기로운 인턴 생활 행사]

어떤 역량을 가져야 신입 개발자로 뽑힐수 있느냐는 질문을 받아서 여기에 댓글로 제 생각을 정리해봅니다.

 

신입기준으로는 당장 쓸 구체적인 응용기술을 아는 것도 당연히 선택을 받는데 도움이 됩니다.

실무자들이 면접을 볼때 같이 나눌수 있는 이야기가 많아지기 때문입니다.

특히 신입이라도 당장 와서 일할수 있는 사람을  찾는 조직에서는 실무기술을 가급적 많이 아는 사람을 선호할듯합니다.

그런데 실무 기술을 써본 경험이 있어도 그 기술에 대해 자세히 설명할수 없다면 오히려 경험 안했다고 이야기하는 것보다 더 부정적인 영향을 미칠수 있습니다.

예를 들면 Java DB를 쓰는 개발을 해봤다고했는데 그게 MyBatis를 썼는지 JPA를 썼는지도 모르는 경우입니다.

반면 잠깐 써보고 아직 깊이 모르는 기술이라도 구체적인 이야기를 체계적으로 할 수 있다면 더 긍적적인 요인이 됩니다.

예를 들어 MyBatis를 처음 썼는데 어떤 상황이 어려웠고, 알고보니 MyBatis의 어떤 특성 때문이였고, 이를 어떻게 해결했는지 등에 대한 구체적인 이야기를 하는 사람이면, '이 사람은 쓰는 기술에 대해서 제대로 파악을 하려고 했구나'를 느낄수 있습니다. 그런 사람이면 MyBatis를 당장 안 쓰고 JPA를 쓰는 프로젝트에라도 바로 적응할수 있겠구나  하는 느낌을 줍니다.

 

신입 개발자를 채용할때는 현재 할 수 있는 일이 얼마나 되는지를 넘어서 앞으로 얼마나 발전가능성이 있는지에 더 중점을 둬야된다고 생각합니다. 면접관 입장에서는 자신이 잘 아는 기술을 단편적으로 물어보는것에 그치지 않고 사람이 가진 학습 능력, 학습 의지 등을 파악해야하는데, 당연히 쉬운 일은 아닙니다.

지원자 입장에서는  성장가능성을 표현할수 있는 방법은 여러가지일 것 같습니다.

위와 같이 실무에서 쓰는 이미 잘 알고 있고, 그걸 학습해온 과정을 잘 설명하는 것도 하나의 방법입니다.

학교에서 한 팀 프로젝트라도 남 다르게 한 면이 있다면 실무기술을 잘 몰라도 충분히 앞으로 성장 가능성을 보여줄수 있다고 생각합니다.

코딩 테스트에서 문제를 센스있게 파악한다던지, 유창하고 거침없이 코딩을 할 수 있는것도 자신을 잘 드러낼수 있는 방법입니다.

 

글을 쓰다보니 '신입개발자로 지원할 때는 자신이 앞으로 빠른 속도로 발전할수 있다는 가능성을 보여주는 것이 중요한데 실무에서 쓰는 기술을 일부 아는 것은 그 방법 중의 하나이다. 그러나 유일한 방법은 아니다.'  정도로 제 생각은 정리가되네요.

글을 쓰다보니 몇 년 전의 어느 인턴 지원자의 면접이 기억납니다.

Linux 커널에 관심이 많은 학생이였는데, 사실 제가 인턴의 업무로 염두에 두었던 분야는 그쪽은 아니였습니다.

코딩 테스트도 제가 계획한 둔 인턴 과제에서는 쓰지 않을 C++로 하기도했습니다.

당시에 엄격한 기준으로 채점을 하는 시스템을 이용해서 코딩 테스트를 했는데, 그 시스템의 판정으로는 그 학생은 문제를 통과하지 못했습니다. 그렇지만 거의 답에 근접한 방식으로 코딩을 했고, 무엇보다 유창하고 거침없이 코딩을 하는 모습이 인상적이였습니다.

하나의 방법이 잘 안되자 그 다음 생각나는 아이디어를 바로 빠르게 타이핑 해나갔습니다.

저는 그 학생을 합격시키고, 연관된 업무가 있을만한 다른 프로젝트 쪽에 추천을 드렸습니다.

인턴을 거쳐서 그 학생은 최종 입사를 했습니다.

그런데 처음 그 신입사원이 했던 분야는 그 학생이 깊게 팠던 Linux 커널등과 관련된 분야는 아니였습니다.

Java웹개발과 JavaScript Angular.js FE개발까지 했던것으로 알고 있습니다.

그때의 인턴은 몇년이 지나서 Linux 커널에 코드 기여를하고 Deview 2018 [대형 컨테이너 클러스터에서의 고가용성](https://deview.kr/2018/schedule/268) 라는 발표를 하기도했습니다. 그 발표를 두고 어떤 분들은 DEVIEW 2018의 최고의 발표라고도 말씀을 하셨듯습니다.

 

신입 개발자가 당장 실무에서 쓰는 기술을 알아야하는 채용이 되는 것은 아니라는 예로 위의 사례를 봐주셨으면 합니다. 그리고 그 인재가 가진 역량이 당장은 아니더라도  장기적으로 발휘될 것이라는 믿음으로 신입사원을 바라보기도 합니다.