작은 따옴표 안의 글을 해당 아티클을 직접 인용한 부분입니다.
프론트엔드 개발
Javascript에서도 SOLID 원칙이 통할까?
취준생 시절, 면접을 봤는데 'SOLID 원칙에 대해서 설명해보라'라는 질문을 받은 적이 있다. 그때 SOLID 원칙이라는 것을 들어본 적도 없었고, 그 후에 찾아보려고 했지만 어려워 보였고 자바 예제가 많이 나와서 ㅇㅁㅇ...했던 적이 있다.
면접에서 충격을 받았던 SOLID... 이제라도 알고 싶어서 읽어봤다!
- SOLID 원칙 : 객체 지향 프로그래밍 및 설계의 기본 원칙 5가지의 첫 문자를 따서 만든 말.
- 왜 원칙이 필요한가? 코드 변경에 유연한, 좋은 구조를 가진 코드를 작성하기 위해서
- SOLID 원칙은 객체 지향 프로그래밍 원칙인데, 함수형에 적용 가능한가? => 필자가 SOLID 원칙이 지향하는 바를 JS, TS 기준으로 재해석한다.
- S(Single responsibility = 단일 책임) : 하나의 함수는 한 역할만 하자.
- O(Open Closed = 개방, 폐쇄) : 새로운 기능 추가할 때 기존 코드 수정하지 않아도 되고, 내부 매커니즘이 바뀌어도 쓰는 곳에서 수정이 없어도 된다.
- L(리스코프 치환) : 하위 타입에서 상속받은 상위 타입에서 정의한 조건을 맞추지 못하면 상속받지 말아야 한다. -> 상속을 기반으로 해서 함수형에서는 적용하기 어려움. 먼저 선언한 게 나중 선언한 것과 충돌나면 안된다-> 무한 루프 만들지 말자고고 생각하면 됨.
- I(Interface segregation = 인터페이스 분리) : 인터페이스를 작게 유지하기
- D(Dependency inversion = 의존관계 역전) : 상위 레벨 모듈이 하위 레벨의 세세한 구현 사항에 의존하면 안된다. (뜨끔했던 예시로.. 컴포넌트에서 바로 axios를 호출하는 예시가 있었다.ㅠ.. 요즘 고치고 있어요...)
개발
코드 재사용성을 결정하기 전 고려해야 할 것들
- 재사용 컴포넌트 : 재사용을 할 수 있게 하는 구성 요소
- 재사용이란?
- 처음 설계와 다른 목적으로 코드를 사용하는 것(기존 시스템에 기능을 수정, 추가하여 기존 시스템을 사용)
- <-> 재사용성 (기존 시스템을 그대로 사용)
- 부정적 영향
- 복잡성, 구현 시간 증가 등
- 재사용에 관련된 질문들
- 1. 재사용할 기능이 있다는 것, 어디에 있는지, 특성이 어떤지, 어떻게 접근할 수 있는지 -> 기능, 문서가 위치하는 곳 표준화 / 메타 데이터 표준화/ 메타 데이터 검색
- 2. 사용 가능한지
- 3. 사용하게 된 이유
- 4. 계속 사용하는 게 좋은지
- 특정 상황에서 재사용하는 게 좋은지 경제적 측면에서 생각해보기
- 재사용 덕분에 절약된 비용이 재사용할 수 있는 기능을 만들고 유지 관리하는 비용보다 크면 재사용하자!
- (정확한 비용을 추정하기는 어렵다고 하면서, 시나리오를 소개한다.)
- 재사용하는 게 좋은 경우
- 중복 코드가 있고, 중복을 피할 방법을 찾았을 때
- 로직이 복잡하고 전문화되어 있을 때
- 비즈니스 로직이 자주 변경되고, 여러 곳에서 같은 걸 변경해야 할 때
- 재사용하지 않는 게 좋은 경우
- 막연하게 나중에 필요할 것 같을 때
- 사용하는 곳이 별로 없을 때
- 새롭게 만드는 게 쉽고 빠를 때
- 커뮤니케이션 비용이 너무 많이 들 때
기술 전반
ChatGPT, 그 이후
- chatGTP 는 자연어 처리 모델. 주제 상관 없이 대화 가능 / 사전 학습된 트랜스 포머 기반
- 기존 자연어 모델과의 차이점 : 대화형으로 질문을 할 수 있음, 대화 내용, 맥락을 기억, 잘못된 정보(코드 버그 포함)를 지적
- 어떻게 가능한가? 얼마나 사람 같은지 피드백을 통한 강화 학습을 해서!
- 미래
- 검색 : 검색하면 여러 사이트를 띄워주는 게 아니라, 하나의 결과를 준다.
- 일 : 생산성 툴에 적용, 사람을 도와줌(chatGPT는 잘못된 정보를 제공할 수도 있음. 초안을 작성하는 역할)
ChatGPT 등장 후 우리에게 일어난 일들
- 정보의 양 급증, 정보를 전보다 완성도 있게 짜집기해서 내 것처럼 가공 가공 -> 판단력 중요
- 다양한 활용
- 영어 공부
- 틀, 밑그림 맡기기
- 기업들
- 마이크로소프트 - 빙에 ai 연결
- google - Bard
- gpt 모델을 활용한 서비스들이 많이 등장할 것
- ai에게 전부 맡기면 본인 능력 발전의 기회가 축소될 수 있음
Chat GPT한테 코드리뷰 시켰습니다.. (feat. Github Action)
github action을 이용해서 chat gpt에게 코드 리뷰를 받는 방법에 대한 글이다.
상세한 설명이 있고, 재미있게 설명해주셔서 좋다 :)
나도 적용해봐야지~!!!
GPT-4 드디어 등.장. 그런데 어라?
- 오픈 AI의 새로운 인공지능 모델 : GPT-4
- 이전 모델에 비해 발전한 점
- 이미지 이해 능력(이미지의 텍스트를 인식, 이해)
- 향상된 지능, 지식
- 더 안전해짐(허용되지 않은 콘텐츠 X, 팩트)
- 반응
- 오픈 소스에 기반한 AI 비즈니스 => 많은 참여, 빠르게 발전 / 돈 벌 기회 찾기 어려움
- 오픈 AI의 API에 기반한 AI 비즈니스 => 오픈 AI 자체와 경쟁
- AI 비즈니스의 미래?
- 초거대 AI 회사와 클라우드 회사가 대부분 이익을 가져갈 것
- 아니면 모든 것을 장악한 회사 (예- 로봇 자체, 로봇에 필요한 AI, 필요한 데이터 등을 전부 만드는 회사)
- AI를 이용해서 아주 아주 좋은 서비스를 만드는 것
그 많은 OTT 콘텐츠는 어떻게 웹에서 재생될 수 있을까?
- 저작권이 있는 OTT 콘텐츠를 웹에서 보여주면, 개발자 도구를 열어서 URL을 가지고 유포하지 않을까? 어떻게 그걸 막을까? 라는 질문을 던지면서 시작한다. 도입부를 읽자마자 궁금해져서 글을 읽었다. 조금 어렵지만 그림이 있어서 이해를 돕는다.
- DRM(Digital Rights Management) 에 의해 보호받는 콘텐츠 보호해야 함
- 복잡한 기술 필요
- 여러 이해 관계자
- 보안 수준
- '복호화가 믿을 수 있는 환경에서 이뤄졌는가'
- 콘텐츠 재생 환경(하드웨어 / 복호화 소프트웨어 등)마다 다름
- CDM(Content Decryption Module) - DRM이 적용된 콘텐츠를 복호화하는 모듈
- 하드웨어, 소프트웨어 가능.
- 웹 브라우저에는 이 소프트웨어에 내장됨. (구글, 마이크로소프트, 애플에서 각각 CDM을 만들고, 운영체제, 브라우저에서 사용)
- EME(Encrypted Media Extensions)
- 웹 어플리케이션 단계에서 사용하는 CDM api 인터페이스 표준
커리어/ 개발 문화
면접을 앞둔 개발자 지망생에게
- 특정 회사, 특정 포지션을 고집하면 안됨. 하고 싶은 일이 있어서 지원해야 함.
- 이력서 - 회사에 최적화시켜야 함.
- 코테 : 따로 준비해야 함.
- 인터뷰 : 기술 인터뷰, 문화 인터뷰 각각 준비하기.
- 관련된 책, 온라인 강의 참고하기.
- 필자의 채용 기준
- 똑똑한 사람(학습 능력)
- 부지런한 사람(협업)
- 착한 사람(배려, 인성)
- 이직 사유의 모범 답안 : 서비스, 기술에 흥미 보이기
- 개발자로 성공하려면 ? 재능, 노력, 기회
- '재능도 없고, 노력도 안 하는데 기회가 온다면, 그건 기회가 아니고 저주입니다.'라는 말이 있는데 무서우면서 자극이 됐다....!
흔한 개발자의 시간관리 연대기
- 수면 루틴 지키기
- 변수가 별로 없는 시간대에 데일리 루틴을 수행하기(야근, 약속 등으로 데일리 루틴이 자꾸 깨지면 동기를 잃는다.)
- 루틴을 단순화하자
- 강한 패널티를 스스로 부여하면 초기에 루틴을 잡기 쉽다.
- 함께 하기!
데일리 스탠드업 시니어처럼 잘 활용하기
- 데일리 스탠드업의 필요성 : 매니저, 팀에게 솔직하게 업무 진행 상태를 공유해야 한다!!! 이를 통해서 팀 내에서 좋은 영향력, 신뢰를 쌓을 수 있고, 막히는 부분을 같이 해결할 수 있다.
- 무슨 말을 하나? 어제 무엇을 했는지, 오늘 뭘 할건지, 막히는 부분이 있는지 (꼭 PR을 올려야 하는 것 아님. 업무 파악을 했다, 필요한 공부를 했다고 말해도 됨 / 내가 해결할 수 없는 부분은 구체적, 직접적으로 도움을 요청하기.
- 팁 !
- 미팅 전 할 말 생각하기 : 한 일, 할 일, 막히는 부분
- 누구나 이해할 수 있게 쉽고 간결하게 이야기하기 / 더 자세한 논의가 필요하면 끝나고 관련된 사람과 이야기하기
- 예기치 않은 일도 공유하기 : 잘되지 않는 상황을 솔직하게 공유하기 (어떤 문제가 생겨서 핫픽스하느라 크게 진척 사항이 없다든지..) ( + 첨언 : 나는 이 부분이 제일 어렵다ㅠㅠ 그런데 진짜 진짜 솔직하게 말하는 게 중요한 것 같다!!! 솔직하게 말하면, 내 탓을 하지 않고 어떻게 그 문제를 해결할지 고민하고 이야기해주시더라..ㅠㅠ 일정을 늦추든, 다른 분의 업무와 바꾸든...)
- 왜 이 업무를 하는지, 얼마나 중요한 일인지 이야기하기 (+ 첨언 : 이 포인트는 미처 생각하지 못하고 있었는데, 이 부분을 덧붙이면 더 와닿고 더 공감이 되더라!!)
개발자로 거듭나기⋯ 네 가지 기본 소양을 기억하세요
- 경력 30년의 박종천 개발자님의 조언
- 기본 소양 : 영어, 수학, 물리, 프로그래밍 언어, 자료구조, 알고리즘, 운영체제, 하드웨어, 디자인 패턴 / 빠르게 학습하는 능력이 중요
- 비판적 사고 : 주어진 일만 하는 게 아니라, 앞뒤를 살피고 전체적으로 생각하는 습관(왜, 어떻게, 무엇을, 누가, 언제...) => 성장
- 특정 도구와 사랑에 빠지지 말기. 기술은 빠르게 변하니, 그때 최적의 도구를 선택해야 함. 새로운 기술 익히기.
- 협업을 위해서 자신의 분야 뿐 아니라 전반적으로 알아야 함. T, ㅠ 형 인재.
사수 없이 자라기
- 동료, 사수가 없는 환경에서 일할 때 역량을 키우는 방법에 대해 고민하고 경험한 내용
- 주기적인 피드백
- 블로그 등 인터넷 자료를 통해서 best practice 공부하기 -> 적용
- 외부 교육
- 신뢰 쌓기 & 커뮤니케이션
비전공 독학 백수에서 취업하기
처음 개발을 시작한 것부터, 취준 과정, 공부하고 경험한 것들을 솔직하게 풀어내셔서 좋았다!
테오 스프린트에서 진행한썰 풀어요
저자는 테오 스프린트에 두번 참여한 경험이 있었는데, 거기에서 많이 경험하고 배웠다고 한다. 그래서 테오 스프린트 14기에 진행 보조자로 자원해서 참여하셨는데 그 과정, 느낀 점을 쓰셨다. ㅎㅎ
나는 주로 팔로워 입장이었는데, 스프린트를 leading하는 입장에서 쓰신 글이라서 새로웠다. 나도 언젠가 좀 더 leading하는 때가 올텐데 그때 가서 고민하기 보다, 저자분처럼 재밌고 적극적으로 성장하고 싶다 ㅎㅎ
컴퓨팅 사고와 개발 실력 늘리는 공부법
프론트엔드 시니어 테오님이 쓰신 글이다!! ㅎㅎ
- 학문보다 운동하듯이
- 꾸준히 훈련하기
- 공부와 실전, 훈련을 적절히
- 새로운 경험 -> 넓은 시야
- 협업
- 개발의 본질 이해하기
- 컴퓨터적 사고가 무엇인지에 대해서 다룬다. - 데이터 관점으로 보기
- (예전에 수강했던 컴퓨팅 사고력 수업이 생각났다 ㅎㅎ)
- 직관에 의존하지 말고, 의식적으로 컴퓨터적 사고 훈련하기.
학습훈련 방법! 만들고 싶은 것 정하기 -> 일단 돌아가는 코드 가져오기 -> 어떻게든 돌아가게 하기 -> 내가 원하는 대로 만들기 -> 계속 반복하기~
전에 나는 책, 강의 하나를 처음부터 쭉 공부했다. 그게 공부하는 것 같고(?) 기본이 부족하다고 생각해서 기본을 쌓고 싶었기 때문이다. 그런데 회사 면담에서 시니어 개발자 분들이 그렇게 공부하지 말고, 필요한 부분을 공부하라고 하셨다. 그게 이 글의 '사람은 목적이 있을 때와 목적이 없을 때는 사고하는 뇌 구조가 다릅니다. 그렇기에 내가 특정한 목적이 있을 때 공부했던 것들은 정말로 빠르게 내 지식이 됩니다.... 띄엄 띄엄 공부하는 것은 전혀 아무런 문제가 되지 않습니다. 오히려 한 번에 다 이해를 해야만 넘어가겠다고 하는 생각 자체가 개발개발 실력을 키우는 데 굉장히 큰 방해 요소가 됩니다.' 와 같은 말 같다 ! 전에는 이런 말이 이해되지 않았는데, 경험해보니 알겠다.ㅎㅎ 앞으로도 그렇게 공부해야지 !! :D
기타 사이트
Powering the world's WebAR | 8th Wall
8th Wall
www.8thwall.com
-> 흥미로운 webAR 예시들을 볼 수 있다! ㅎㅎ
Zapier | Automation that moves you forward
Workflow automation for everyone. Zapier automates your work across 5,000+ app integrations, so you can focus on what matters.
zapier.com
=> 자동화 툴 ! 지라, 지메일, 슬랙, 노션, 인스타그램 등등에서 반복적인 업무를 자동화할 수 있다고 한다.
2023 프로그래머스 개발자 설문조사 리포트
4034명이 참여한 온라인 설문 조사 결과를 통해 우리나라 개발자들의 솔직한 의견을 확인하세요.
programmers.co.kr
-> 2022년 연말에 온라인 설문조사를 해서 나온 리포트이다! 4,034명의 개발자가 참여했다고 한다~ (나도 참여했다 ㅎㅎ) 생활(노동요, 징크스, 재택/출근), 학습, 개발자로서의 고민 등 흥미로운 주제들이 많다!
--- 읽을 글 ---
https://ridicorp.com/story/ridi-markdown-improvements
예상보다 24배 많은 콘텐츠에 프론트가 대처하는 법 - 리디주식회사
리디는 매년 연말 한 번에 많은 종수의 작품을 할인 판매하는 마크다운 이벤트를 진행합니다. 2022년 마크다운 이벤트는 총 6,107개의 작품을 가지고 진행되었는데요. 이 이벤트를 개선하는 과정
ridicorp.com
Modern Frontend Infrastructure Overview
Overview 2022년, 모던 프론트엔드 개발 생태계를 주도하고 있는 React와 Next는 각각 새로운 Major 버전(React 18, Next13)을 Release 했습니다. React18에서는 Server Component와 Streaming HTML이라는 개념이 등장했고,
yeoulcoding.me
https://velog.io/@typo/advanced-javascript-functions-to-improve-code-quality
[번역] 코드 품질을 높여주는 고급 자바스크립트 함수
자바스크립트의 다양한 내장 기능으로 구현한 고급 유틸함수들을 이해하며 여러분의 코드와 코딩 경험을 최적화해보세요. Debounce부터 Zip까지 총 10가지의 함수를 다루는 글입니다.
velog.io
(번역) Concurrent 리액트에 대해 알아야 할 모든 것(그리고 Suspense에 대해서 약간)
이 글에서는 리액트 Concurrent에 대해 자세히 살펴보고, 어떤 문제를 해결하는지, 어떻게 작동하는지, concurrent 기능을 사용하여 어떻게 활용할 수 있는지 알아볼 것입니다.
velog.io
'책꽃이 📔' 카테고리의 다른 글
2023년 4월에 읽은 아티클들 🔖🌈🌺 (0) | 2023.04.01 |
---|---|
개발자 원칙(읽는 중) (0) | 2023.03.22 |
23년 2월에 읽은 개발 아티클 🔖 (0) | 2023.02.06 |
23년 1월에 읽은 개발 아티클 🔖 (0) | 2023.01.05 |
다른 개발자 분들의 2022 회고 글을 읽다. (0) | 2022.12.28 |