TIL (Today I Learned) 1일차.
7월 3일 퇴사 후 2주간 휴식을 갖고 7월 19일 오늘
부트캠프 첫 수업(?), 오리엔테이션을 진행했다.
오후에는 코드스테이츠 부트캠프 학습방향에 대해 이해하는 시간을 가졌다.
페어 프로그래밍이 무엇인지, 목적과 좋은 페어, 나쁜 페어에 대해서 알아보았고, 수도 코드 작성법 또한 알아보았다.
공부에 잔머리가 없는 나는 평생 공부를 하며 계획이라던지 전략을 짜본 적이 없었다.
하지만 UrClass에서 학습 전략 세우는 법을 예시와 함께 제시해줬고, 나도 이번에는 공부 계획, 전략을 짜며 효율적으로 공부해보기로 했다.
(모든 방법이 모든 사람들에게 맞지 않으니 나에게 편한 방법을 찾아보도록 하자)
먼저, 내일 일정을 보며 무엇을 공부할 것인지 미리 파악하기.
일정에서 키워드만 추려내 내일 배울것들을 파악해 리스트업한다.
리스트업했던 키워드에 세부적인 개념을 채워넣기 어렵다면 Achievement Goals(성취 목표)를 세워본뒤에 세부 개념을 채워넣는다.
(세부개념)
채워넣은 키워드가 이해됐다면 항목에 체크를 한다.
이해를 하지 못한 체크가 되지 않은 항목들은
1단계 : 다시 읽기
(UrClass를 다시 읽는다)
2단계 : 검색
(검색을 통해 이해하려고 노력한다)
3단계 : 질문하기
(아고라 스테이츠, 실시간 세션에서 질문한다)
이 과정을 통해 해결이 되면 다시 개념들을 체크한다.
그래도 해결이 안되면 일단 넘어간다.
왜? 내일은 내일의 일정이 있기 때문에.
이렇게 넘어간 것들은 어떻게 한다?
주말에 놀지말고 해결하려고 노력한다.
이외에도 SQ3R이라는 방법이 있다.
● Survay : 목차를 보고 훑어보기
(학습할 유닛을 훑어본다)
● Question : 질문 정리하기
(학습하면서 어려운 개념은 모아둔다)
● Read : 궁금한 점을 찾았으니 적극적으로 읽기
(모르는 개념은 유어클래스를 다시 읽거나, 검색한다.)
● Recite : 책을 덮고 최대한 무슨 내용이었는지 생각하거나 적기
(이 개념은 왜 배웠는지, 무엇을 할 수 있을지, 어떻게 쓰이는지 생각해본다)
● Review : 기억한 것이 맞는지 확인하기
(아고라 스테이츠 또는 실시간 세션에서 질문한다)
개인적으로는 SQ3R 방법이 평소 새로운것을 접할때 무의식적으로 행했던 방법들이라, 나에게 맞는것 같다.
학습 전략 구성에 대해 알아본뒤, 질문하는 방법을 학습해야하는 이유와 질문하는 방법을 알아보았다.
개발자는 끊임없이 새로운 것을 학습해야하기 때문에, 제대로 질문하는 법을 반드시 알아야 한단다.
질문은 곧 검색이고, 검색이 질문의 첫걸음이다.
아래 글은 커리큘럼을 진행하는동안 옆에 두고 여러번 정독하자.
제대로된 질문을 학습하는건, 개발자로서 성장하는 속도에 영향을 줄 수 있다.
- 검색은 질문의 시작입니다.
검색은 좋은 질문의 시작점입니다.
가지고 있는 검색 노하우의 유무를 떠나, 물리적으로 검색 자체를 잘 하지 않는 분이 있습니다.
강경하게 말해, 개발 실력과 상관없이 잘못된 방법입니다. 더 빠른 길을 포기하지 마세요.
대부분의 문제에 대한 답변이 이미 집단 지성으로 만들어져 있는데, 혼자서 바퀴를 재발명하려고 하는 것과 같습니다.
만약 여러분들이 무언가 모르는 것이 있다면,
이미 수많은 사람들이 동일한 내용을 궁금해했고, 수많은 질문과 답변이 오고 갔다는 사실을 기억해야 합니다.
여기에 두 가지의 Good News가 있습니다.
99%(대부분)의 문제는 많은 사람들에 의해 이미 해결되었습니다.
여러분들이 겪는 문제는 이미 어딘가에 해결책이 쌓여 있습니다. 단지 검색 스킬이 부족하거나 질문하는 법이 잘못되어 해결책을 못 찾아내는 것뿐입니다.
물론, 2분 전에 업데이트된 새로운 기술로 인해 발생하는 문제는 예외일 수 있습니다.
만약 여러분들이 검색에 적절히 시간을 쏟는다면, 문제에 대한 해결책은 반드시 얻어낼 수 있습니다.
텍스트를 통해, 맞닥뜨린 문제를 전 세계 사람들과 공유하고, 해결할 수 있어야 합니다.
기술적인 문제에 대해 본인 스스로 문제를 해결하는 방법에 대한 프로세스가 없고, 한 사람을 직접 붙잡고 물어봐서 해결하는 것에만 의존한다면, 이는 언젠가 반드시 문제가 됩니다.
문제를 해결하기 위한 방법을 찾는 일에 개선이 없다면, 개발자로의 성장이 많이 더딜 수 있습니다.
"내 돈 내고 배우러 왔는데, 왜 쉽게 엔지니어에게 질문도 못하게 하고 질문하는 법을 학습하라고 강요하나요?" 라고 불만을 표출할 수 있습니다.
그러나 코드스테이츠는 수강생을 현업에 빠르게 적응할 수 있게 하는 역량을 키워 주는 것을 목표로 한다는 점을 기억하세요.
현업에서는 모르는 것을 옆에서 하나하나 해결해 주는 사수는 없습니다. 모르는 것을 질문할 수는 있지만, 모르는 것을 만날 때마다 도움을 요청하는 신입은 능력이나 성장 가능성에 대해서 좋은 평가를 받기 어렵습니다.
그렇기 때문에 여러분이 스스로 문제를 해결하거나, 좋은 질문을 하는 능력을 갖춘다면 현업에서 더욱 빛을 발합니다.
코드스테이츠에서 여러분이 궁극적으로 얻어 가야 하는 것은 스스로 고민하고, 그 고민을 글로 표현하고, 질문의 키워드를 생각해내고, 검색을 통해 해결책을 찾아서 해결하는 방법입니다.
이것이 개발 인생의 전부라고 해도 과언이 아닙니다.
궁금한 것을 찾는 과정, 그리고 그것을 응용하는 것이 개발 공부의 전부입니다.
- 질문을 개선하기 위한 노력 : 검색 키워드 찾기
내 질문을 개선하기 위해서, 검색은 필수가 됩니다.
검색을 통해서 해답을 바로 찾는 것은 어려울 수 있습니다. 그러나, 더 나은 검색 키워드를 얻어낼 수 있습니다.
개발을 하다 보면, 상황을 설명하기 어려운 경우가 종종 발생합니다. 충분히 이해합니다.
이 상황을 표현할 수 있는 하나 또는 두 개의 단어가 있을 겁니다. 그러나 여러분은 학습한 적이 없기 때문에 당연히 모릅니다.
그러므로 그 키워드를 얻기 위해서, 여러분은 현재의 상황을 여러 각도로 검색해야 합니다.
'그 키워드'를 아는 사람은 더 빨리 검색하거나, 질문할 수 있습니다.
그러나 우리는 그 키워드를 모르기 때문에, 키워드를 찾아내는 연습을 합니다.
키워드를 찾아내면 더 나은 질문을 빠르게 할 수 있고, 그 경험을 통해 더 좋은 질문을 할 수 있는 실력을 갖출 수 있습니다. 이 과정을 여러 번 반복하면, 여러분은 코드를 첨부하지 않고도 키워드를 포함한 질문을 통해 원하는 답변을 얻어낼 수 있는 경지에 다다를 수 있습니다.
Tip 1 : 검색 포털은 '구글'을 이용하세요! 주로 이용하는 네0버나 다0카0오 같은 대형 검색 포털은 이용자의 다수가 한국에 국한되어 있습니다. 그러나 구글은 훨씬 범용적이어서 전 세계 사람들과 소통할 수 있습니다.
Tip 2: 'how to'는 마법의 단어입니다. 이 단어로 구글 검색을 시작하세요. 여러분이 겪고 있는 문제는 이미 많은 사람들이 궁금해했고, 대부분의 문제는 답변을 통해 해결되었다는 것을 체감할 수 있습니다.
Tip 3. 영어를 수월하게 하지 못한다고 두려워하지 마세요, 꼭 완벽한 문법이 아니더라도 적절한 키워드들이 조합된다면, 충분히 이후의 검색 방향을 발견할 수 있습니다.
ex)
how to resolve 404 error in github?
how to use Array.forEach in javascript?
how to implement infinite scroll in react?
- 질문하는 것 자체가 너무 어려워요.
JUST ASK! 일단 질문하세요.
여러분 중 대부분은 질문 자체를 배척하는 교육을 받아 왔기 때문에, 질문을 던지는 데에 익숙하지 않다는 것을 이해합니다.
질문하는 것이 어려운 이유는 두 가지 정도로 추려볼 수 있습니다.
내가 현재 겪고 있는 문제의 상황을 설명하는 게 쉽지 않다.
우리나라 특성상 이야기꾼으로 성장하기 힘든 문화이기 때문에 이해합니다.
많은 분들이 특정한 것을 자유롭게 말이나 글로 설명하거나 묘사하지 못합니다.
내가 무엇을 모르는지 모른다.
무엇을 질문해야 하는지 모르는 문제일 수 있습니다. 이 점도 충분히 이해합니다.
그러나, 이 두 가지의 문제는 질문하지 않는 것에 대한 핑계가 될 수 없습니다.
이 두 가지의 문제에 해당한다면, 무엇을 모르는지에 대한 질문부터 해야 합니다.
지금 질문하지 않으면, 지금 겪고 있는 문제의 상황을 영원히 개선할 수 없습니다.
혹은 질문하는 것 자체가 너무 번거롭거나, 내 질문으로 남을 귀찮게 하고 싶지 않은 것인가요?
물론 그 마음은 이해합니다. 그러나 뒤로 미루기만 한다면, 빠르게 성장하기 힘듭니다.
이 세상에 바보 같은 질문은 없습니다. 하지만 정성을 들이지 않은 질문은 있습니다.
만약 여러분의 정성을 들이지 않은 질문을 했고, 이를 책망하는 답변을 받더라도 답변자를 미워하지 마세요.
오히려 여러분의 성장을 진심으로 응원하는 마음에, 날카로운 답변을 단 경우가 많습니다.
이를 받아들이고, 본인을 발전시키는 동력으로 삼는 자세로 임해주세요.
질문을 정성스럽게 작성하는 방법을 모르겠다면, 그냥 무작정 질문을 하고 답변자에게 혼날 용기라도 반드시 가져야 합니다.
Learn by doing! 앞으로 만나게 될 수많은 실패를 그냥 받아들이세요. 개발자는 실패를 받아들일 용기가 꼭 필요합니다.
- 질문을 할 때에는 좋은 제목을 달자!
좋은 질문의 첫 번째 조건은, 좋은 제목입니다.
제목에 에러 메시지를 그대로 집어넣는 경우가 있습니다.
반면에 제목만 보고도 상황을 이해할 수 있어 답변을 달 수 있는, 좋은 제목이 있습니다.
예를 하나 보겠습니다.
Bad example : "코플릿 알고리즘 00번 질문입니다."
답변자는 여러분이 어떤 문제를 풀고 있는지 궁금하지 않습니다.
이 제목으로는 어떤 질문을 할지 예상할 수도 없습니다.
Good example : "array의 reduce 메서드 사용 시 accumulator 인자의 작동이 이해되지 않습니다."
제목만으로 어떤 답변을 기대할지 판단할 수 있습니다.
바쁜 동료에게 물어본다고 생각하고, 질문을 작성하세요.
지나치게 많은 문단(5~6개의 문단 이상)으로 이루어져 이해하기 어려운 질문을 몇 시간 동안 살펴 줄 사람은 없습니다.
그런 사람은 앞으로도 없고, 영원히 없을 겁니다.
지나치게 길게 쓰면, 질문의 포인트를 잃어버리기 쉽습니다.
본인이 명확하게 모르는 부분은 스스로 퇴고해야 합니다.
만약 질문을 요약하는데 어려움이 있다면, 먼저 글을 작성한 다음 나중에 제목을 써도 좋습니다.
오히려 글 내용에 부합하는 명확한 제목을 작성하는 좋은 연습 방법입니다.
- 코드를 붙여넣기 전에 현재 상황을 먼저 설명하세요!
여러분의 상황은 두 가지 정보를 통해 전달할 수 있습니다.
내가 문제 해결을 위해 시도한 흔적
그 시도들로 인해 얻은 오답
질문으로 진입하기 전, Intro가 필요합니다.
내 상황을 이해시키는 과정이 있으면, 답변하는 사람에게 내가 시도한 의도를 전달할 수 있습니다. 답변하는 사람도 문제 상황을 더 빠르게 파악하고, 키워드나 답변을 제공할 수 있습니다.
- 자신이 처해 있는 문제를 다른 사람이 재연할 수 있도록, 충분한 정보를 제공하세요!
여러분이 처한 상황을 설명하는 일이 까다로울 때가 있습니다.
그렇다면 문제 상황을 재연할 수 있도록 충분한 정보를 제공해야 합니다.
절대 전체 코드를 복사해서 붙여 넣으라는 말이 아닙니다.
더군다나, 코드 이미지 캡처를 올리라는 말은 더더욱 아닙니다. 이미지는 코드를 복사할 수 없기 때문에 재연이 매우 힘듭니다.
코드를 삽입할 때에는, code snippet을 활용합니다. (만약 code snippet이 무엇인지 모른다면, 여러분은 이제 code snippet에 대해 정보를 찾기 위해 검색할 수 있습니다.)
온라인기반의 클라우드 에디터를 이용할 수도 있습니다. 그러나 이는 조금 높은 난이도의 기술이 필요합니다.
전체 코드 공유가 아니라 이슈가 있는 코드만 공유해야하기 때문에, 당장은 적용하기 어려울 수 있습니다.
https://codesandbox.io/
https://codepen.io/
http://jsbin.com
http://sqlfiddle.com
보다 더 성장한 다음에 이용해 보세요.
질문자로서 해야 할 마지막 임무
만약 누군가가 내 질문에 도움을 주었다면,
그 답변으로 인해 문제를 어떻게 해결했는지 서술하고, 진심으로 감사를 전하세요.
이 질문의 기록은 질문자와 답변자, 나중에 이 질문을 검색해 볼 모든 사람에게 도움이 됩니다.
답변을 받았다고 해서 그냥 넘어가면 안 됩니다.
내 상황의 어떤 부분이 문제였고, 어떻게 해결했는지 간단한 기록을 마지막으로 남겨 주세요. 나와 이 질문을 검색해 볼 모두가 성장할 수 있는 소중한 기록이 됩니다.
질문하는 것 자체가 개발의 한 부분입니다. 질문을 피할 수 없다면, 제대로 질문하는 연습을 꾸준히 해주세요.
시작해보세요.
발생한 에러 메시지, 궁금한 것을 검색(구글링) 합니다.(최소 20분 - 경우에 따라 다름)
코드스테이츠는 여러분을 귀찮게 여기지 않습니다. 답변하는 사람은 직접적인 답변을 작성하는 게 가장 빠릅니다. 그러나 계속해서 검색을 권장하는 이유를 이해해 보길 바랍니다.
할 수 있는 것을 최대한 해 본 다음, 가이드에 따라 Agora States를 이용합니다.
여러분이 수강하는 커리큘럼 안에, 'Agora States를 이용하여 질문을 작성하는 연습'이 포함되어 있습니다. 가이드라인에 따라 질문하는 것을 적극적으로 권장합니다.
또한 다른 사람이 남긴 질문을 보면서, 답변할 수 있는 글에는 답변을 해보는 것도 권장합니다.
Agora States를 통해 질문하고 답변하는 일은 스스로에게 매우 좋은 경험이 됩니다.
Agora States의 답변으로 문제를 해결하려고 시도해도 문제가 해결되지 않는 경우에는 1, 2번을 반복합니다.
답변으로 주어진 Keyword나 action item을 가지고 다시 1, 2번을 반복합니다. "그게 뭔가요?" 라는 무책임한 질문을 되풀이하지 마세요.
주의사항
Agora States에 질문을 올렸다고 해서, 답변을 받을 때까지 마냥 기다리면 안 됩니다!
현업에서 검색으로 원하는 답을 찾지 못하는 경우에는 질문을 하게 될 텐데, 이 경우 "질문 올려놨으니까 답변 올라올 때까지 쉴게요!"라고 말할 수는 없겠죠?
답변이 달릴 동안 계속해서 원하는 결과를 얻기 위해 레퍼런스를 검색하는 훈련을 하시길 권장합니다.
검색은 예전부터 많이 하던 사람이 더 잘할 수밖에 없습니다.
경험이 없다면, 당장 지금부터라도 경험을 쌓으면 됩니다.
아고라 스테이츠에 질문할때
질문 템플릿을 이용하기.
MarkDown을 이용하기.
(https://github.com/codestates/agora-states/discussions/26)
'''js''' 블럭을 이용해서 코드 예쁘게 쓰기.