주니어 개발자, 학생을 대상으로 한 컨퍼런스로 다양한 개발자들의 실무 경험을 공유하고 시니어 개발자의 조언을 들을 수 있는 좋은 기회인 것 같다.
GDG(Google Developer Groups)에서 주최하며 Air premia, Mondrian Jnpmd 등의 기업에서 후원하는 컨퍼런스로 개발자들이 모여 경험을 공유하고 발표하는 것을 들을 수 있다.
총 5시간이며 이렇게 시간대 별로 원하는 주제의 발표를 선택하여 들을 수 있다.
(개인적인 생각을 포함하여 요약한 내용입니다)
1교시 - 시니어가 말하는 성장할 것 같은 주니어의 특징
스킬 (skill)
글쓰기/블로그
> 전문성, 꾸준한 학습, 네트워킹, 취업 등 이득
> 마크다운(플랫폼 옮기기 편함), seo, 꾸준히 작성
문제해결 능력
> 클아이언트 요구 파악
> 시장, 고객, 회사 (무엇을 원하는지 알아야됨)
태도 (Attitude)
지속적인 학습과 성장
> 새로운 기술/변화 꾸준히 공부
> 나만의 학습 루틴 (스터디 등)
> 동기부여 (보상, 주변 인물)
협업 (collaboration)
소통 방식
> 인사말과 배경, 본문을 포함하여 짧고 간결하게 소통 (상대방의 시간도 소중한 것을 알아야 한다.)
피드백 수용
> “내 코드에 대한 공격은 나에 대한 공격으로 간주한다”
> 피드백 (과거의 행동 및 결과, 반성과 조언)
> 피드포워드 (미래의 행동 및 전략, 조언과 개선)
> 무조건 수용 할 필요는 없지만 (2명 이상한테 들었는가?, 반복해서 같은 이야기를 들었는가?, 신뢰힐 수 있는 이가 말하는가?)
자기 반성과 회고
> 업무일지 작성 (오늘 배운것, 힘든 사건 등을 정리하여두면 평가기간에 유용하게 사용)
> 회고 Tool : KPI 작성 (유지, 문제, 개선)
느낀점: 이미 아는 내용들이라 복습하는 느낌으로 잘 들었다.
2교시 - 요구사항부터 배포까지 SDLC 전체 주기 느껴보기
SDLC (Software Development Life Cycle)
SDLC는 왜 필요할까?
> 개발 생산성 향상, 비용 절감 등
SDLC 모형
> 폭포수, 프로토타입, 나선형, 애자일 (보통 애자일 많이 사용함.. 우리 회사도)
1.요구사항 분석
> 고객사, VOC 등 경로 요구사항 수집
> PO/PM이 수집한 요구사항 분석
> 개발 방향, 가능 여부 판단
- 정말 필요한 기능인가? (고객이 정말 필요한게 무엇인지 파악)
- 기존 기능에 영향도는 얼마나 있을까? (관련된 데이터, 기능들은 어떻게 처리할껀지 등)
- 기술적으로 가능할까?
2.요구사항 명세
> 기능 설계
> 화면 설계
3.설계 - 개발자의 영역
> 하위 호환성을 지켜서 설계 (프론트 캐시 등의 이슈로 문제가 될 수 있음.. 기존 버전 고려)
> 추가 요구사항 대응하여 확장 가능한 설계(유연성)
> 대용량 데이터 처리 시 성능 고려 (엑셀 import 기능이 느린 문제 발생 - serverless환경은 15분 타임아웃 발생..) - 엑셀 row 별로 쪼개서 각각 처리 후 task로 전체 처리상태 확인
4.구현
> 변수명, 함수명 가독성 있게
> 적절한 자료구조와 알고리즘 (개발 기간이 중요하지만 시간/공간 복잡도 고려해보자)
> BE는 Indexing, Locking, Transaction 등
> 사용하는 쿼리 빈도 (where, order by, group by) 등에 따라 적절한 index 필요.. *Analyze 붙이면 됨
5.테스트
> 개발자 테스트 (Test code)
> 품질 테스트 (Qa, Qc)
6.배포
> 빌드하면 끝..? MSA라면 여러 모듈을 고려해야 한다
> 앱 버전 별 수정사항이 안 맞을 수도 있고 등등.. 버전, 환경 등을 잘 고려해야 한다
7.유지보수
> 코드 에러 (크리티컬한 에러면 Hotfix로 바로 배포, 보통 다음 버전에 반영)
> 스프린크 회고 (일정 산정, 지연 이유 파악)
느낀점: 발표자 분과 비슷한 규모의 기업에서 일하고 있어서 발표 내용이 공감도 많이 되고 재밌게 들었다.
3교시 - 코드리뷰문화 가볍게 경험하기
학생 코드 리뷰
> 일정 준수, 지식 부족 등으로 인해 코드리뷰 x
> 외부 문서(라이브러리 등)을 이해 없이 자유롭게 가져와 동작만 시킴
> 코드리뷰 안하면.. (스파게티 코드, 유지보수/기능 고도화 어려움, 오류 tracking 어려움)
주니어 코드 리뷰
> 일정 준수는 필수!
> 문제 해결을 위한 지식 부족 (그룹 스터디 등으로 보완)
협업을 위한 코드
> 스파게티 코드의 가능성 제거
> 유지보수 용이 (다른 팀원들도 코드를 봐야함)
코드리뷰 사항
> 데이터베이스 스키마, api설계, 아키텍쳐
> 성능, 자료구조, 비즈니스 로직
> 버그 발생 가능성
> 개발자의 실수/누락
> History 기반 코드 규칙, 정렬 등
코드리뷰 장애물
> 시간 부족, 일정 지연, 리뷰의 부담스러움 등
장애 해소
> 시간 할당, 구조 리뷰, PR본문 활용, PR분리, 편의 개선
> 질문하기, 지식 전파, 배움의 과정 (사진 첨부)
> 리뷰 스타일, Rule적용(심각부터, 사소한 의견까지 등급별로 리뷰 작성)
고무오리 코드리뷰 (디버깅)
> 내가 예전에 작성했던 코드 history를 까보며 리뷰해보자..
느낀점: 쉬운 내용이었지만 내가 다니는 회사는 코드 리뷰가 거의 없어서 궁금했던 부분이라 잘 들었다
4교시 - NPM 속 보물찾기: 오픈소스로 공부하자!
전통 검색
> AI에게 물어보기, 프로덕트 비교 등
NPM 트렌드
> 패키지별 다운로드 수, 마지막 업데이트 날짜
> 패키지(라이브러리)를 검색하면 비슷한 패키지 들을 볼 수 있음
> 패키지 다운로드 수로 표준 패키지나 트렌드 현황 등 파악 가능
> 실제 유행 패키지와 실무에서 사용하는건 다를 수 있음
의존성 살펴보기
> pm2: 프로세스 매니저
> pm2 -> blassed (Cli Interface library)
> pm2 -> chokidar (watch 기능을 가진 대부분의 라이브러리에서 사용)
*pm2는 여러 라이브러리의 의존성을 가져와 사용하는 것이기 때문에 가볍게 필요하다면 직접 chokidar를 가져와 사용해보자..
> 좋아하는 개발자의 Github 구독해두면 Github timeline에서 현황 확인 가능
> globby (Glob 패턴 처리 라이브러리)
*실제 기능 구햔 위주로 보고싶다면 micromatch, 편의를 위한 추상화를 보고싶다면 globby 보쟈
> 프로젝트의 의존성을 파악하면 이해하기 쉽다
겁먹지 말자
> 언어를 사용하면 사용할수록 익숙해지듯 코드도 보면 볼수록 익숙해진다
> 문서 확인도 필수 - *Can I use (News)
기능 단위로 코드 찾기
> 알고있는 모든 힌트(문자열, class, property 등)를 검색해보자
> 의존성(import)을 타고 들어가서 찾아보자
*Adapter 등의 이름들이 반복해서 나온다면 디자인 패턴이니 잘 봐두자
*다른 언어의 동일한 패키지도 살펴보자..(서버사이드 언어 한정) 언어별로 패키지(라이브러리) 완성도가 다를 수 있다
*다른 언어들의 코드들을 가져와서 클론코드 하쟈
(ex: node.js -> java)
결론 - 탐색하기 > 분석하기 > 비교하기 계속 하자
느낀점: 확실히 시니어 웹개발자 분이라 아는 것도 많고 도움이 된 것 같다
5교시 - 잡식성 개발자에서 주니어 개발자
잡식성 개발 (잡부)
> 물경력 or 커리아가 꼬일 수 있다
“전략적 잡식성”이 필요하다
> 주관적) 이정표를 보며 중간 점검 필요
> 객관적) 내 경력들이 시장성이 있는가?
커리어 점검
> 주기적인 이력서 업데이트 (마지막 업데이트 후 한 일 들의 성과를 구체적인 숫자로 표현 가능한가?)
나의 역량과 시장 수요 확인
> JD들을 확인해보자, JD들의 키워드를 확인하며 나의 역량과 비교
조급해 하지 말자
> 불안감은 연차/경력과 상관없이 모두가 가지고 있으니 너무 걱정하지 말자
> 의미 없는 경험은 없으니 다양한 경험을 해보자
느낀점: 항상 커리어에 대해 고민하고 있었는데 너무 조급해 하지 말고 천천히 발전해 나가자
주니어 개발자, 학생 대상이라 그런지 대단한 내용은 없었다.. 하지만 학생이라면 현직 개발자들의 이야기를 들을 수 있는 좋은 경험이 될 것 같다.
- 끝 -
'🗺️ Conference' 카테고리의 다른 글
[Conference] eGISEC 2024 (전자정부 정보보호 솔루션 페어) (0) | 2024.03.31 |
---|