어떤 글을 보며 개발자 실력 향상에 대한 깨달은 점이 있어서 글로 정리해보려고 한다.
좋은 글을 볼 수 있어서 감사하다!
1. 컴퓨팅 사고와 실력 향상의 본질
평소 컴퓨팅적 사고에 관심이 있고,
나도 이걸 키워야겠다는 목표를 잡은 적이 있다.
그러나 실제로 행동에 옮기기가 쉽지 않다.
비전공자 문과 입장에서 컴퓨터공학 전공자나
잘 하는 개발자들은 뭐가 다를까를 생각해봤을 때
그들이 단순히 많이 컴퓨터를 공부해서가 아니라,
컴퓨팅적 사고력 훈련이 많이 되어서
잘 하는 것이 아닐까라는 생각을 했던 것 같다.
사실 컴퓨팅적 사고력에 대한 정확한 이해는 없고 조금 막연한 생각이긴 했다.
그러나 분명 나같은 사람과 생각 방식은 다를 것이라고 생각했다.
수학 잘 하는 사람들의 사고력과 비슷하지 않을까?라고 생각했었다.
일단 A는 B고 B는 C이면 A는 C다라는 생각을 언제나 잘 하겠지?
이런 생각을 하고나서 내가 개발할 때를 생각해봤다.
난이도가 쉽거나 약간의 챌린지가 있는 요구사항 정도는
나름 컴퓨팅적 사고를 하는 것 같기도 하다.
그러나 조금 문제가 어려워지면 이 사고력 방식이 깨진다.
그래서 평소에 생활습관 자체를 컴퓨팅적으로 해보려고도 노력했다.
버스를 타러갈 때, 요리를 할 때 등..
그러나 이건 난이도가 낮다보니 어느 정도 하고나서
다시 무의식적인 행동으로 생각이 처리되버린다.
결국 컴퓨팅 사고 능력을 올리려면 알고리즘, 자료구조 등을 천천히 공부해야하고
업무할 때도 구조와 차분한 이해를 바탕으로 훈련을 해야하는데 습관화하기 쉽지가 않다.
그래서 이런생각도 다시 흐려지고 1년 정도 시간이 지난 것 같다.
좋은 개발자가 되기 위한 본질은 맞는 것 같은데
그에 걸맞는 행동을 솔직히 못하고 있었다.
2. 우연히 발견한 시니어 웹개발자 글
시니어 웹프론트 개발자이신 테오님이 쓰신 글이다. 이 글이 내가 갖고 있던 여러 의문들과 심리적 장벽(?)을 내려주었다.
그리고 생각하지 못한 부분들을 많이 건드려주셨다.
간단히 이분의 글 내용을 정리하면,
의식적인 노력으로 컴퓨팅사고력을 키우면
본질적인 개발 능력을 키우는 데에 도움이 된다.
코딩 테스트는 이를 훈련하고 검증한다.
개발은 학문이라기보다 훈련이다. 글공부만으로 실력을 키우기 어렵다.
남의 코드를 가져와서 일단 어떻게든 실행시키고 변경해봐라.
(+의식적인 컴퓨팅 사고, 생각은 좀 하면서)
이정도로 정리할 수 있을 것 같다.
내가 아차 싶었던 것은 개발이 훈련이라는 것이다.
사실 이걸 김영한님을 통해 어느 정도 깨닫긴 했다.
김영한님이 강의에서 가끔 언급하시는
야생형 개발자, 학자형 개발자가 이 내용을 담고 있다.
김영한님은 강의에서 아래와 같은 얘기를 해주셨다.
야생형 개발자는 일단 만들어보고 나중에 공부하는 편이고,
학자형은 일단 차례대로 책, 강의 등으로 학습하는 스타일이다.
본인도 학자형이었으나 주변을 보면 야생형이 실력이 빠르게 향상된다.
그걸 보고 본인도 조금 방법을 바꾸게 되었다.
나도 이 생각에 굉장히 공감한다.
강의만 들으면 머리에 많이 남지를 않는다. 금방 휘발된다.
직접 타이핑 해보고 강의 없이 만들어봐야 한다.
내가 경험해봐서 안다. 정말 머리에 안 남는다.
결국 본질은 컴퓨팅적 사고력 훈련과 개발 훈련이다.
그러면 저 본질을 실천하면 되는데 왜 어려울까?
내가 가진 나의 문제점은 두려움이 가장 큰 것 같다.
아무 것도 없는 상태에서 혼자의 힘으로 다 해야된다는 두려움,
강의를 통해 깔끔하게 만들어진 소스를 혼자서 만들면서 고장내는 두려움 등이랄까?
그래서 나에게 프로젝트나 개발 등은 남들보다 동기가 더 필요한 것 같다.
첫 회사에 입사해서 게시판 만들어보라고 할 때는 큰 동기가 있었다.
첫 단추를 잘 꿰어야지 좋을 것 같다는 생각에 엄청 열심히 만들던 생각이 난다.
결국 당시 후다닥 페이징 구현까지 하면서 잘 구현했다는 칭찬을 받았던 기억이 난다.
이 때는 고장이고 뭐고 생각할 틈이 없었다.
일단 빨리 잘 돌아가고 보여주고 싶은 욕구가 컸다.
글을 쓰다보니 결국 개발을 잘하려면 위의 요소를 재밌게 생각해야 한다.
개발을 하다가 오류가나고 소스가 고장나는 것 자체를 즐겨야 한다.
완벽주의를 버려야하며 자신감 있는 행동주의자가 되어야 한다는 걸 느낀다.
여러모로 좋은 개발자가 되기 위해 스스로 외면한 본질들과
새롭게 알게 된 본질들을 다시 생각해볼 수 있었다.
3. 즉석 회고 해보기
연차가 조금 쌓이면서 그래도 예전보다 개발적인 부분에서
자기객관화가 더 되었다고 생각했는데 아직 부족한 것 같다.
지금 공부하고 있는 것들을 돌아보면서 잘 하고 있는지,
본질을 벗어난 건 아닌지 아래와 같이 생각해봤다.
우선 SQL 책을 읽고 있다.
사실 에전에 읽다가 실패해서 읽기 시작한 것은 본질에 맞는 행동이 아니다.
그러나 예전보다 조금 더 본질에 가깝게 읽고 있다.
빨리 읽겠다는 생각을 버리고 SQL을 머리로 짜보고
내 실무 경험에 적용해보면서 더 이해하면서 읽고 있다.
궁극적으로 다 읽고 간단히 정리 후,
사내 SQL 튜닝에 적용해본다면 본질에 맞는 공부라고 생각한다.
그리고 JPA 공부를 하고 있다.
이것도 역시 본질에 반은 맞고 반은 틀리게 공부한 것 같다.
사실 JPA 활용2정도까지만 공부하고 프로젝트를 만들거나
오픈소스 등을 가져와서 공부해봤다면 더 체득이 되었을 것이다.
그러나 강의가 재밌어서 Querydsl까지 일단 공부했다.
그나마 잘 한 것은 강의에 무작정 따르는 것이 아니라
중간중간 일시정지 하면서 내 방식대로도 돌려보고
궁금하면 다르게도 돌려보기도 했다.
그리고 과거에 헀던 가장 안 좋은 공부법(훈련법)이
강의 내용을 디테일하게 다 정리하는 것이다.
이게 가장 본질을 벗어나는 개발 공부법임을 이제 더욱 깨닫게 되었다.
그래서 최근에는 기억할 부분 등만 간단히 정리하긴 했는데 이건 잘 한 것 같다.
알고리즘과 자료구조 공부를 위해 책을 샀다.
좋은 행동이라고는 생각이 들고
C언어를 순서대로 공부하지 않고
일단 공부하다가 막혀서 공부한 것도
내 생각엔 잘 한 것 같다.
그러나 문제는 지금 목적이 전도되서
C언어 공부한다고 몇주째 공부를 안 하고 있다.
이게 바로 본질과 벗어난 공부의 대표적인 사례가 아닐까..
C언어 공부는 도움은 되겠으나 일단 우선순위가 밀린다.
그래서 원래라면 C언어 공부한 것을
다시 복습하고 글로도 정리하겠으나,
바로 알고리즘과 자료구조 책으로 넘어가야겠다.
개인프로젝트라기에 조금 애매하긴 한데 어쨌든 진행은 하고 있다.
회사에서 쓰려고 만들고 있긴 하지만
직접적으로 하라고 한 것은 아니고
내가 도움이 될 것 같고 재밌을 것 같아서 하고 있다.
진행 속도가 좀 더디지만
훈련의 관점에서 조금씩 게속하는 것은 도움이 되는 것 같다.
개인적으로 알고리즘과 자료구조 공부와 함께
이 프로젝트 진행 + @(남의 코드 가져와서 훈련하기)를 진행하면
가장 좋은 방법이 아닐까 생각이 든다.
4. 마치며
이 글 덕에 나의 사촌형이 생각났다.
어릴 때부터 컴퓨터에 천부적인 재능을 보였는데
결국 서비스 하나 만들고 외국에서 운영하면서 꾸준히 일하고 있다.
본인 말로는 이제 실무는 거의 안 한다고는 하고..
회사운영하면서 시간남을 때 개발도 도와준다는데
도와주는 수준치고는 너무 빠르고 완성도 있는 프로그램을 만든다.
이 형이 나에게 개발실력 키우는 방법을 알려줬는데 사실
행동으로 안 하고 있다가 위의 테오님 글을 보며 깨닫게 되었다.
오픈소스 하나 끌어와서 분석하고 따라 만들어봐라.
이 말이 다시 떠오른다ㅎㅎ
생각해보니 이 형은 뭐든 잘 했었는데 무언가 따라하는 것에
거리낌이 없던 것 같다.
반면에 나는 무언가 베껴서 시작하는 걸 스스로 이상하게 금기시한 것 같기도 하다.
그러나 개발자는 잘 베끼는 것 자체가 실력이다.
뭔가 행동에 있어서 막힘이 없어야 한다는 걸 많이 느낀다.
생각의 장애물을 많이 내려놔야된다.
추천해준 오픈소스들도 있는데 한 번 다시 봐봐야겠다!
'개발자 일지 > 기타' 카테고리의 다른 글
[기타] 개발 커리어를 다시 신경 쓰기까지 + 나의 실적 평가 (0) | 2024.11.26 |
---|---|
[개발 기타] 최근 학습 내용 정리 및 TODO 정리 (15) | 2024.11.15 |
[자료구조] 자료구조 개념, 종류 알아보기 (2) | 2024.10.02 |
동시성 제어 개념, 방법, Lock 종류 및 비교 (1) | 2024.09.25 |
[양방향 통신 방법]폴링, 롱 폴링, 웹소켓(+STOMP, SockJS) (0) | 2024.09.19 |
개발자 취업 이직 준비 방법(이력서, 공부, 면접, 비전공자 팁) (0) | 2024.09.17 |
[CSS]CSS 사용자 지정 변수란, 사용법, 사용이유, 기본값 설정 방법(root, var) (0) | 2024.09.11 |
정보처리기사 필요성, 쓸모 여부, 공부법 알아보기(비전공자 필독) (0) | 2024.09.10 |