생각모음

Java를 시작한지 9일차, 블로그를 만든 건 5일차.

Jungsoomin :) 2020. 3. 29. 01:55

오늘 하루는 일어나 어느 정도 개인의 시간을  가지며 3h정도 쓰다가 문득 연습문제를 풀고 싶어서 프로그래머스(https://programmers.co.kr/)

에 들어가 이클립스로 타이핑을 해보기 시작했다. 이클립스의 자동완성 기능 및 소소하게 알고있는 단축키는 사용하지 않았다. 앞으로도 바쁘지않다면 그럴 것이다. 내가 끝까지치지않은  클래스,타입,메소드 등은 내 것이 아니라고 생각한다. 그러다 보니 쓰고나서는 꼭 한번 입을 소리내어 읽고 알파벳과 코드를 집중하며 본다. 그래도 오늘의 모든 것이 완벽히 남지는 않겠지만, 난 이제 그런 강박적 행동은 바라지 않는다.

 

9h~10h정도 문제를 풀면서 흥미로워 한 것 같다. 오히려 주변에서 너무 오래 앉아있는다고 할 정도니까..그 이야기를 듣고서는 스스로가 문득 너무너무 신기했다. 완벽히 자의로 행동하는 내가 신비했다.

 

그렇게 블로깅을 마치는 지금은 어느새 시간은 새벽 2시에 다가서고 있고, 나는 내 시간을 사용한 것이 부끄러움이 없다.

더 좋게 사용하고 싶을 뿐이다. 강박이 아니라 정말 더 좋게 사용하고 싶다. 

 

월요일에 다가서면 또 다시 바삐 지내겠지. 개인적으로 스스로 바쁘게 만드는 것이 좋다고 생각한다.

 

오늘은 여유로운 하루였고 초보 연습 문제를 풀면서 참 배울 점이 많았고, 정말 좋고 재밌는 하루였다.

 

이제 기술할 점은 프로그래머로써 스스로 가져야할 마인드..나 지침같은 것들이다. 개인적 기준이지만 서술하겠다.

 

첫 번째로 에러를 두려워하지말고 고마워하고 적극적으로 친근한 마음가짐으로 다가가야한다는 것이다.

내가 짠 로직이 아무리 단순해도 그로 인해 도출되는 에러도 마찬가지로 하나의 로직이다.

그러므로 또 하나의 해결해야하는 로직이자 접근해야 할 하나의 로직인 것이다. 마치 내가 만든 작품의 그림자처럼 보이지않는 이면에 로직으로 존재한다는 것이다.

프로그래머는 로직으로 말하는 사람이라고 생각한다. 에러또한 이면에 보이지 않는 로직이라면 그 에러 또한 내가 만든 로직이다. 겁내지말고 내가 만든 로직을 수정하는 과정처럼 하나 씩 출력하고 또 문제점을 찾아가면서 접근해줘야한다. 또하나의 재미있는 과정인 것이다.

단순히 문제를 풀고 맞추는데 사고가 맞춰져 있던 나의 사고에서는 문제를 틀렸음에 슬퍼하기도하고 안타까워하기도 했는데 사고에 전환이 찾아오니 아, '정답이 아니라 내가 짜내려가야할 하나의 로직이구나.' 하고서 사고가 더 적극적이고 호의적으로 변했다.

 

두 번째로 일단 직접 두드려보라는 것이다. 가만히 머릿 속으로 대단원과 소단원순으로 훑고 내려가며 사고하는 과정이 공시과정에서 내가 접근하는 방법이었지만, 프로그래밍에서는 단순한 로직도 그렇게 처리가 되어지지않는다. 머리 속으로 사고하다보면 선입견이 생겨서 '뭐지, 당연히 되어야하는데 왜? 뭐가 문제야 아무리봐도 당연한건데?' 하게 된다. 그렇게 시간을 소비하게 되고 , 나는 소위 멘붕상태에서 머무르는 것이다. 

행동으로 직접 부딪쳐보니까 생각보다 훨씬 짧은 시간안에 해결이 된다는 것을 알았다. 이제 절대 타이핑하지않고 생각으로만 로직을 짜보지 않을 것이다. 

 

세 번째로는 추상적이지만 , 기존에 가지고있던 일상적 사고와는 다른 사고를 해야한다는 것이다.

존경하는 이 세상의 모든 프로그래머 분들이 작성하신 글을 보거나 일상적인 기술들을 보아도 난 늘 미묘한 괴리감을 느끼고는 했다. 사고하는 과정이 일반적인 사람들과는 알 수 없는 차이점을 가지고 있다는 것이었다. 하지만 추상적인 관념이라 자신 스스로 그 포인트가 무엇인지 알지 못했다. '뭐가 다른거지.. 사고랑 흐름이 미묘하게 다른 것 같은데. ' 하고서는 그냥 넘어갔었다. 그게 내가 프로그래머가 되고 싶은 이유 중 하나였다.

일반적 생활에서는 수많은 변수와 상황이 있고 예측 속에서 살아가고 예측이 맞지않아도 많은 변수 속에서 자신의 예측의 오점을 찾기어렵거니와 반대로 예측의 오점을 일상의 변수와 상황을 방패로 삼아 안으로 숨어들어 자신을 합리화하고는 한다. 당연히 프로그래밍에서

그런 것은 절대 통하지 않았다. "당연히 그래." "이럴 수 있지." "막연히 느낌이그래." "이렇게 될거야." 같은 일상생활에서 쉽게 접하는 나의 사고들은 프로그래머에게는 제일 위험한 생각이었던 것이다. 내가 구현한 논리는 내 안에 존재하고 코드 안에 존재한다. 그럼 논리로 다가가야하는 것이다. 분명한 논리, 분명한 코드와 그 이면의 에러들. 그것들 속에서 무조건의 답이 아닌 나의 사고로 이어지는 나의 코드. 이 매력이 정말 짜릿하게 다가왔다.  [당연히그렇다. 막연히 느낌이 그렇다. 이렇게 될거야는 없다.] 이럴 수 있고 저럴 수 없고는 내가 이미 로직에서 짜놓았기에 이면의 에러가 말해준다. 머리 속으로만 굴리는 예측이란 없다. 내가 직접 확인하면 되는 것이다. 생각과 같이 움직이는 사람, 그게 개발자구나...싶었다.

 

네 번째는 한 번에 수학적 사고로 로직을 짜내려가는 사람은 없다는 것이다.

그 사람은 이미 천재다. 지금의 나처럼 초보단계에서도 힘든 내가 그것을 보자마자 생각으로 구현한다? 어불성설인 것이다. 일단 내가 가진 것으로 부딪치고 정보를 가지고 다시 복기하며 실행에 다가가고 에러를 찾아 하나씩 해결하고나서 그 후에 코드를 더 깔끔하게 간결하게, 즉 더 아름답게 코드를 짜는 것이다.

내가 한 행동은 내 생각으로 로직을 짠 것이다. 제일 큰 실수고 위험한 사고라고 생각한다. 모든 것에는 순서가 있다. 그보다 더 중요한 것은 나 자신이  스스로 얼마나 오만했는지 알게된 것이고 자연스럽게 반성하게된다.

 

 

 

문제보다 훨씬 중요한 점들을 많이 배웠고 , 난 그 동안의 최대의 배움을 꼽자면 이 문제를 무조건 1순위로 꼽겠다.

 

난 정말 복 받은 사람이라고 생각하게 되었다. 옆에서 끌어주고 도움을 줄 사람이 없었다면 나는 스스로의 오만함으로 코딩에 대해 반감만 늘어났을지도 모른다.

 

늘 겸손하고 늘 실천적이고 늘 직접 알아가야한다. 개발자란 그런 것 같다고 생각했다.

오늘 연습문제를 풀어보면서 정신이나 태도, 가져야할 마음가짐에서 가져가야 할 정말 많은 것을 얻었다. 돈을 주고도 사지는 못할 것 같다.

 

내가 자바를 알게되고 코딩을 알게되고 개발자를 알게된 것에 크게 감사하게 되었던 하루인 것 같다.

 

 

남은 시간동안 회복하면서 스스로 겸손하고 감사하며 하루하루 어제의 나보다 사고를 현명하고 실천적으로 하는 사람이 될 수 있도록하고 싶어졌다. 그 것도 과분하고 그것이면 충분하다 이제.