-
-
어떤 개발자가 살아남는가 - 인문학, AI를 이기는 소프트웨어
이경종 지음 / 비제이퍼블릭 / 2022년 3월
평점 :
개발자에 대한 관심이 높습니다.
이전과 다른 대우와 작업 여건이 많은 젊은이들의 관심을 끌고 있는 것 같네요.
전반적으로 이전보다 좋아진 것은 맞습니다만 '누구나' 좋은 대우를 받는 것은 아닙니다.
AI는 다른 분야도 마찬가지이겠지만 '개발'분야에도 영향을 미치고 있습니다.
이 책의 저자는 20년차 소프트웨어 개발자로 '개발자란 무엇인가'란 주제에 대한 고민을 하였고, 그 대답을 인문학에서 찾았습니다.
결국은 '인간'을 향하고 있다는 것이 답이지요.
이 책은 그 답을 찾기 위한 과정을 보여주고 있습니다.
AI가 많은 것들을 대체하고 있지만, 결국 AI를 만드는 주체는 인간이며 궁극적으로 AI는 개발자를 대체할 수 없습니다.
단순히 폄하하자면 AI는 사람의 경쟁 상대가 아닌 도구에 불과합니다.
AI가 해야 하는 일은 무엇이고, 인간이 해야 할 일은 무엇일까요?
간단히 말하자면, 정답이 이미 존재하는 것은 AI가 하면 되고, 아직 답이 없는 것은 인간이 해야 할 일입니다.
이미 나와 있는 답을 보여주는 것은 기계가 더 잘합니다.
인공지능의 기술은 어느 정도 추론이 가능한 답도 인간보다 더 정확하게 뽑아낼 수 있습니다.
인간은 기계가 할 수 없는 답을 찾아야 합니다.
지금 하고 있는 일이 정답이 있는 일인지, 아닌지 생각해 볼 필요가 있습니다.
개발이 늘 새로운 답을 찾는 과정은 아닙니다.
지난 달에 했던 일을 지금도 똑같이 하고 있다면 이미 푼 문제를 또 풀고 있는 것입니다.
같은 일을 하더라도 새로운 방법을 찾으려고 노력해야 합니다.
미래를 보지 못하는 이유는 질문을 하지 못하기 때문입니다.
오로지 정답만을 향해 전진하는 것이 최선이 아닐 수도 있습니다.
때로는 쓸모없어 보이는 것들로부터 쓸모 있는 것들이 만들어 집니다.
창조의 밑거름은 상상력이고, 상상력은 여백에서 오기 때문입니다.
개발자로 어느 정도 이상의 경력이 되면 이 말에 공감할 수 있을 것입니다.
늘 새로운 일, 눈에 보이는 일만 할 수 없습니다.
하찮은, 귀찮은 일이 때로 큰 도움이 되곤 합니다.
그렇기에 쓸모없는 일은 없다고 생각합니다.
지금 당장은 번거롭고 도움이 되지 않는 것 같지만 언젠가 분명 쓸모가 있을 것입니다.
가장 완벽한 소프트웨어는 완벽을 추구해서 만들어지는 것이 아니라 실패를 이어 나가는 과정에서 만들어집니다.
실패로부터 성공을 만들어 내기 위해서 그리고 더 좋은 개발자가 되기 위해서는 철학이 필요합니다.
완벽한 소프트웨어가 존재할까요?
전 없다고 생각합니다.
늘 새로운 기능을 추가하고, 더 나은 개선을 위해 변경됩니다.
그 과정은 실수와 실패의 연속입니다.
실수와 실패를 하지 않을 수 없습니다.
다만 줄이기 위해 다양한 방법과 정책을 도입하는 것이지요.
실수와 실패를 용인하지 않는 회사는 개발을 하지 말라고 말하는 것과 같습니다.
가장 성공한 기업 중 하나인 아마존도 성공한 프로젝트보다 실패한 프로젝트 수가 몇십배는 더 많았음을 기억하시길...
프레임 속에 갇히면 창조와 통섭과는 멀어질 수 밖에 없다.
우리가 고개를 들어 바라보아야 할 것은 프레임의 바깥쪽이다.
모든 프레임을 둘러싸고 있는 것이 바로 인간과 그 인간들이 이루고 있는 조직과 사회다.
개발을 하다보면 방법과 프로세스에 집중하게 됩니다.
일종의 직업병으로 특정 분야에 편협한 사고를 하게 되지요.
그만큼 특화된 사고방식을 할 수 있다는 것은 장점이기도 합니다.
하지만 그 이상을 원한다면 그 사고방식을 깨야 합니다.
그것이 바로 통섭이고 융합입니다.
솔직히 쉽지 않습니다.
그리고 이제 막 개발을 시작한 분들에게는 권하고 싶지 않습니다.
일단 자신의 분야에서 어느 정도 전문성을 갖춘 후에 필요한 자질이라 생각합니다.
모방으로부터, 이미 만들어진 프레임으로부터 시작할 수 밖에 없지만 모방하기만 하고 프레임 안에만 머문다면 AI와 다를 바 없게 된다.
모방에만 그친다면 코더 이상의 프로그래머가 될 수 없다.
모방으로부터 시작하지만 그 이상의 가치를 만들어 내면 그것은 창조가 된다.
창조적 모방이 곧 창조다.
'코더'와 '프로그래머'의 차이가 뭘까요?
코드에 자신의 생각과 철학이 있느냐의 여부라 생각합니다.
예전에 일본 기업의 프로젝트에 참여한 적이 있습니다.
디테일한 민족성을 보여듯이 기획서가 무척 꼼꼼하더군요.
그냥 기획서대로 구현만 하면 되었습니다.
말이 좋아 구현이지 그냥 프로그래밍 언어를 알고 있는 사람이 할 수 있는 타이핑이란 생각이 들었습니다.
작업은 쉬웠지만 성취감을 느끼긴 어려웠던 프로젝트였습니다.
지금 코딩을 하고 있는지, 프로그래밍을 하고 있는지 생각해 보세요.
처음부터 복잡하고 어려운 프로그램에 도전하는 것은 좋지 않습니다.
아는만큼 보이고, 사용할 수 있습니다.
그러기 위해서는 일정량의 경험과 지식이 축적되어야 합니다.
지금 당장 멋진 프로그램을 짤 수 있을 것 같은 열정은 잠시 접어두면 좋겠습니다.
다만 그 열정을 포기하거나 잃어버리지 않았으면 합니다.
비난의 대상이 되는 것은 부주의하게 기존 코드를 복사해서 붙여넣기하는 것이지 정보를 가져다 쓰는 데 있는 것이 아니다.
소프트웨어 개발에서 많은 문제가 확실히 알지 못한 상태에서 복사해서 붙여 넣은 코드들 때문에 발생한다.
개발자 중에서 단 한번도 코드를 복사해서 쓰지 않은 분이 있을까요?
단연코 없다고 생각합니다.
자신이 만든 것이든, 공개된 오픈 소스든 자신이 생각하는 최고의 코드를 가져다 씁니다.
가져다 쓰는 것이 나쁜 것이 아닙니다.
개인적으로는 권장합니다.
이미 남이 잘 만들어 놓은 바퀴를 새로 만들 필요가 없습니다.
다만 '제대로 알고' 사용해야 합니다.
자동차 바퀴가 필요한 자리에 오토바이 바퀴를 넣으면 안되니까요.
그 아무리 멋지고 좋은 기술이라도 인간에게 유용하지 않다면 의미가 없습니다.
요즘은 보기 어렵지만 예전에 스타트업들 중에 기술만을 중시하는 회사들이 있었습니다.
그것을 이용할 사용자에 대한 고려보다는 가장 최신의, 가장 멋진 기술만을 고집했습니다.
개발자가 만드는 것도 결국 사람이 사용하기 위한 것입니다.
지금 내가 짜는 코드가 사람에게 어떤 의미가 있을지 한 번 더 생각할 수 있다면 훨씬 멋진 개발자가 될 것입니다.
미래의 인간은 두 부류로 나뉠 것이다.
그 둘은 프로그래밍을 하는 사람들과 프로그래밍을 당하는 사람들이다.
책머리에 있느 글입니다.
개발을 하고 있다는 것이 프로그래밍을 하고 있다는 것과 동의어가 아닙니다.
이 책을 보면서 프로그래밍을 하고 있는지, 당하고 있는지 생각해 보았으면 합니다.
중급 이상의 개발자분들에게 '개발'에 대해 새로운 시각을 보여줄 수 있는 좋은 책입니다.