본문 바로가기

프로그래밍 일반

프로그래밍 공부를 어떤 마음가짐으로 시작해야 할까요?

어떻게 개발자가 되던 누구나 처음 시작은 있습니다.
지금 현장에서 일하시는 분들은 다들 고생해서 시작하신 분들이 많겠죠.
각자 그 위치에 가기까지 방법은 여러 가지가 있으셨고, 그 방법대로 성공하셨기 때문에
이후 시작하시는 분들께 조언하시는 경우 대체로 자신이 아는 방법을 중심으로 알려 주실 겁니다.
 
혹은, 지금 현장에서 가장 많이 쓰이고 있는 것들을 중심으로,
가장 많이 사람들을 필요로 하는 곳의 기술을 배우라고 조언하시는 분들도 많을 것입니다.
요즘 취업 시장이 많이 어렵기 때문에,
새로 배우시는 분들은 빠른 취업을 위해 더욱 수요가 많은 쪽을 우선적으로 생각하고 계시겠죠.
 
하지만, 이 모든 것들을 뛰어넘을 만큼 개발 환경이 급속도로 바뀌고 있는 것 같습니다.
무수히 많이 등장하는 새로운 개발 스택도 그렇고, 인공지능의 등장도 그렇고 말이죠.
 

특정한 개발 기술에 안주하는 개발자는 위험합니다.

현장에서 일하시는 개발자 분들은 흔히들 말씀하십니다.
 
'새로운 기술이 많이 나와본들, 현장에서 그런 게 바로 쓰일 것 같아? 안정적인 거 쓸 수밖에 없어.'
 
반은 맞고 반은 틀린 이야기입니다.
실제로 막상 현장의 기술은 언제나 최신의 기술을 도입하기 어렵습니다.
아직 검증되지 않은 최신 기술을 바로 도입했다가 문제가 생길 경우 대응이 어려울 수 있기 때문이죠.
 
하지만 그분들이 하나 잊고 계시는 사실이 있습니다.
 
'기술의 도입을 결정하는 건 그분들이 아닙니다.'
 
어느 날 갑자기 높은 분들은(...) 새로운 기술을 도입하겠다고 결정하시죠.
그리고 일단 결정하시면, "개발이 가능한 개발자를 신규로 투입해서라도" 도입합니다.
그러면, 기존 개발자는 어떻게 해야 할까요?
그 기술을 어떻게든 배우던, 아니면 도태되던, 선택을 강요당하게 됩니다.
자신의 의지와는 상관없이 말이죠.
 

특정한 개발 기술에 의존하지 않는 공부가 중요합니다.

서두에서 말했듯이, 지금 수요가 있는 공부를 해서 취업을 하는 것도
눈앞의 현실적의 문제를 해결하기 위해 중요할 수 있습니다.
하지만, 거기서 멈추면 그다음이 없는 사람이 되어 버립니다.
 
더군다나, 어제 글에서도 말했듯, 단순한 코딩 기술만 가지고 있는 사람은
생각보다 빠른 시간 안에 코딩 노하우를 쌓고 있는 인공지능에게 대체될 가능성이 높습니다.
그렇다면 그 사람들은 그때는 무엇을 해야 할까요? 다시 처음부터 새로운 기술을 시작해야 할까요?
 
사람들은 계속 호소합니다. 계속 바뀌는 기술을 따라 잡기가 너무 힘들다고.
그렇다면 그 바뀌는 기술의 꽁무니를 계속 따라잡다가 지쳐 쓰러지는 게 정답일까요?
아마도 아닐 것입니다.
 
제가 생각하는 정답은 바로,
 
"프로그래밍의 기초적인 방법론을 익힌 뒤, 새로운 기술에 빨리 대처하는 요령을 배우는 것"
 
입니다.
 
어떻게 보면 이상한 말일 수도 있습니다. "새로운 기술에 빨리 대처하는 요령" 이라니?
조금 전에 "바뀌는 기술 따라잡기도 버겁다"라고 했는데?
네, 그건 바로 프로그래밍 언어 사이의 유사한 부분을 간과하고 공부하기 때문입니다.
 
대부분의 프로그래밍 언어는 컴퓨터에게 명령하기 위해 비슷한 흐름과 방법,
심지어 이름이 같거나 비슷한 명령어를 사용하기 때문에,
하나의 언어에서 그 내용이 갖는 의미를 명확하게 이해하게 되면,
이후 다른 언어를 공부할 때에도 비슷한 내용을 만날 때 '아~ 이건 이런 내용이지~' 하고 깨닫는 다던가,
혹은 거꾸로 '이 언어에서 이런 기능을 처리하려면 어떻게 하지?' 하고 찾아보게 됩니다.
그렇게 출발한다면, 새로 배운 기술이라 할지라도 완전히 제로 베이스에서 출발하는 게 아니라
기초적인 내용을 가지고 출발하는 것이기 때문에 빠르게 적응하면서 필요한 응용 기술을
짧은 시간에 스스로 찾아 배울 수 있게 될 것입니다.
 
제가 앞으로 실제 몇 가지 언어를 통해서 어떻게 진행할지 예를 보여드릴 예정입니다.
많이 쓰이고 있는 언어들이 어떻게 비슷하게 연결될 수 있는지 보시면,
앞으로 어떤 방향을 가지고 공부하실 수 있는지 조금이나마 힌트를 가질 수 있으실 겁니다.
 

그런데, 정작 어디서 출발하라는 거야?

하지만, 정작 난감한 문제가 있죠. 출발점으로 적당한 언어는 무엇인가?
제가 이 문제 때문에 작년부터 계속 고민을 했습니다.
 
다른 분들이 많이 출발점으로 삼으시는 언어는, 파이썬(Python)입니다.
그리고, 자바스크립트(Javascript)를 포함한 웹(Web) 환경을 출발점으로 많이 하십니다.
 
하지만, 저는 여러 가지 문제로 이 두 가지를 출발점으로 하는 것을 추천하지 않습니다.
그 내용은 조금 길어질 것 같으니 나중에 별도의 포스팅으로 다룰 예정입니다.
 
제가 사실 작년부터 계속 고민했던 것은 하이브리드 환경 개발 플랫폼인 플러터(Flutter)였습니다.
그런데, 이것도 사실 출발점...으로 삼기는 좀 쉽지 않은 녀석인 것이 사실입니다.
이 내용 역시 플러터를 소개할 때 말씀드리도록 하겠습니다.
 
그래서 정말 백지상태에서 출발점으로 하시는 분들은 어디서부터 하게 할 것이냐... 를 고민하다가,
어제 저희 집 아들 포스팅한 내용과 관련 있는 것을 소개하게 되었습니다.
 
바로, 교육용 프로그래밍 언어(EPL, Education Programming Language)입니다.
프리미어리그 아닙니다 ㅎㅎ
EPL로 검색하시면 바로 프리미어리그 나오니, 검색어 입력하실 땐 반드시
"EPL 코딩" "EPL 언어" 이렇게 넣으셔야 합니다(...)
 
아시는 분들은 아시겠지만, 엔트리(Entry)(https://playentry.org/)라던가
스크래치(Scratch)(https://scratch.mit.edu/) 같은 녀석들을 소개하려고 합니다.
얘네들 얘기는... 다음 포스팅에서 하죠.
 
참고로 이 언어들에 대한 직접적인 강좌나 튜토리얼은 아닙니다.
여기서 어떤 것들을 챙겨야 하는가 하는 내용을 중점적으로 말씀 드리겠습니다.
하다보면 튜토리얼이 될 수도 있을...까요?