오리엔테이션 과정 중 개발자에 대해 좋은 관념을 세울 수 있는 말이 나와 작성해본다!
개발자란?
개발자의 역할은 궁극적으로 해결하고자 하는 문제가 무엇인지 정의하는 것으로부터 시작
하나의 문제를 분석, 설계, 구현을 정의하고 이러한 종합적인 과정을 그려내는 것
- 분석 : 이 문제를 어떻게 바라볼 것인가?
- 설계 : 이 문제를 어떻게 해결할 것인가?
- 구현 : 컴퓨터가 해결할 수 있는가?
=> 이러한 문제 해결력을 키우는 가장 좋은 방법?
내가 직접 다양한 상황을 경험해 보는 것의 반복
베이직은 연습하는 과정.
- 연습하는 단계에서는 실패와 도전이 중요.
- 보여주기 위한 결과가 아닌 나만의 과정을 만드는 데 집중.
문제 해결법
효율적인 문제 해결을 위해 다양한 접근 방식을 우선순위에 따라 정리해보자!
1. 문제 분석 및 이해
- 공통점 찾기: 문제의 공통점을 발견하여 패턴을 파악한다.
- 수열 예측하기: 주어진 수열의 규칙을 파악하고 다음 값을 예측한다.
- 해설을 보고 적절한 상징 기호 찾기: 해설을 참고하여 문제를 해결하는 데 필요한 상징이나 기호를 찾아 적용한다.
- 문제 도메인 이해: 특정 문제 도메인에 대한 깊은 이해는 문제 해결에 큰 도움이 된다.
2. 데이터 구조 및 접근 방법
- 2차원 행렬 구조 접근 방법: 2차원 배열이나 행렬 구조의 데이터를 효율적으로 접근하는 방법을 익힌다.
- 데이터 흐름/절차 설계하기: 문제 해결을 위한 데이터 흐름과 절차를 체계적으로 설계한다.
3. 문제 해결 전략 수립
- 기준에 따라 전략적인 선택하기: 주어진 기준에 맞추어 최적의 전략을 선택하여 문제를 해결한다.
- 문제 해결 방식에 대한 구조 설계: 문제 해결을 위한 전체적인 구조를 설계하고 접근 방법을 정한다.
- 효율성 고려: 시간 복잡도와 공간 복잡도를 고려하여 효율적인 알고리즘을 설계한다.
4. 코드 구현 및 검증
- 빠르게 구현해서 점검하기: 일단 빠르게 코드를 구현한 후, 결과를 점검하고 수정해 나간다.
- 다른 언어 코드 비교하기: 다양한 프로그래밍 언어로 작성된 코드를 비교하여 차이점을 이해하고 배우는 기회로 삼는다.
- 디버깅과 오류 처리: 문제를 해결하는 과정에서 발생하는 오류를 찾아내고 수정하는 능력을 기른다.
5. 특수한 문제 해결
- 암호화 결과 예측하기: 암호화된 데이터를 분석하여 원래 데이터를 예측한다.
베이직 설계 의도 분석, 설계, 구현, 검증 그리고 문제 해결
본인 만의 접근법과 해결법을 정의하는 것을 배웠으면 좋겠다. 각자가 학습하고, 성장하는 경로는 다르다. 본인만의 학습법을 알고 효율적으로 발전 시키는 것을 배워갔으면 좋겠다.
- 스스로 찾는 문제 정의가 중요
- 해결 방법에 대한 코드가 없을 수 있음
- 정해진 입출력 없을 수 있음
- 데이터 구조나 알고리즘 제약 없을 수 있음
- 해결 방향과 의도를 설명해야 함
도움이 되는 것 (GOOD):
- 문법 책읽기
- 문제 내용을 바꿔보기: 창의적 사고를 기르는 데 도움.
- 다른 캠퍼들 저장소 살펴보기
- 문제해결을 위해 지식 혹은 다른 방법을 학습하기
도움이 되지 않는 것 (BAD):
- 대충 읽고 처음 생각난 방법으로 빨리 코드 작성하기
- 무작정 샘플 코드 읽기: 이해하고 분석하며 읽는 것이 중요.
- 몰아서 한꺼번에 풀기: 꾸준히 조금씩.
- 모르는 언어 코드는 무시하기: 다양한 언어를 배우는 것은 문제 해결 능력을 키우는 데 도움.
사념
내가 원하는 '근거'를 세울 수 있는 좋은 기회란 뜻! 회고도 제대로 써서 내 걸로 만들어야겠다.
"나의 성장에 도움이 되는가?"를 기준으로 생각하기.
여기서부터 내가 원하는 포인트를 세워가면 된다. 내가 포트폴리오에 '제품 중심으로 사고하고 사용자 중심 문제 정의/해결 추구' 이런 식으로 썼는데 이 말과 오늘 들었던 내용이 기본적으로 관련이 되는 이론인 거 같다.
베이직이랑 다른 개발을 경험하면서도 과거 현업이나 사이드 경험을 회고해서 좀 더 세분화해서 들어가야겠다고 생각했다. ex) 사용자 중심 UX를 잘 그릴 수 있음, three.js
-Next.js
등의 기술적 문제 해결
이 글을 통해 문제 해결법에 대해 더 깊이 이해하고 연습할 수 있었으면 좋겠습니다. 어떤 부분이 가장 흥미로웠나요?