[Front-end] 개발자 공부

[개발 공부 22일차] "컴퓨팅적 사고 능력을 길러라"

MOLLY_ 2024. 1. 23. 23:16
728x90

 
 
오늘은 챌린지 반 아티클을 읽고 소감과 내용을 요약하는 시간을 가졌다. 그리고 자바스크립트 공부 및 개인 과제 특강을 하였다. 이 중에서 오늘은 아티클 과제 내용만 담아보려 한다.
 

 

< 목 >

1. 소감

2.《 컴퓨팅 사고와 개발 실력 늘리는 공부법》핵심 요약

   ①  컴퓨터적으로 사고하는 개발자 되기

     1) 문제를 데이터의 관점에서 인식하고 처리하는 것이 바로 컴퓨터적인 사고의 시작!
     2) 추상화라고 하는 개념을 이해하고 잘 활용
     3) [프로그래밍의 핵심 요소] 변수, 타입, 조건, 반복, 함수
     4) 컴퓨팅적 사고력을 검증하는 것: 코딩 테스트!
     5) 의식적으로 훈련하기!

   ②  개발, 학습 말고 훈련하기

     1) 만들고 싶은 목표부터 정하자!
     2) 추상화라고 하는 개념을 이해하고 잘 활용
     3) 어떻게든 내 환경에서 일단 돌아가게 하라
     4) 수정해서 내것으로 만들자!
     5) 그리고 결합(merge)하라!
     6) 끊임없이 반복하고 완성하라 (중꺾마!)
 
 

《 컴퓨팅 사고와 개발 실력 늘리는 공부법》을 읽고

 

1. 소감

핵심만으로 너무 잘 작성된 글이라는 생각이 보는 내내 들었다. 필요하지 않은 설명이나 너무 지엽적인 내용이 가미되지 않고 재밌어서 시간 가는 줄 모르고 읽었다.
 
지금까지 과제를 하거나 온갖 시도를 해도 모르겠는 게 있으면 일단 되는 동기분의 코드를 보고 유사하게 작성을 하거나 눈치 보여도 질문해서 어떻게든 알아내 내 코드에 접목했다. 게다가 내 머릿속에서 나온 코드라도 뭔가 실행은 되지만 얼렁뚱땅 돼서 '이게 맞나..?' 싶은 생각도 자주 들었다. 하지만 이 글을 읽고 '아! 내 방식이 맞았구나' 하는 생각과 함께 약간의 안도감이 들었다.
 
코드카타를 진행할 때도 컴퓨터적 사고력이 아직 부족해서인지 어떻게 해야 하는지 말로는 할 수 있겠는데 적용해야 할 함수가 떠오르지 않거나 모르겠어서 관련 답안을 보고 이해하기도 하였다. 이 글을 읽고 이렇게 공부하는 것도 효과적인 공부라는 것을 알게 되어 좋았다.

또, 컴퓨터적 사고란 '문제를 데이터 관점에서 생각하여 풀어낼 방법을 선택하여 컴퓨터가 이해하게 설명해 해결하는 것'임을 적확하게 알 수 있어서 좋았다. 그리고 남의 코드를 가져와 수정하고 결합하는 과정에서 많은 것을 얻을 수 있다는 것을 알아서 유익했다. 최대한 충분히 컴퓨터적으로 사고해 본 뒤, 정 실마리를 못찾겠다면 이 글에서 나온 액션 플랜으로 넘어가서 순차적으로 진행할 생각이다. 이 글을 읽고 개발 능력을 효과적으로 향상시키는 꿀팁을 알게 된 것 같다.

 

2.《 컴퓨팅 사고와 개발 실력 늘리는 공부법》핵심 요약

개발은 운동과 같아서 이론만 보고 실제로 코드를 짜보지 않으면 실력이 늘 수 없다. 그리고 꾸준히,  공부와 훈련을 적절히 병행하는 것이 굉장히 중요하다. 하지만 (실전의 비중) 일단 하는 것이 훨씬 더 중요하다. 추후 일정 궤도에 올라가면 반복적인 연습뿐만 아니라 많은 경험과 시야가 굉장히 중요해진다. 

 
또, 개발은 협업이 굉장히 중요한 과제이기 때문에  소통하고 팀원과 내 역할을 어떻게 조율할 것인가가 중요하다. 
그렇다면 어떻게 개발을 훈련할 수 있을까?
 

『컴퓨팅적 사고』
: 인간의 사고와 컴퓨터의 능력을 통합한 사고
단편적인 학습에서 벗어나 복합적 사고로 나가는 수단으로, 창의적 문제를 해결하는 핵심 능력으로 주목받고 있다. 컴퓨터의 해결 능력인 데이터 수집ㆍ분석, 표현, 문제 분해ㆍ추상화, 자동화 등을 사고에 적용시켜 여러 분야에서 문제 해결을 하는 데 사용한다.

시사상식사전, pmg 지식엔진연구소 中

 

1) 컴퓨터적으로 사고하는 개발자 되기

컴퓨터적으로 사고한다는 것은, 문제를 해결하기 위해 필요한 답을 컴퓨터가 효과적으로 수행할 수 있도록 정의하고 그에 대한 답을 기술하는 것. 사용자의 요구사항을 데이터의 관점에서 바라보고, 변수, 타입, 조건, 반복, 함수 등을 이용하여 데이터를 컴퓨터가 이해할 수 있는 형태로 표현하는 과정이다. 문제를 작은 조각들로 분해하고, 필요한 자료를 표현하며, 일반화하여 해결책을 모델링하고, 최종적으로 알고리즘을 도출하는 것이 중요하다.
 
컴퓨팅 사고를 통해서 발견한 문제분해(decomposition)자료표현(data representation)일반화(generalization)모형(modeling)알고리즘이 필요하다.
 
 

(1) 문제를 데이터의 관점에서 인식하고 처리하는 것이 바로 컴퓨터적인 사고의 시작!

  • '데이터 구조를 활용하여 사용자 요구사항에 맞는 데이터를 찾아내는 것'이 프로그래밍의 핵심
  • 데이터 구조를 활용하기 = 알고리즘 그리고 함수
  • 알고리즘: 데이터 구조를 활용하여 원하는 결과를 도출하는 과정

 

(2) 추상화라고 하는 개념을 이해하고 잘 활용

컴퓨터 과학(CS)에서 추상화란?

: 세부적인 부분을 추상화하여 숨기고, 필요한 부분만 사용자에게 노출시키는 것! [추상화의 핵심 원칙]
(ex. filter 함수의 본질은 '조건에 맞는 요소만 걸러낸다'. 이를 구현하기 위한 반복과정과 Array에 값을 넣는 세부과정은 외부에 노출을 할 필요가 없다.)
 

(3) [프로그래밍의 핵심 요소] 변수, 타입, 조건, 반복, 함수

  • 변수: 값을 저장하는 공간
  • 타입: 변수가 저장할 수 있는 값의 종류를 결정
  • 조건문: 주어진 조건에 따라 프로그램이 다르게 동작하도록 하는 것
  • 반복문: 반복적으로 실행되는 코드를 간단하게 작성할 수 있도록 함
  • 함수: 코드의 재사용성을 높여주는 중요한 개념으로, 입력값을 받아 출력값을 반환하는 기능

 

(4) 컴퓨팅적 사고력을 검증하는 것: 코딩 테스트!

코딩 테스트의 목적은 실무능력의 평가가 아니라 데이터를 다루는 방법, 즉 컴퓨터적인 사고에 대한 평가를 하기 위함이다. 데이터의 구조와 알고리즘을 이해하고, 주어진 문제를 해결하기 위한 적절한 방법을 고민하는 능력을 요구한다. 이는 컴퓨터적 사고력을 향상하는 데 매우 중요하다.
 

(5) 의식적으로 훈련하기!

① 요구사항을 데이터의 관점에서 나눠서 적어보는 훈련
: 요구사항이 어떤 데이터를 다루는지 파악하고, 데이터를 어떻게 다룰지에 대한 방향성을 정할 수 있음
 
데이터의 구조를 먼저 기술하고 생각해보는 연습
: 변수, 타입, 조건, 반복, 함수 등을 활용하여 데이터의 구조와 알고리즘을 기술하는 방법을 익혀보자. 이를 통해 추상적인 개념을 구체적인 코드로 표현하는 능력을 기를 수 있다.
 
적절한 알고리즘을 선택하는 연습
: 많은 문제를 풀어보고 다양한 알고리즘을 경험해보는 것이 중요
 
기존 데이터의 구조와 알고리즘을 연결하여 새로운 데이터를 도출하는 연습
: 데이터를 어떻게 다룰지에 대한 방법과 알고리즘을 어떻게 적용할지를 연결하는 능력을 기를 수 있다.
 
 

2) 개발, 학습 말고 훈련하기

*** 제일 효과적으로 성장을 경험한 "남의 코드를 베껴와 일단 돌아가는 코드로 합치는 훈련방법" 추천!

 
이외에도 대부분의 좋은 개발 학습방법의 큰 골자는 사실 크게 다르지 않다.
일단 먼저 만들어봐라. 다 배우고 난 다음에 하려고 하지 마라. 책으로만 공부하지 말고 반드시 공식문서를 중심으로 공부해라 etc

 

(1) 만들고 싶은 목표부터 정하자!

개발: 가치를 기술을 통해서 만들어내는 것
따라서, 결과를 만들고자 하는 것에 집중을 해야 한다.
 

(2) 일단 돌아가는 남의 코드를 가져오자!

목표를 정했다면 그 다음으로 해야할 것은 그것을 만들기 위해서 가장 유사한 코드를 찾는 일.
일부만이라도 내가 필요했던 기능이 있는 코드라면 좋다.
 

(3) 어떻게든 내 환경에서 일단 돌아가게 하라

 

(4) 수정해서 내것으로 만들자!

도저히 어디를 바꿔야 하는지 감이 안온다면 인근에 있는 코드를 중심으로 검색하면서 공부를 시작하자. 사람은 목적이 있을 때와 목적이 없을 때는 사고하는 뇌 구조가 다르다. 그렇기에 내가 특정한 목적이 있을 때 공부했던 것들은 정말로 빠르게 내 지식이 된다.
 
전부 이해하지 못하더라도 일단 넘어가자. 한 번에 다 이해를 해야만 넘어가겠다고 하는 생각 자체가 개발 실력을 키우는 데 굉장히 큰 방해 요소다. 남이 만들어 낸 것을 하나하나 다 이해해서 내가 다시 만드려고 하지 말고 필요한 것만 이해하고 사용해서 더 나은 것을 만들고 기여하자. '개발자'라는 직업은 남이 만들어 놓은 코드에서 필요한 부분만 수정해서 내가 원하는 것을 만들어 공유하고 그걸 통해서 또 다른 사람이 더 새로운 것들을 만들어내는 직업이다.
 

(5) 그리고 결합(merge)하라!

두 개의 다른 코드를 결합하는 코드를 결합하는 작업은 절대로 쉽지 않다. 그리고 이 과정에서 무수한 에러들을 만날 것이다. 그리고 이 결합을 배우는 과정에서 굉장히 많은 것들을 배울 수 있다. 결합을 하는 과정에서 배우게 되는 지식이 정말 참 지식이다.
 

(6) 끊임없이 반복하고 완성하라 (중꺾마!)

"일단 뭐든 만들어 봐! 생각은 좀 하면서..."
뭐든 잘하고자 하면 꾸준히 연습을 하는 것이 가장 중요하다. 그리고 <의식적으로 컴퓨터적 사고를 훈련하라!>
늘 새로운 것을 목표로 남의 코드에서 필요한 것들만 수정해서 결합해서 내것을 만들어 내는 방식을 바탕으로 개발적인 성장을 해나가자

 

 

728x90