About
안녕하세요. 프론트엔드 개발자 김서연입니다.
React.Js와 Next.Js를 다루고 있으며, 사용자에게 편리한 인터페이스, 아름다운 UI 구현을 위해 노력하고 있습니다. 나 혼자가 아닌, 동료분들의 성장을 위해 항상 노력하는 개발자입니다.
개발하면서 알아가는 기쁨을 즐깁니다. 기존에 알지 못했던 원리, 코드, 기능, 효율적인 방법 등을 알게 될 때 성장했다고 느낍니다. 유지 보수하기 좋은 코드, 클린 코드를 할 수 있는 개발자로 성장하고 싶습니다.
블록체인 기술을 이용하고 있는 니아랩스에서 블록체인 개발자로 근무했으며, NFT 마켓, 지갑 시스템을 개발을 진행했습니다. 주로 웹 서비스 개발의 프론트엔드를 담당했으며, 필요에 따라 백엔드 개발에도 참여했습니다.
💼Work Experience.
2021.12 ~ 2023.02
- 니아랩스
- 니아랩스는 블록체인 기술을 활용한 NFT마켓, 지갑 등을 개발하는 기업입니다.
- Project List
- 5M (암호화폐 거래소 알림 서비스)
- NUSEUM (NFT마켓)
- KISS (지갑)
- ATO (P2P 시스템)
- Tech Stack
- Front
- Javascript, React, Next.js, Laravel, CoreUI, HTML5, CSS3, Axios, Redux
- Back
- Laravel, Node.js, MySQL
- Server
- AWS, Nginx
- Front
Skill
📲 Back-end 📲
Laravel
- 기본적인 CRUD가능
- 개발 문서를 참고하여 원하는 기능을 개발할 수 있습니다.
- API 제작 가능
- MVC 패턴에 대해 이해하고 있습니다.
- Telegram API 연동을 하여 기능을 개발한 경험이 있습니다.
Node.Js
- Service worker 기능 개발 경험이 있습니다.
- pm2를 이용하여 데이터를 전송한 경험이 있습니다.
💻 Front-end 💻
HTML5
- 원하는 형태로 레이아웃을 구성하여 나타낼 수 있습니다.
- 웹 표준을 준수하여 불필요한 마크업을 최소화하여 로딩 속도를 향상할 시킬 수 있습니다.
- 웹 호환성에 대해 공부 중이며, 웹 브라우저 버전, 종류와 관계없이 웹 사이트에 접근할 수 있도록 노력하고 있습니다.
CSS3
- 반응형 웹을 구현할 수 있습니다.
- 기본적인 레이아웃 및 애니메이션을 구현할 수 있습니다.
- 부트스트랩 사용 경험이 있습니다.
- 상황에 맞게 적절한 속성과 값을 적용할 수 있습니다.
- CSS 선택자를 유용하게 사용하여 코드를 작성할 수 있습니다.
Javascript
- **AJAX 통신 (서버 측과 클라이언트 측간의 데이터교환**을 할 수 있습니다.
- ES6 이상 문법을 적극적으로 사용합니다.
- Vanilla JS를 이용해 DOM을 조작할 수 있습니다.
React.Js, Next.Js
- 함수형 컴포넌트를 능숙하게 사용할 수 있습니다.
- 효율적인 렌더링 및 재사용 가능 컴포넌트에 관심이 많으며 계속 노력하고 있습니다.
- React hooks를 사용하고, 거의 모든 컴포넌트를 함수로 만듭니다. hook을 이용해 공통 비즈니스 로직을 적절히 모듈화해 사용할 수 있습니다.
Laravel
- 기본적인 CRUD가능
- 개발 문서를 참고하여 원하는 기능을 개발할 수 있습니다.
- API 제작 가능
- MVC 패턴에 대해 이해하고 있습니다.
- Telegram API 연동을 하여 기능을 개발한 경험이 있습니다.
📫 DataBase 📫
MySql
- 기본적인 쿼리문 (INSERT, UPDATE, SELECT, DELETE, WHERE, ORDER BY)을 이용해 데이터 조회 및 수정을 할 수 있습니다.
GitHub / GitLab
- Git flow를 이용한 협업에 익숙합니다.
Slack
- Slack 채널을 이용한 협업에 익숙합니다.
🎓Education
2023.03 ~ 진행중
- 코드스테이츠 블록체인 부트캠프
- Week 1-3
- **웹 개발 기초 기초 개발지식을 활용해 블록체인 서비스 개발에 필요한 Web App을 이루는 흐름을 익힙니다.**
자바스크립트
프로그래밍에 기본이 되는 자바 스크립트를 심화 학습합니다.
프론트엔드
웹 기반 어플리케이션에 기본이 되는 프론트 지식을 학습합니다.
자료구조/알고리즘
프로그래밍의 기본 사고력 향상을 위한 지식을 학습합니다.
- Week 4-7
- **웹 개발 심화 웹 개발에서 필요한 네트워크, 데이터베이스, 인프라 지식을 익히고, 3-tier 아키텍처에 대한 기본을 익힙니다.**
컴퓨터공학
어플리케이션 개발에서 필요로하는 기본 지식을 학습합니다.
네트워크
Rest API 기반의 서버와 클라이언트 구조에 대해 학습합니다.
백엔드
데이터베이스, 서버, 인프라에 대한 백엔드 기본 지식을 학습합니다
- Week 8-10
- **블록체인 이론 블록체인의 이론과 경제, 비지니스에 대해 이해하고, 블록체인 기반 플랫폼과 dApp에 대한 전반적인 지식을 학습합니다.**
블록체인과 암호화폐 이론
블록체인과 암호화폐의 기초 지식을 이론과 경제, 비지니스 레이어로 학습합니다.
블록체인 기술
블록체인 기술 지식을 학습합니다.
스마트 컨트랙트 이론
스마트 컨트랙트 기술의 기초 지식을 학습합니다.
- Week 11-15
- **블록체인 기술 블록체인 기술을 직접 실습해보고 실제로 탈중앙화 어플리케이션(dApp)을 개발해봅니다.**
블록체인 지갑
블록체인 지갑을 사용해보고 개발해봅니다.
스마트 컨트랙트 개발
이더리움 기반 토큰과 NFT를 개발합니다.
dApp 개발
블록체인 기반 DID기술을 활용한 어플리케이션과 블록체인 기반 웹 어플리케이션을 개발합니다.
- Week 16-24
- **프로젝트 블록체인 기반 서비스를 실제로 기획하여 블록체인의 문제점을 해결할 수 있는 팀 단위 프로젝트를 팀 프로젝트 형태로 직접 개발해봅니다.**
NFT기반 어플리케이션
NFT를 활용하여 실제로 사용할 수 있는 프로젝트를 개발합니다.
인센티브 기반 토론 시스템
토큰 이코노미가 포함된 인센티브 기반 토론 시스템을 웹 어플리케이션 dApp으로 개발합니다.
블록체인 사용성 개선 프로젝트
블록체인 기반 서비스를 실제로 사용해보고, 사용자 관점에서의 문제점을 해결 할 수 있는 프로젝트를 진행합니다.
커리어 코칭
본인의 역량을 최대한 보여주고, 취업 성공을 위해 커리어 코칭이 진행됩니다.
- Week 1-3
2023.03 ~ 재학중
- 세종사이버대학교
- 소프트웨어공학과
2021.08 ~ 2021.11
- 웹퍼블리셔 국비과정
- 하이미디어아카데미
- HTML, CSS, Photoshop, Illustrator, Premiere Pro, After Effects Adobe XD를 배웠습니다.
- 다양한 스마트 기기 플랫폼에 적용 가능한 웹 기반의 콘텐츠 서비스를 기획, 분석, 설계, 구현, 테스트, 배포하는 능력을 함양시키는 과정입니다.
2013.03 ~ 2016.02
- 서울아이티고등학교
- 웹디자인과
- Photoshop, Illustrator. 3D, HTML, 기초 디자인 등을 배웠습니다.
🙌Personal statement
🙌Personal statement
관심있는 개발 분야
- 가장 관심 있는 분야는 프론트엔드 개발입니다. 이유는 유저가 서비스 정보를 탐색하고, 이용할 때 가장 먼저 보는 부분을 담당하므로 사이트의 첫인상 맡고 있고 유저와 가장 먼저 맞닿는 영역의 일을 한다는 점에서 다른 개발들과는 달리, 고객/사용자의 반응을 확인하며 즉각적으로 판단하고, 빠르게 대응해야 하는 부분이 매력적으로 느껴졌습니다.
- 두번째로 관심 있는 분야는 블록체인 개발입니다. 탈중앙화를 이용한 정보의 암호화와 분산화를 통해 보안성을 높일 수 있는 장점때문입니다. 위변조가 불가능한 시스템 구조를 갖추고, 정보가 한 곳에 집중되는 게 아닌 각자가 소유할 수 있어 해킹에 대한 불안함이 없어 매우 전망있는 기술이라고 생각합니다.
개발자가 된 계기
- 저는 처음에는 국비 학원에서 웹 퍼블리셔 과정을 배웠습니다. 과정을 학습하면서 코딩에 대해 흥미를 느끼고 내가 짠 코드가 화면에 렌더링 되는 것이 신기하고 재미있었습니다. 배우면 배울수록 매력 있는 분야라고 생각했고 좀 더 배우고 잘하고 싶은 욕심이 생겼습니다. 그래서 백엔드와 프론트엔드를 고민했습니다. 어느 직무가 내가 더 자신 있고 잘하고 배우고 싶은지 고민한 결과 처음의 느낌대로 내가 짠 코드가 화면에 바로 출력이 되고 변화하는 게 재미있었던 만큼 프론트엔드로 전향하기로 결심했습니다.
개발자로서 성장하기 위한 노력
- 저는 0이었던 웹 개발 역량을 지난 1년간의 노력을 통해 프론트엔드 개발자로 한 발짝 다가갈 수 있었습니다. 먼저 니아랩스라는 회사에 취업하게 되면서 처음으로 React, Laravel, PHP를 접하게 되었습니다. 처음 접하다 보니 코드 한 줄을 이해하는 데에도 많은 시간이 걸렸었습니다. 구글에 검색도 많이 하고 주변의 직원분들께 많이 찾아가서 물어보기도 하면서 이해하고 또 습득하려고 했으며, js 또는 php 파일 하나를 열어 해당 코드가 몇 줄이 있는지 상관하지 않고 모든 코드 한 줄마다 주석을 달아가면서 공부했습니다. 하지만 이 방법만으로는 완성도 높은 프로젝트를 개발하기에 어려움이 있었습니다. 이에 저는 부족한 역량을 채우기 위해 회사에 남거나 퇴근을 해서도 개인적으로 늦은 시간까지 강의를 듣고 프로젝트를 처음부터 만들어 보기도 했습니다. 1년동안 백엔드와 프론트엔드 구분 없이 모두 프로젝트에 참여하고 학습하며 웹 개발 역량을 길렀습니다. 더욱이 실무에서 백엔드에도 참여한 경험이 프론트엔드 직무를 진행하는 것에 많은 도움이 되었습니다.
장점과 단점
장점
첫 번째로는 저는 모르는 것에 대한 부끄럼이 없고 새로운 것을 배우는 데에 두려움이 없고 오히려 즐깁니다. 프론트엔드는 늘 새로운 버전이 나오고 프레임워크, 라이브러리가 변화하는데 저는 새로운 것을 배우는 데에 항상 욕심이 있고 그것을 즐기기도 합니다. 그런 면에서도 프론트엔드가 저랑 더 잘 맞는다고 생각이 들었습니다. 새로운 것을 배울 때는 처음에는 무척 어렵고 낯설고 스트레스도 받지만 계속 공부하면서 이내 이해가 되고 처음보다는 능숙하게 사용을 하는 제 모습을 볼 때면 뿌듯함이 느껴집니다. 또한 제가 배운 것을 남들에게 설명해주는 것을 즐깁니다. 상대방이 제가 배운 것을 이미 알고 있다고 하더라도 제가 이해한 것이 맞는지 확인하는 과정이라고 생각합니다. 모르는 것이 있을 때는 이해할 때까지 찾아보며 그런데도 이해하지 못한 경우에는 주변의 사람에게 물어봐서 제 것으로 습득하려고 합니다.
두 번째로는 제가 맡은 일에 대해서는 대충대충 넘어가는 일이 없고 책임감이 투철하며 집요합니다.
제가 맡은 직무는 확실하게 처리하는 것을 좋아합니다. 또한 그게 맞는 일이라고 생각합니다. 다만 제가 맡은 직무를 끝냈다고 바로 해이해지는 것이 아닌 다른 할 일은 없는지 에러는 없는지 수시로 체크하기도 하며 만약 프로젝트가 종료됐을 경우에는 다른 팀원이 헤매고 있을 때 나서서 도와주기도 합니다. 쉽게 말해 일을 만들어서 하는 편입니다. 제 일이 아니더라도 팀원 일을 도와줄 때 데이터가 제대로 출력이 안 되거나 기능 구현이 안 될 때는 늦은 시간까지 남아서라도 해결하려고 노력합니다. 제가 한 번 도와주기로 한 만큼 저에게 다른 프로젝트가 들어오기 전까지 최대한 도와줍니다. 어떤 때에는 본래 해당 직무를 맡은 팀원보다 제가 더 열심히 찾고 집중할 때도 있습니다.
단점
장점에서의 집요함이 때때로 단점으로 발휘될 때도 있습니다.
예를 들어 filter 기능이 제대로 동작하지 않을 때 해당 기능이 될 때까지 물고 늘어지다 보니 다른 기능이 후순위로 밀려날 때가 있습니다. 또한 멀티가 안되기도 합니다. 그러므로 집요한 것은 좋지만 너무 파고들어 우선순위를 생각하지 못할 때가 있어 Notion이나 메모장 등을 이용하여 일의 우선순위를 정해서 문제를 차근차근 해결하도록 노력하고 있습니다.
기억에 남는 개발 프로젝트
- 백엔드를 담당한 5M이라는 프로젝트입니다. 프론트엔드인데 왜 백엔드를 담당했는지에 대해서는 처음에는 회사가 스타트업이고 직원이 많이 있지 않았습니다. 그래서 백엔드도 배우게 되었었는데 학습을 하다 보니 프론트를 좀 더 이해하기 위해서는 백엔드의 지식도 필요하다는 것을 알게 되었습니다. 이후부터는 프론트엔드, 백엔드 가리지 않고 프로젝트에 참여하게 되었습니다. 해당 프로젝트가 가장 기억에 남는 이유는 해당 프로젝트를 진행하면서 프론트에게 어떻게 데이터를 전송하는 것이 좋은지, 반대로 프론트에서 백으로 어떻게 데이터를 전송하는 것이 좋은지 많이 고민할 수 있게 해준 프로젝트이기 때문입니다. 로그인, 회원가입, 검색 기능 등 기본적인 기능을 구현하는 데에도 어떻게 더 효율적으로 API 개발을 하는 것이 좋은지 많이 고민했고 또 프론트 담당 팀원분과도 많이 소통했습니다. 이러한 경험 덕분에 프론트엔드와 백엔드 두 포지션 모두 이해하고 공부하는 것에 많은 도움이 되었습니다.
내가 생각하는 좋은 코드란
- 아직 여러 다양한 경험을 많이 해보지 않아 확고하게 말하기는 어렵지만 좋은 코드란 주관적인 관점이 많이 반영되는 것 같습니다. 내가 생각하기에는 내가 짠 코드가 좋은 코드라고 말할 수도 있습니다. 하지만 다른 사람이 보기에는 좋지 않은 코드라고 할 수도 있습니다. 인터넷에 많이 나와 있는 네이밍, 가독성, 추상화 등 특정 요소가 지켜진다고 다 좋은 코드라고 생각하지는 않습니다. 여러 매체를 통해 접하고 느낀 바로는 일단 차근차근 스텝을 밟아나가는 것이 중요한 것 같습니다. 그저 검색해서 갖고 온 코드가 실행된다고 거기서 끝나는 것이 아닌 왜 실행이 되는지 원리부터 파악하며 그것을 내 것으로 만들고 어떻게 하면 효율적이고 알아보기 쉽게 작성할 수 있는지부터 생각하고 그 코드를 어떠한 이유로 작성했는지 타당한 논리가 있으며 그 이유를 자신 있게 대답할 수 있는 것, 즉 설득력이 있는 코드가 좋은 코드라고 생각합니다.
앞으로 어떤 개발자가 되고 싶은가?
- 첫 번째로는 도태되지 않는 개발자가 되고 싶습니다. 백엔드 개발자도 마찬가지지만 특히 프론트엔드 개발자는 새로운 라이브러리, 모듈, 언어가 생깁니다. 그 트렌드에 뒤처지지 않고 계속해서 배우며 새로운 것을 받아들이는 것이 중요하다고 생각합니다. 또 나이가 들어서도 여전히 공부하고 익힌다면 스스로 하루하루를 뿌듯하게 보내고 있을 저의 모습을 상상하면, 행복회로가 돌아갑니다. 두 번째로는 이력서 제목에 적은 것처럼 유연한 사고를 하는 개발자가 되고 싶습니다. 예외의 상황도 있지만 대부분은 팀 단위로 팀이 꾸려집니다. 그 상황에서 내 고집만 부려서는 좋을 게 없습니다. 지향하는 바와 달라도 일단은 받아들이고 그 후에도 문제가 있다면 그때 이야기를 해보는 것이 스스로에게도 넓은 시각을 가지게 하고, 팀 분위기도 지켜질 수 있을 것 같습니다.