안녕하세요.
클량 여러분들께서 생각하시기에
프로그래밍적 재능
이 있다, 없다를 스스로 판가름하기에 어느정도의 시간과 노력이 투입되어야한다고 생각하시나요?
저의 경우, 파이썬 2달 (책 한권), C언어 (3달), R(2달), 스위프트(한달)을 배웠음에도 기능을 구현하기 위해서 약 10줄의 코드가 필요한 함수를 스스로 짜지 못하는 경험을 최근에 하고 있습니다. (임의로 입력된 로또 번호가 랜덤으로 생성된 로또 번호와 일치할 확률과 비용 구하는 함수)
또한, 소괄호, 대괄호, 콤마의 위치 등이 꽤나 혼란스럽게 다가오더라구요.
이정도 했는데 이런 실력,상태라면 프로그래밍에는 재능이 없다고 눈치채면 될까요?
솔직한 고견을 구합니다.
(미리 메리크리스마스입니다)
그러면 재능이 있다고 봅니다.
책으로 읽고 그냥 배운거랑 직접 만드는건 또달라서.. 남의꺼 보고 베껴서라도
계속 만들다보면 왜 이렇게 돌아가는지 알게되고 그럼 실력도 늘겠죠... 그이후에 판단해도 늦지않을듯요
어떤 허접한 코드라도 상관없으니 매일 코딩하는 시간을 반나절 이상 유지할 수 있으면
본문에 말씀하신 내용은 재능과 상관없이 그냥 될거에요.
책자를 보고 여러개를 접하면서 기본기를 다지는 것도 중요한데.. 실 코딩을 하게 되면, 뭐 부터해야 하지..
참고할 소스나 자료로 어느정도 따라하다가, 스스로 무언가를 만들어내야 할때는 아무것도 못하는 경우를 너무 많이 보아왔습니다. (저도 초보때 그랬고요..)
로직이 머리속에 어느정도 잡혀야 막힘없이 코딩이 가능해집니다.
그래야 뭘 찾아봐야 할지, 어떤 코드를 참조해야 할지도 알 수 있게 됩니다.
이게 하루 아침에 되는 것이 아니니, 기본기가 좀 잡혔으면.. 프로젝트 진행하면서 해 보고 싶은거나 기존것을 업그레이드 해 보세요.. 이때 해당 프로젝트는 완벽할 필요는 없고, 자신의 취약 부분과 로직를 그려내 보는게 중요합니다.
(이때는 책자나 구글링을 최소화해서 머릿속 지식으로 구현해 보는 것이 더 좋습니다.)
대충 10여개 정도하면 머릿속에 로직이 그려질겁니다.
로직이 그려지면, 이제는 완벽을 위해 책자나 구글링을 참조해 보강하면서 완벽을 추구하면 이전보다 막히는 부분은 많이 없어질거에요..
해당 글을 보았을때, 눈으로 코딩한거, 복붙을 주로 한거 같습니다.
직접 코딩했으면 괄호나 기호로 헤깔리지는 않을겁니다. 실 코딩을 우선 해 보고 결정하는게 좋아 보입니다.. ㅎㅎ
라고 하셨는데 이 부분이 문젠거 같아요... 하나도 제대로 못하는데 언어 4개를 배웠다고 할수 있을까요?
요즘은 초등학교에서 이런걸 코딩 교육이라고 가르치죠.
컵과 물통을 가지고, 컵에 물을 따르는 것을 하나하나 글로 쓰고, 옆 친구는 그 쓰여진 대로만 행동을 합니다.
그럼 몇번 반복을 하면
'물을 컵에 따라라 가 아니라'
'왼팔을 뻗어서 컵을 잡고, 오른손으로 물통을 잡고 30cm 위로 올린 뒤 컵 위로 옮겨서 약 10cm 정도 오른쪽으로 향하게 하고 물병을 약 2초간 45도로 기울인 후 올려라.'
대충 이런거요..
말씀하신 로또번호 관련 함수들도 결국엔 글로 표현이 되어야 합니다.
그냥 무작정 하는게 아닙니다.
(로또를 잘 모르지만..)
45개 숫자로 7개의 숫자를 만들 수 있는 조합 수를 만드는 수학적 식을 알아야 겠죠?
(사실 저건 수학이나 마찬가지긴 하지만,, )
뭐 이런식으로 접근을 해야한다고 생각합니다.
소설을 쓸 때, 캐릭터의 성격, 캐릭터의 과거, 직업, 나이, 사는 곳,
세계관 들을 어느정도 정해두고 작성하는거지,,
글을 쓰면서 캐릭터를 생각하진 않을 겁니다.
이런식으로 코드도 머리로 어떻게 하면 될지를 고민하고 작성을 하면 머릿속의 생각을 표현할 수 있을겁니다.
생각을 하고 여기에서 저기로 어떻게 가지?? 하면 그 부분을 더 작게 작게 쪼개보세요.
제가 처음 일할때 만났던 팀장님과 5년전 같이 일했던 코딩 시작한지 2년된 직원을 만났을 때 입니다.
처음 일할때 만났던 팀장님은 그때 당시 php개발만 10년 넘게 해오셨는데, 중학생 시절부터 C언어부터 시작해서 코딩이 재밌어서 이것저것 하셨더라고요. 미국에서 3년정도 일하다가 한국에 돌아오셨는데, 서버면 서버 코딩이면 코딩 모두 잘했던 분이었습니다. 비즈니스 로직 이해도도 높고요
운영에 필요한 대부분의 지식을 가지고 있던 분이라 저도 이쪽 계통 20년 가까이 일하면서 그 분보다 개발을 잘하고 서비스에 대한 빠른 피드백을 주는 분을 아직도 본적이 없습니다...
두번째 봤던 개발 2년된 사원분이었는데 전공이 컴공도 아니고 안드로이드 개발을 혼자 독학으로 시작했다고 하더라고요. 코드를 보는데... 코틀린 언어를 모르는 제가 봐도 이게 어떤 함수인지 어떻게 동작하는지 너무 명확하게 잘보이더라고요.
짠 코드를 보는데 너무 예쁘게 잘 이해할 수 있게 짜는겁니다. 볼때마다 너무 감탄이 나와서 누가보면 10년 넘게 일한 개발자인거 처럼 짜는데... 이걸보고 코딩도 재능이구나 싶었습니다.
제가 만났던 저 두명의 개발자는 너무 인상깊어서 코딩도 재능이구나... 라는 생각이 많이 듭니만, 저런 천부적인 재능이 아니더라도
코딩을 하는데 "내가 개발을 하는데 적합한 사람인가?" 라고 결론 나오기 까지는 "내가 꾸준히 공부하고 재미있게 개발을 할 수 있는가?" 라는 생각이 드는지를 봐야할거 같습니다.
전 20살 대학 여름방학때 C언어 특강을 들었는데 아무리 들어봐도 이해가 안되서 "난 코딩에 재능이 없구나" 싶었거든요. 그러다가 어찌하다보니 여기 길로 들어왔는데, 제가 재능이 넘치는 개발자라고 생각하진 않습니다.
제가 이해력이 딱히 좋은것도 아니고 그렇다고 코딩을 잘하는 것도 아니라서 그냥 꾸준히 노력하면서 이것저것 공부하고 오늘보다 더 나은 개발자가 되려고 뭔가를 계속 찾거든요.
저처럼 평범한 개발자에게는 "내가 일을 하면서 재미를 느끼고 더 잘할수 있을지 그리고 비즈니스 로직에 적합하게 잘 녹여내고 쉽게 코딩을 할수 있도록 고민하고 깊게 생각할 수 있는가?" 라는 질문을했을때 "yes"라는 생각이 든다면 그게 개발자가 되기에 충분하다라고 생각합니다...
저는 Java 개발자라 Java, Spring 백엔드 메인으로 하고 프론트엔드는 react, vue, angluar 등 사용하고, 현재 메인은 react지만... 모바일쪽 개발시 react native, 윈도우 프로그램은 c#, python으로 개발을 하는데요. 요즘 파이썬쪽 개발할 때 헷깔려서 chatgpt로 샘플정도 코드 얻고 쉽게쉽게 개발해요. 이번 프로젝트는 c#, python 사용해서 윈도우 프로그램을 개발했는데 코드 엄청 헷갈려고 코드 짜는데 힘들었네요. 재미는 있었지만...
어찌되었든 메인 언어를 하나 정하고 꾸준히 공부하고, 개발하고 추가로 확장해 나가면서 공부해야해요. 나무 뿌리(코어/핵심)를 정하고 나무 가지를 확장하듯이요.
언어라는게 어느정도 다 비슷한점도 있고, 언어는 어떻게보면 단순히 개발 도구니깐요. 여러개하면 엄청 헷갈려요. 문법/환경 등 다른게 많아서...
진짜 천재적인 재능이 아니구서야. 일단 개발이 재미만 있어도 평균 이상입니다. 개발하기 싫어도 꾸준히 참고 개발자로 일하시는 분들도 많거든요. 저같은 경우 개발이 재미있다보니 회사에서 일할때도 재미있고, 퇴근 후나 주말에 코딩해서 토이프로젝트 개발하거나 공부하는게 재미있어요. 그냥 꾸준히 10년 넘게 하다보니 우여곡절도 많았지만 실력이 많이 늘었습니다. 엄청 실력이 뛰어난 개발자들이 참 많아서 아직도 저는 개발 잘 한다고 생각하지는 않지만 그래도 현재 프로젝트 진행하면서 다른 팀원 분들은 저보고 잘한다고 이야기 하곤해요. 그리고 개발자로 일하다보면 자기가 어떤 개발에 적합한지도 알아야해요. SI 신규 개발이 맞는지, SM 유지보수가 맞는지, 솔류션 회사 같은데서 커스터마이징을 하는게 적성에 맞는지는 사실 회사 가서 직접 일해보고 개발을 해봐야 알 수 있어요. 업무도 다양하게 해봐야 유저가 많은 일반 유저들이 사용하는 서비스를 개발/운영 하는게 좋은지, 유저는 적더라도 내부시스템처럼 고객들 편의성을 개선하는 등 개발이 좋은지 직접 다양한 환경에서 개발해봐야 자기가 무엇을 원하고, 어떤개발을 하고 싶은지 알 수 있거든요. 정직원이든, 프리랜서든, 어떤 회사든 꾸준히 개발자로 일하다보면 경력이 쌓이고 차차 알게 되더라구요.
초기에는 꾸준히 개발하고, 메인언어 하나를 정해서 열심히 하나를 파고 점점 확장해서 공부하세요. 제 생각에는 개발이 재미있는지?/없는지?, 꾸준히 개발이 가능한지? 꾸준함/인내심 등이 더 중요할 수도 있어요. 요즘은 chatGPT 등 AI 나오서 개발 난이도 많이 떨어진 것 같아요. 사실 어느정도는 AI 사용해 자동화하고 개발 코드 샘플도 다 AI 사용해서 얻고 실행/테스트/소스분석해서 수정 등 개발하면 좀 더 쉽게 개발도 가능해요.
꾸준히 신기술 등도 나중에 익히고 재미있게 일하면 좋은 것 같네요. 저도 계속 저에게 맞는 재미있는 일을 할고 노력하고 있어요. 나중에 노후에도 취미로도 계속 개발 가능하도록....
글에는 그런 내용이 없어서 이 부분이 궁금하네요.
만약 그렇게 학습과 노력을 했는데도 잘 안되는거면 윗분들의 댓글들을 읽어보면서 본인의 공부방향을 한번 점검해보시고,
저분들이 얘기한대로 했는데도 잘 안되는거면 안타깝지만 재능이 없는거죠 ...
재미는 있었던거 같네요.
재미와 성취감을 느끼신다면 계속 해보셔도 될거같아요.
공부를 할 때 책에 있는 모든 코드를 다 입력해 보고 실행해서 각 코드와 컴파일, 실행 환경에 익숙해 져야 합니다.
그 코드를 책을 안 보고 새로 작성해서 조금 다르더라도 같은 결과를 만들 수 있어야 합니다.
이걸 해야 프로그래밍 언어를 익힌거지 그게 아니면 구경만 한 겁니다. 중학교, 고등학교에서 수학을 배울 때 교사나 학원 강사의 강의를 듣고 스스로 문제를 안 풀어본 것과 같습니다. 문제를 별로 안 풀면 나중에 시험에서 풀 수가 없죠.
수학적인 부분에서 막히신다면, 길더라도 쉽게 풀어서 쓰시고 나중에라도 다른 방식으로 줄 일 수 있나 찾아보세요.
예를 들면, 25를 계산 할 때 덧셈만 알고 계신다면 5 + 5 + 5 + 5 +5 를 사용하시고, 나중에 곱셈을 알게되시면 5 * 5 으로 수정하시면 됩니다.
그때 댓글에서 자신만만 했던것 모습에 비해 지금 글 내용은 사뭇 달라서 놀랍네요.
경력 많은 분들이 좋은 조언해도 답정너 식으로 맘에 안들면 대응이 영 안좋던데...
그래서 그냥 지나칠까 하다가 본문의 글에 댓글을 달아봅니다.
저는 어려서부터 프로그래밍을 취미로 해서, 대학도 전산 전공하고 지금은 20여년 경력인데 아직 모르는게 많습니다.
탑 대학에서 4년동안 전공지식 쌓았는데도, 프로그래밍에 재능(?)이 없어 보이는 동기 선후배도 꽤 봐왔구요.
보통 그런 친구들은 좀더 학문적인 분야나 복수전공, 의사등 다른 트랙으로 빠지는 경우도 많습니다.
분명 재능의 영역은 있고 사실 이 분야에서 크게 작용한다고 생각해요.
막말로 뇌구조, 생각하는 구조가 컴퓨터 알고리즘 처럼 동작합니다.
특히 이분야는 밥먹고 이것만 하는 너드들이 많아 아예 그쪽으로 하드 트레이닝이 된 사람이 많습니다.
다만 이게 재능이 아예 없는 사람이 후천적인 노력으로 극복 불가능할 정도는 아니라고 생각해요.
아니 세계를 바꿀 뭔가를 하지 않으려면 재능이 굳이 필요하지도 않습니다.
지금 글에서 나열한 내용들 제가 봤을때는 별로 해본것도 없는데 아직 재능의 여부를 논할 단계는 아닌것 같습니다.
사실 비전공자가 프로그램을 잘 다룰수 있으면 되지 상당수의 언어나 CS fundamental 을 다 갖출필요는 없다고 생각해요.
프로그래밍 언어를 툴이라고 생각하고 어떻게 적절히 잘 사용할지를 고민해보세요.
재능 같은거 있으면 좋은데 굳이 필요 없습니다.
"영화를 만드는데 재능이 있고 없고는 중요 하지 않다.
재능이 있다는 믿음이 더 중요하다라고 나는 생각한다
나도 그걸로 버티는 거다 .
재능이 실제 하는걸 누가 알겠나!"
저도 개발로 22년째 버티고 있습니다.
배울때 3줄 코딩에 에러가 10개 이상 났지만 에러를 많이 볼수록 피해 가는 무공이 쌓여 가더군요..재능보다 엉덩이 싸움으로 봅니다 . 재능있는 분은 0.1%로도 안될겁니다.
제가 보기엔 학습 방법, 배우는 목적 등을 재정립해보셔야 될 거 같습니다.
그렇다면.... 한 프로그래밍 언어를 자신있게 쓰려면 어느 정도 공부해야 할까요?
저는 이 정도는 해야 한다고 생각 합니다.
1. 해당 언어를 3~6개월 정도 초급자 수준으로 정리 (짧은 코드와 주석을 정리한 문법/패턴/관용구 노트를 마크다운 파일로 한 200개 만들 정도?)
2. 해당 언어가 잘 나가는 분야와 플랫폼을 최소한 1년 정도 공부 (너무 언어 자체만 공부하면 재미 없으니까.... )
3. 해당 언어를 통해 다양한 알고리즘과 자료구조를 추가로 1년 정도 공부 (전통의 릿코드?ㅎㅎ)
위와 같은 식으로 하루에 4시간 이상 몇 년간 공부를 해야 합니다. 아웃라이어라는 책 보면 1만시간의 법칙을 제시하잖아요? (물론 다소간의 논란은 있습니다만...) 1만시간까지도 필요 없고 한 3,000~5,000시간 정도는 공부해야 어디가서 엔지니어라는 소리 들을 정도는 된다는 거죠.
너무 다양한 언어를 섭렵하다보면 현타 오지 않나요? 바이브 느껴지는 언어 하나만 잡고 쭉 파보세요. 비 전공자라면 C를 할 필요는 없을 것 같고... 경영이나 산업공학이라면 R이나 파이썬이 적격인데, 그래도 마음이 스위프트로 기운다면 한번 해보세요.
요리도 그렇구요.
그런데 코딩은 머리를 더 하드하게 쓰는 거라서 난이도가 높은 축에 속합니다.
보통 공부 잘하는 애들이 딴 것도 잘한다는 소리가
자기가 모르는 것을 배울 때 시간을 무지 많이 투입을 해야 자기것이 된다는 것을 알기 때문일 겁니다.
전 사실 이게 재능이라고 봅니다.
될 때까지 묵묵히 할 수 있는 능력..
안되는 사람들은 보면 그 중간에 꼭 딴 짓을 하다가 그만두더군요.
댓글 작성자분들을 비방하는 의도가 아니고
제가 가지고 있는 다른 의견을 정확히 표현하고자 가감없이 작성했으니
부디 긍정적으로 생각해주시면 좋겠습니다.
---
1. 재능의 문제는 아닙니다.
예술도 공부도 프로그래밍도 재능의 영역은 프로들의 영역입니다.
공부를 얼마 안하셨는데요 그냥 숙련되지 않은 거에요.
댓글에 재능 없다고 하시는 분들 계신데.. 마음에 담지 마세요.
'이 정도 공부하면 되겠지?' 라는 예상이 틀려버린 상황이라고 보시면 됩니다.
혹시 재능을 핑계로 포기하고 싶으신거라면 포기하셔도 좋아요. 세상에 프로그래밍보다 재밌는 일은 많거든요.
2. 예상이 빗나간 이유
보통의 언어공부용 책은 언어를 알려줍니다.
프로그래밍을 자유롭게 하는 법은 알려주지 않습니다.
그러므로 "공부"를 하면 될거라는 예상은 아주 틀렸다고 할 수 있습니다.
3. 그럼 뭘 해야 할까요?
재능, 숙련도 등 타인과 비교하는 생각을 하면 시간과 에너지를 크게 씁니다.
인생낭비이므로 하지 마세요.
만들어봐야 만드는 걸 잘 합니다.
언어를 알든 모르든 정말 간단한 걸 직접 만들어보세요.
1+1=2 출력하기! 도 막상 직접 하다보면/해보면
오만생각이 다 들기도 합니다.
콘솔에만 띄워도 되지만, 웹브라우저에 띄우고 싶어지기도 해요. 아니면 내 폰에 출력하고 싶어질 수도 있구요.
책에서 정해준 순서대로 "공부"하면 이런 건 할 생각도 못합니다.
틀에 갇히지 마시고 내키는 대로 만드세요. 배우는 순서는 없습니다.
최대한 간단한걸 하시고, 발전은 아주 조금씩만 하세요.
초보인데 갑자기 역대급 AI나 데이터마이닝을 적용해서 평가자에게 잘 보일 생각은 또다른 자기폭력 밖에 되지 않습니다.
4. 첨언: 느긋해지고 뻔뻔해지세요
비단 프로그래머에 국한된 얘기는 아닙니다.
빨리 성장하고자 나를 갈아넣는 조급함은 큰 적입니다.
좋은 평가를 받고 싶어서 긴장하는 마음도 큰 적입니다.
성장기회를 빼앗는 적들이에요.
이런 걸 다 무시하고 편안하게 프로그램 만들기를 즐기는 것이 재능이라고 정의해도 될 것 같아요.
조급함에 사로잡혀 공부를 안하는 사람A와
아무생각 없이 매일 혹은 일주일에 한줄씩이라도 프로그래밍하는 사람B가 있어요.
1~2년으로는 하나도 차이가 안 나 보입니다.
5년쯤 지나연 A가 말합니다.
"아 5년차인데요 B를 보니 저는 재능이 없는 것 같아요."
한국은 B가 정말 적구요, 대부분 A들이 살고 있어요.
온라인에는 B끼리만 얘기하니 다 B들만 있는 것 같은데 속으면 안됩니다.
사실 B라도 괜찮습니다. 매일 한줄 코딩이 어려우면 일주일에 한줄하면 됩니다.
당장 공부나 업무가 버거우면 버겁다고 인정하고
그래서 지금 할 수 있는 일이 뭐지? 라고 차갑게 판단하고
행동을 하시는 것이 답입니다.
누가 어떻게 갈구거나 가스라이팅을 하더라도
프로그래머가 할 일은 즐기는 겁니다. 그렇지 않으면 힘들때 버티지 못 할 거에요.
참 드물지만, 재능있고 롱런하는 프로그래머들을 보면
마음 속에 쓸데없이 부정적인 감정이 들어가지 않도록
미리 즐거움, 즐거운 경험으로 채우는 공통점이있습니다.
5. 첨언: 너무 긴 댓글
제가 간 밤에 잠을 설쳐서 술에 취한 듯 주절주절 길게도 썼네요.
결론 : 걱정 말고 꾸준히 만드세요.
아, 언어는 하나를 제대로 판 다음에 다른 것으로 넘어가야 하지 않을까 싶습니다. 저는 파이썬 하나만 파도 제대로 따라가기 힘든 상황입니다.