우리가 살면서 경쟁위주의 사회를 살다보니까
경쟁의식이나 불안감을 느껴서 빨리 힌트를 본다거나,
다른 사람의 코드를 본다거나 한다.
그러면 빠르게 실력이 늘지 않는다.
처음에 이 과정을 진행하면서 힘들수는 있지만
그것이 어느 순간 자기것이 되고 그 뒤로는 속도가
빨라진다고 한다.
제일 중요한것은 주변사람들과 경쟁을 하지 말고
어제의 나와 1주일의 나와 경쟁을 하라고 했다.
2주차 미션을 진행할때 1주차 미션을 했던 코드를 보면서
자신이 짠 코드가 쓰레기처럼 보일정도록 노력을 했으면 좋겠다고 했다.
그래야 중간에 번아웃도 안할수 있고 꾸준히 할수 있다고 했다.
만약 다른사람들이 잘하고 빠르게 하면
나보다 경력이 많구나 라고 생각을 하라고 했다.
그리고 무시해라. 나 자신을 믿어라자바지기 (박재성)
-
나한테 너무 필요한 말이다.
비교하면서 자책하고,
시간낭비 하지 말자.
즐겁게 앞으로 나가자. -
이런 부분에서는 합리화 하자.
괜히 정직하게 받아들이지 말고
오직 내가 이전에 짠 코드와 비교하자.
-
코드 한 줄 한 줄 항상 의식적으로 작성하자.
-
항상 코드 한 줄 한 줄 왜? 를 고민하면서
끊임 없이 리팩토링 하는 습관을 가지자 -
항상 그림을 그리고, 큰 그림을 놓치지 않도록 하자.
머릿속으로 큰 그림을 상상 하면서 한 줄 한 줄 그리자. -
작은 것을 등한시 하지 말되, 큰 것을 놓칠 정도로 깊이 빠지지 말자.
-
객체지향은 이해하는 것이 아니라 몸에 체화 시키는 것이다.
체화 하는 방법은 기준을 세우고 끊임없이 그 기준에 맞춰서 리팩토링 하는 것이다. -
근육에 동작을 각인 시키는 것과 마찬가지이다. 기준을 세우고 거기에 맞춰
프로그래밍 하는 것을 체화 시켜라. 그 기준이 객체지향을 기반으로 한 기준이라면
어느순간 객체지향 프로그래밍을 하고 있을 것이다. 이 순간을 상상하며. -
당장 구현에 눈이 멀어 미래의 시간을 희생하지 마라. 지금 돌아가는 것보다
앞으로도 잘 돌아가는 것을 만드는게 중요하다. 항상 좋은 코드의 기준을 세우고
이를 충족시키기 위해 노력하라. 이해가 아니라 체화다. 습관이다. -
항상 내가 구현을 기능을 메서드 하나 단위까지 쪼개고, (메서드는 한 가지 작업만 한다)
머릿속에서 글로 옮기면서 논리적인 오류가 없는지, 무엇을 고려해야 하는지 생각하라.
생각 -> 글로 적고 -> 논리적 오류 검토 -> 코딩 순으로 진행되어야 한다. -
최대한 앞을 보려고 하라. 당장 기능 하나에 집중 하기 보다는 이 기능이
각 객체들과의 협력을 통해 만들어 내는 결과 까지 생각하면서 프로그래밍 하라.- 항상 테스트를 진행하면서 하라. 코드를 작성하면 결과를 보면서 해야한다.
프로그램을 만드는 흐름을, 구현 - 테스트, 구현 - 테스트가
반복되어야 한다. 한 번에 모든 프로그램을 논스톱으로 만들 수 없다.
- 항상 테스트를 진행하면서 하라. 코드를 작성하면 결과를 보면서 해야한다.
-
뭔가 이해가 안된다면 질문을 작성하라. 그 질문이 타당한지, 3자의 입장에서
고려해볼 때 답이 나오는 경우가 많다. 즉, 질문을 하면서 그 질문에 답을 하는
3자의 입장에서 질문을 객관적으로 바라보고, 모순이 없는지, 충분히 찾아 봤는지
생각하게 되고, 내가 빼 먹은 것을 알 수 있다.
-
기술의 본질은 단순하다. 기능을 걷어내야 진짜 본질을 볼 수 있다.
기술의 본질을 봐야 기능에 휘둘리지 않을 중심을 잡을 수 있다.
본질로 중심을 세우고 기능을 붙여라. -
기술의 본질을 보는 질문은 "이 기술은 왜 탄생했는가?"에 대한 질문이다.
즉 기술의 탄생 배경을 알고, 어떤 문제를 해결하기 위해 탄생했는지를 알아라.
그럼 기술의 큰 그림을 볼 수 있고, 기능에 치우치지 않을 수 있다. -
대부분 기술들의 본질은 개념이다. 추상적인 개념, 포괄적인 개념.
그 위에 구체적인 기능들이 자리한다. 이 구조를 잊지 말 것. -
항상 왜?를 물을 것. 스스로에게 물어볼 것. 그리고 명확히 설명할 것.
-
의미 없이 보고 듣지 마라. 한 번에 한 가지만 하라. 보던지, 듣던지, 적던지, 코딩하던지.
-
점진적으로 발전시켜 나가라. 처음부터 베스트 프랙티스는 없다.
욕심 부리지 말고 꾸준히 발전시켜 나가라. 계속 수정하라. -
조급해 하지 마라. 다시 되돌아 오는 비용이 느리게 가는 비용보다 훨씬,
비교할 수 없을 정도로 크다.
느리게, 하지만 우직하게 가라. -
기본위에 기술이다. 기술은 쉽게 변하기 때문에 기본이 될 수 없다.
변하지 않는 기본만이 기술을 쌓아 올릴 수 있는 기반이 된다. -
항상 목표를 정해놓고 공부하자. 지금 필요한 것은 기교가 아닌 기본이다.
조급함을 버리고, 기본으로 돌아가자. 다행히 아직 늦지 않았다. -
스스로 질문 하고, 그 질문의 꼬리를 물면서 질문에 대한 답을 찾아 나갈 것.
-
리팩토링도 하나의 기술이다. 구현과 다르다. 의식적으로 이전의 소스를
더 좋은 방향으로 끊임 없이 고치는 의식적인 연습을 통해서만 기를 수 있다.
항상 구현 후 리팩토링까지 진행하자. -
항상 작은 단위 기능을 구현하고, 이를 테스트 하고
다시 구현하라. 처음부터 끝까지 구현하려고 하지 마라.
단계적으로 요구사항을 나누고, 기능단위로 쪼개
결과를 보면서 만들어 나가라. -
뭔가 구현하기 위해 필요한 개념들은 그 때 그 때 공부해 가면서
구현을 진행하라. 그게 훨씬 빠르게 개념을 익히고, 바로 구현에
적용할 수 있어 빠르게 학습할 수 있다. -
항상 기술의 큰 그림을 먼저 파악할 것. 추상적인 부분부터 먼저 접근할 것.
추상적인 개념을 먼저 접하고, 기술의 배경이나, 어떤 문제를 해결하는지를
살피면 그 내부의 구체적인 것들을 이해하기 훨씬 수월하다. -
예제 코드 한 줄 한 줄 씹어먹기, 모르는게 있다면 바로 알고 넘어가기.
-
항상 꼬리에 꼬리를 물고 스스로 질문을 던지면서 공부하기. 그냥은 없다.
-
배우는 분들에게 요구하는 것이 똑같은 걸 3~4번 만들게 한다.
그 과정에서 만든건 항상 지우고 다시 만들게 한다.
그분들에게 항상 다른 코드가 나오도록 공부를 유도한다.
공부를 하는 위치에서는 절대 복붙하지 않았으면 좋겠다.
한자한자 다 타이핑했으면 좋겠다.
인터넷에 있는 내용을 사용하더라도, 본인이 직접 타이핑하라
똑같은 결과를 도출하는데, 서로 다른 방법으로 구현하는것이 좋은 방법이다. -
좋은 코드를 보고 참고하는 것은 좋다. 하지만 왜 이렇게 작성했는지는 분명히 알아야한다.
API를 가져다 쓸 때도 마찬가지이다. 구동원리를 이해하고, 사이드 이팩트까지 파악해보자. -
야생학습은 어떻게 해야하는가
학습을 시작할때 의미있는 프로그램을 개발하는 것을 목표로 해야한다.
책은 보조가 되어야 하며, 책에 종속적으로 진행하면 안된다
실제 업무 환경과 흡사한 환경으로 해야 의미가 있다.
특히 실수를 많이 한 학생들이 응용력이 좋은데,
책을 통해 진행하면 실수를 할 수가 없다.
실수에 대한 훈련이 현실에서 필요한데, 실수 훈련이 전혀 안된다.
책에 있는 대로 따라 치기만 하면 전혀 학습이 되지 않는다.
학습 커리큘럼을 만들때, 만들고 싶은 프로그램의 순서를 정하는게 더 효율적이다.