11월을 돌아보며

Jay·2022년 11월 10일
0

회고록

목록 보기
4/4

함수형 프로그래밍

구체적 절차 대신 추상적인 개념으로 표현
함수형 프로그래밍은 선언적 프로그래밍(delarative programming)이라는 더 넓은 프로그래밍 패러다임의 한 가지이다. 필요한 것을 달성하는 과정을 하나하나 기술하는 것보다 필요한 것이 어떤 것인지를 기술하는 것에 더 방점을 두고 어플리케이션의 구조를 세워나가는 프로그래밍 스타일.

const loadAndMapMerbers = compose(
	combineWith(sessionStorage, "members"),
  	save(sessionStorage, "members"),
  	scopeMembers(window),
  	logMemberInfoToConsole,
  	logFieldsToConsole("name.first"),
  	countMebersBy("location.state"),
  	prepStatesForMapping,
  	save(sessionStorage,"map")
  	renderUSMap
  );

getFakePerson(100).then(loadAndMapMembers)

선언적 프로그래밍의 코드 구문은 어떤 일이 발생해야 하는지에 대해 기술하고 실제로 그 작업을 처리하는 방법은 추상화를 통해 아랫단에 감춰진다.

선언적 프로그래밍 기법
함수 합성, 고차 함수, 패턴매칭, 대수적 데이터 타입을 사용한 문제 분해, 재귀

DDD (Domain driven design)

도메인
지방 전부의 관할, 학문 영역, 활동 영역, 인터넷 주소 하위 구분 등의 의미로 사용되지만 현대에 들어서는 보다 넓은 문맥에서 영역을 구분하는 의미로 사용 됨.

소프트웨어 개발 영역에서의 domain
개발하고자 하는 소프트웨어의 요구사항, 문제 영역 정도로 생각할 수 있다. 예를 들어 쇼핑몰을 만든다고 했을 때, 게시글, 댓글, 결제, 정산 등을 도메인이라고 할 수 있다. 사용자 요구사항에 따른 상위 수준의 개발 범위.

DDD
DDD는 설계, 디자인패턴만을 의미하는 것이 아니라 App을 만드는 방법이자, 프로젝트에서 팀이 일하는 방법이다. 단어 선택으로 인한 오해가 없도록 도메인 전문가는 명확, 간결, 구체적으로 요구사항을 전달한다. 개발자는 기술적 용어가 아닌 누구나 이해할 수 있는 언어를 사용해서 소통한다. 즉, DDD는 개발자와 해당 분야의 전문가가 함께 하는 설계의 과정인 것이며 여기서 도메인은 문제 해결 대상 분야, 해당 비즈니스 영역을 의미하는 것이다.

도메인 지식의 필요성
면접에서 "우리 회사 도메인 좀 아세요"라고 묻는 이유는 무엇일까? 개발자는 세상에서 제일 먼저 그 서비스를 이용해보는 사람이다. 기획/디자인에 어떤 구멍이 있는지, 어떤 기능이 중요하고 추가되면 좋을지 스스로 판단할 줄 알아야 한다. 따라서 개발자는 단순히 스펙에 따라 기능을 구현하고 성능을 개선하고, 코드를 짜는 것 뿐만이 아니라 자신이 만드는 서비스 전반에 걸친 관심과 애정이 필요하다. 내가 만들어내는 서비스와 이 회사에 대한 높은 이해가 필요하고, 우리 서비스가 어떻게 발전할 수 있을지 고민하는 자세가 필요하다.

Google Docs를 활용한 학업

현재 팀원들과 구글 독스 문서를 공유하며 수업을 듣고 있다. 결론부터 말하자면 학업의 효율성이 매우 높아졌다고 생각한다.

필사를 해야할 시 여러 명이 공동으로 작업하니 속도 n배

  • 수업을 온전히 따라가며 완전한 필사 가능.

궁금하거나 모르는 내용이 있을시 실시간 질의응답 가능

  • 답이 안나올 시에는 n명이 서치하여 답을 찾아내거나 추가적인 참고 자료 첨부하여 수업 종료 후 고찰.

집단 지성

  • 서로가 이해한 바를 공유하고 하나로 합치는 과정을 반복하면서 전문의 지식 정보를 퀄리티 있게 가공할 수 있음.

집중력 향상

  • 어떻게 보면 실시간으로 협업을 하며 문서를 작성하는 행위이기에 자연스럽게 강제적으로 집중하게 됨.

프론트엔드 개발자

front-end
프론트엔드는 수명이 짧고 변화가 빠르다.
눈에 보이는 UI만 조작하고 코딩을 짜서 배포한 후에 에러가 나면 에러를 수정❎
성숙한 앱일수록 프론트 코드는 추상화된 데이터 처리와 서비스 논리를 구현하는 스테이트 관리 분량이 비대해진다.

Business problem solver
어떠한 비즈니스적인 문제점을 발견 -> 해결방법을 기획 -> 기술적으로 해결

why front-end
프론트엔드 개발자는 개발자 중 사용자와 가장 최전선에서 만난다. 사용자에게 빠르게 피드백을 받고 소통할 수 있다는 점이 가장 큰 매력이라고 생각한다.

What technical skills are needed

  • 성장 의지
    - 혼자 학습하면서 방향성에 대해 꾸준히 질문하기
    - 스스로 성장하는 방향성을 잃지 않기

  • 협업 능력
    - 실무중심의 커뮤니케이션을 통한 개발 협업능력
    - 실무에서 사용되는 기술뿐 아니라 개발 문화에도 관심을 갖기

  • 문제 해결력
    - 프로젝트 중심의 문제 해결력 향상
    - 결과 뿐 아니라 과정에 가치를 담기

0개의 댓글