코딩을 재미있게 하는 방법이 혹시 있을까.
나는 요즘들어서 정말 코딩이 너무 힘들고 어렵고 지쳐가고있다.
음 이유를 찾아보자면, 분명 재밌을때도 있긴한데 헤매는 모습을 생각해보면
문제는 내가 논리적인 사고를 하는 것을 어려워하는 것에 있다고 생각이 든다.
그래서 어떻게하면 논리적인 사고를 차분히 하나씩 해나갈 수 있을까에 대해 고민해보았다.
아래 방법이 정답은 아니겠지만, 좀 더 재밌게 즐겁게 코딩을 하는데에 도움이 될 수 있었으면 좋겠다.
실용주의 프로그래머 책에서는 코딩도 글쓰기와 같다고 한다.
모든 것은 문서화해야하고, 정리되어야 한다. 그래서 나도 이렇게 정리해본다.
**아주 개인적인 의견입니다. 추가적으로 재밌게 코딩하는 방법을 아신다면 댓글로 알려주세요.
1. 즐겁게 상상한다
별거 아닌 사소한 것일 수 있다. 하지만, "아 코딩을 해야한다니...."라는 생각보다 "오, 이번엔 또 무엇을 만들어볼까!" 라는 생각이다. 내가 상상하는 것을 실체화 시켜 만든 것을 바로바로 돈들이지 않고 확인할 수 있는 것이 코딩이라고 생각한다. 내가 하는 작업을 즐겁게 생각하자. 분명 이건 하루하루 컨디션에 따른 것 일수도 있어서 의식적으로라도 즐거운 행위가 될 수 있도록 의식적으로 많이 생각하고 말해야한다고 생각한다. 긍정적인 언어로!
2. 간단한 작업부터 한다
내가 가장 빠르게, 최소한으로 할 수 있는 작업부터한다. 개수를 확인하고, 데이터가 제대로 있는지 확인하고, 어떤식으로 단위단위로 나눠서 작업할지 상상하면서 제일 만만하게 할 수 있는 것부터 해결하고, 좀 더 깊게 생각해야하는 것들은 조금 뒤로 미뤄본다. 성취감에서 시작하는 것이 제일 중요하다. 뭐라도 시작했으면 결과가 보여야, 다음엔 에러를 봐도 극복하려는 의지가 생기는 것 같다. 우선순위를 정하는 시간이라고 생각해도 좋을 것 같다. 내가 무엇을 가장 먼저해야할지에 대해 생각해보는 것이 중요하다.
3. 단순하게 생각한다
분명, 나는 단순하게 생각하고 코딩을 하고 있다고 생각하고 있을 것이다. 하지만 정말로 그런지, 확인이 필요하다. 그림을 그려보는 것도 좋고, 글로 써보는 것도 좋고, 남에게 설명해보는 것도 좋다. 내가 하려는 작업이 진짜 여기서 꼭 필요한 작업인지, 아니면 나중에 하거나, 다른 대체 함수가 있는지 꼭 확인하자. 무작정 행동에 옮긴다고 머릿속에 있는대로 코딩이 안될 때, 그대로 안된다고 스트레스 받지말자. 어쩌면 더 단순하게 풀 수 있는 문제인데 너무 어렵게 접근한 걸 수 있다. 단순하게 최소화해서 만들어나가자.
4. 게으름 뱅이가 되어서 이걸 어떻게 하면 최소화해서 할 수 있을지에 대해 고민한다
위에서 단순하게 생각하는 것과 함께 맞물리는 이야기이다. 게으름 뱅이가 되어야한다. 코드에서 중복이 없도록, 내가 나중에 수정을 할 것을 생각해서, 최소한으로 코드를 수정하게 만드는 것이다. 최대한 변수설정과 주석으로 설명을 꼼꼼히 해두어서 내가 나중에 찾는데 귀찮지 않도록 만든다. 내가 생각했던 것을, 실체화하면서 잔가지들은 우선 쳐내고 굵직굵진한 것들부터 하고 사소한것들을 해결할 수 있도록 미리미리 변화 되는 것들을 잘 관리해야한다.
5. if 문과 for문으로 최대한 간단하게 해결해보려고 하고 그다음에 다른 함수들을 사용한다
어떤 언어든 변수, 반복문, 조건문은 항상 빠지지 않는다. 3가지를 활용해서 간단한 작업들부터 시작한다. 너무 많은 반복문과 조건문을 사용하게 되면 그때부터 함수를 사용하고 다른 방법을 알아가는 방식이 제일 심플하다고 느낀다. 어떤 문제를 어떻게 해결하려고 하는 것이든, 우리는 컴퓨터가 일을 하게 만들고 우리가 편하려고 만드는 행위를 하려고 만드는 것이다. 따라서 어떤 언어를 사용하든 이렇게 3가지를 최소한으로 이용해서 우선 머릿속도 최소화로 돌아갈 수 있도록 만들어보자.
6. 내가 만들고자하는 결과물을 확실하게 생각하고 만든다
내가 뭘 만들고자 하는지, 왜 만들고자 하는지 WHAT과 HOW 부분을 잘 생각하고 만들자. 어느순간 너무 매몰되어서 내가 왜 이런 코드를 짰는지 까먹으면 안된다. 이 코드를 짜는 이유는 무언가를 만들기 위해서다. 당신은 무언가를 왜 만들려고 하는가? 어떤 결과물이 나올꺼라고 상상하고 하는가? 혹시 결과물이 뭔지 모르겠다면, 지금 코드도 뭔가 문제가 있을 가능성이 매우 높다.
7. 안될 때는 혼자서만 고민하지말고 다른 사람들과 그 문제에 대해 대화를 나눈다.
컴퓨터와 대화(코딩)를 하다보면 진짜 속이 터진다. 에러, 에러, 빨간줄, 빨간줄, 그러다 멈춤.....
컴퓨터는 간단한 오류는 되게 얄밉게도 잘 알려주는데, 뭔가 자기도 모르면 그냥 나 힘들다고 못하겠다고 에러만 준다.
우리는 우선 컴퓨터 문제니까, 나만 이런거 아닐꺼니까, 구글링을 이용해 나의 동지를 찾는다.
전세계에 한두명쯤은 나와 비슷한 오류를 내고 골치아파하고 있을 것이다. 하지만 그래도 답을 찾을 수 없다면,
우리는 사람이라서 사람과 대화를 나눠야된다.대화를 함으로써, 어쩌면 정리되지 않았던 것들이 정리 될 수도 있고, 다른 시야에서 다른 각도에서 그 문제를 바라보고 해결해 줄지도 모른다. 분명 이런 질문을 할 수 있는 동료가 있어야겠지만, 없다면 Stack overflow에서 동료를 찾자.
"내가 이런걸 만들려고하는데 이 함수에서 에러가 나. 근데 뭐가 문제인지 모르겠어. 문제가 있을만한 후보는 1,2,3개 정도 있는거 같은데 혹시 너는 어떻게 생각하니?" 라고 물어보면 베스트겠지만,
분명 그냥 에러났다고 먼저 징징거리고 싶을거 나도 다안다. 그러니까 구글링하고 나서 잘 생각을 하고 질문하자. 적당한 질문을 통한 토론 또는 논의는 발전할 수 있는 기회가 될 것이다.
8. 지금 내가 하고 있는 것을 한줄로 설명할 수 있는가?
가끔 내가 하고 있는 것들을 구구절절 설명해야 될 때가 느껴지지 않는가? 특히 상사한테 보고할 때, 이거 조건은 이렇게 해서 이렇게 결과 나왔습니다. 아래 책을 참고해보면 좋다. 커뮤니케이션을 잘하기 위해서, 보고를 잘하기 위해서, 그리고 내가 한 일을 포트폴리오나 이력서에 한줄로 올릴 수 있도록 설명해보자. 모든 일은 다 정리가 필요하다.
9. 내가 지금 하고 있는 작업은 정말로 잘 정리되어가고있는가?
가장 마지막은 피드백이다. 내가 하고 있는 작업 패턴은 정말로 효율적인지? 내가 지금 한 결과물에 대한 피드백도 분명히 중요하지만, 내가 진행하는 과정에서 군더더기는 없는지에 대해서 고민해볼 필요가 있다. 내가 진행하는 과정에서 일어나는 여러가지 이슈들을 꼭 다시 한번 살펴보길 바란다. 그리고 그 속에서 배울 점들을 놓치지 않았으면 좋겠다.
이렇게 정리했는데 나는 여기서 지키고 있는 건 얼마나 되는건가 반성하게 된다. 나도 오늘은 좀 더 즐거운 마음으로 코딩을 하고 하루를 마무리해야겠다. 좀 더 즐겁게 우리 프로그래머들이 일하고 발전하고 부자됬으면 좋겠다.
읽어주셔서 감사합니다. 수정사항은 언제든지 알려주세요.
'소소한 일상 > 소소한 정보' 카테고리의 다른 글
정보 보안 기사 시험 일정, 기출 문제 (0) | 2021.02.14 |
---|---|
[인강추천] 수학 인강 추천 (0) | 2021.01.21 |
쿠팡파트너스(ID: AF4278165) 추천인 아이디, 하는 방법 설명 (0) | 2021.01.18 |
마제스터치 MINILA Air 무선 기계식 키보드 - Insert 키 (0) | 2021.01.17 |
[자기계발] 리무브클럽 2020년 8-12월 참여 후기 (0) | 2021.01.14 |