업무 자동화 해보겠다고 파이썬을 공부하다 보니 유튜브에서 관련된 영상들을 자꾸 보여줘서 프로그래머로써의 회사생활이 궁금해졌는데요
국내보다는 미국, 미국 중에서도 실리콘 밸리 정도를 기준으로 많이 나오더라구요.
시니어 프로그래머, 고급 프로그래머와 그렇지 않은 프로그래머를 가르는 기준이 뭘지 궁금합니다.
시니어라고 해서 경력이 얼마고 이런게 별 의미 없다는건 이미 영상을 봐서 알겠습니다만.. '고급' 기술이라는건 현재 제 생각엔
기능적으로 하급 프로그래머들은 할 수 없는 기능들을 구현 할 수 있다거나? 뭐 그런게 아닐까 싶습니다
분명한건 저는 단지 파이썬만 다룰 줄 아는 상황인데, 여기서 더 공부를 할 수 있을진 모르겠지만 최소한 노력과 시도는 해보고 싶습니다.
한 10년쯤 전 기억으로는 어느 정도 수준까지 다룰 수 있느냐가 기준이라고 들었던거 같습니다.
예를 들어 자바 스크립트 등 고급 언어만 다룰 줄 알면 하급 프로그래머이고, C언어부터가 제대로 된 프로그래머, 어셈블리어를 할 줄 알면
고급 프로그래머 이런 식으로요. 어느 해외 유튜버도 어셈블리를 아무나 할 수 있는건 아니지만 최소한 시도는 해봐라, 만약 니가 소질이 있다면
인생이 정말 쉬워질거다 그런 식으로 말했었거든요. 그렇다면, 제 지식 범위 안에서 생각해보자면, 같은 맥락에서 리버스 엔지니어들이 가장
고급 대우를 받아야 하는게 아닌가 싶은데요 왜냐면 어셈블리어가 필수로 필요하고, 컴퓨터 구조를 잘 이해해야 하는 고급기술이니까..
그런데 또 마냥 그런것만 같지는 않아서 형님들께 여쭤봅니다.
이걸 할줄 알면, 혹은 이런 요건을 갖추면 고급 프로그래머다 어느 회사에 가도 대우 받을 수 있다 뭐 이런거 있습니까?
------------------------------------추가---------------------------------
글을 쓰고 보니 또 생각난게 있는데요, 프로그래머의 역량이란 얼마나 응용을 잘 하느냐 하는 거라는 말을 들었던거 같습니다.
결국 문법 등 기초 지식은 배경이 될 뿐, 일단 배우고 나면 그걸 응용할 수 있는 응용력(아마 지능을 좀 돌려서 말한거인거 같습니다)이
중요하고 문법을 얼마나 아느냐 하는건 중요하지 않다고 하는 얘길 들었던거 같습니다.
저야 뭐 단지 파이썬 유저일 뿐이어서 아무리 잘 해도 이거 더 잘해가지고 고급 프로그래머가 될 수는 없을꺼 같긴 합니다만
파이썬을 코딩해본거만 놓고 생각해보자면.. 결국 어떤 기능이건 갖춰져 있는 것을 이용할 줄만 알면 시간을 들일 수록 코드가 점점 간결해지고
이를 응용해서 뭔가 다른 기능을 만들어내고 하는 정도는 할 수 있지만.. 이걸 잘한다고 고급 프로그래머라고 볼 수 있나?
싶습니다. 느낌상 왠지 이러한 응용은 일단 그런 기능을 쓸 수만 있으면 대부분 가능할 것이고.. 그런 기능을 만들어내는게 더 어려운거
같고.. 생각이 정리가 안되서 좀 두서 없이 썼습니다만 맥락은 전달 되었으리라 봅니다
손까락에 프로그램이 붙어 있어서
이야기 듣고 생각하고 타자가 치면 프로그램이 만들어져 나오는 정도의 수준이 되면 최고입니다..
그런 사람 가끔 있습니다.. 실제 저도 몇사람 보았고 실전에 강합니다..
물론 그런 사람도 자기 노력과 언어 공부는 필요합니다..
그 외에 정직한(?) 프로그래머로써 필요로 한 것이
대학에서 자료 구조나 그런 전산학 이론이 필요하다고 보고요.. 이것은 표준적인 프로그램을 만드는데 도움이 됩니다..
그리고 자격증 같은 것이겠죠..
꾸준하게 공부하고 프로그래밍하는 것도 중요합니다..
젊고 능력있는 프로그래머라면 국내에 있지말고 미국에서 경력을 쌓으라고 말하고 싶습니다..
우리나라에서 프로그래머는 늙으면 대우라는게 없습니다.. (대학교수나 돈 많이 번 사람 재외)
예를 들어 ㅋ 저의 경우 제가 생각한 기능들을 구현하는것이 말씀하신대로 듣고 생각하면 바로바로 타자로 나오는 것은 아니지만 시간을 들이면 어쨌든 만들어는 낼 수 있는데요, 이걸 빨리 할 수 잇게 된다고 해서 뭐가 달라질거 같지가 않거든요
흠.. 솔직히 얼마전에 모 IT기업에 이력서를 냈는데 일반적으로 낸건 아니고 거기 대표님이랑 어떻게 연이 닿아서 웬만하면 써주시겠다고 해서 지금까지 구현한 기능들 총정리해서 제출했는데 이정도로는 밥먹고 살기 어렵다, 국가 지원 받아서 공부라도 해봐라 이런 조언을 해주시더라고요.
그런데 국가 지원 받아서 하는 공부가 단지 월급 받고 회사에 취업하기 위한거지 그걸로 고급 프로그래머는 될 수 없다고 들었던 적이 있습니다. 그러면 고급 프로그래머는 어디서 뭘로 공부하나? 싶더라고요. 인터넷 검색만으로 되는것도 아닐꺼 같고..
뭘 할 수 있어야 하나? 이게 궁금했습니다.
그런데 박문형님의 답변은 제가 할 수 있는 것을 단지 빨리 할 수 있으면 된다는 말로도 들립니다. 그런 의도는 아니실텐데..
그리고 혼자만 일하는게 아니라는 것도 상기하셔야 합니다. 스케쥴에 맞출 수 없다면 시급이 낮은 수준이 아니라, 아예 같이 일할 수 없는.. 대놓고 말하면 그냥 짐만 됩니다.
그 이하는 중급.. 2년 이하는 초급
프로젝트만 10년 이상은 특급(시니어) 프로그래며... 프로젝트 메니져를 할 수 있어야 하고... 고급이하의 팀원을 지도 할 수 있어야 하는
만랩의 레벨...팀원들을 이끌고 어떤 프로젝트를 완성할 수 있어야 하고 능력과 책임이 같이 동반됩니다...
이에 차등적으로 급여는 구분 되겠죠...
언어를 배우는 것은 프로그램을 만들기 위한 툴을 배우는 것이고요..
전산과의 대학 4년 과정 중에 2학년 이상 3/4학년 과정 가면 언어 배우는 것말고 자료구조론 통계학 머 그런 것들을 배우게 됩니다..
이런 것들이 실제 모랄까 왜 이렇게 프로그래밍을 해야 하는지에 대한 것을 배운다고도 할 수 있습니다..
그리고 그 이상 가게 되면 대학원으로 가야겠죠..
제가 생각하는 하나의 다른 고급 프로그래머는 OS를 처음부터 끝까지 만들줄 아는 사람 과 어떤 플랫폼의 OS를 다른 플랫폼으로 이동시킬수 있는 사람입니다..
이것은 시스템 엔지니어링쪽이라 응용 프로그램 만드는 것과는 좀 다른 차원입니다만...
저는 프로그래머도 아니고 프로그램을 아예 짤 줄도 모릅니다..
단지 대학교 동아리가 컴퓨터 동아리 였고 그 외 컴퓨터 통신을 하다 보니 주변에 컴퓨터 관계자나 프로그래머 하는 사람들이 좀 많을 뿐입니다..
Senior 레벨로 시작하는 프로그래머는 한명도 본적이 없습니다.
모두 Junior Software Engineer (또는 Junior Software Developer 나 Junior Programmer) 로 시작합니다.
그럼 언제 Senior 가 되느냐? 이건 정해져 있지 않습니다.
저는 약 4년 후 타이틀이 Software Engineer 로 바뀌였었습니다. 이것이 회사마다 다른데 어떤곳은 5개의 레벨로 나뉘어져있고 또 어떤곳은 3개로 나뉘어져 있습니다.
Mid-Level Engineer 일때는 그냥 앞에 붙는 말을 뺍니다.
Senior 의 경우에는 보통 어떤 모듈을 맏습니다. 그리고 그모듈을 개발할때 주니어레벨의 개발자를 약 두명정도 데리고 일을 합니다. 거기다가 씨니어의 경우 아래직들을 평가하기도 하고 또 면접을 보기도 하고 프로젝트계획서를 쓰기도 하고 여러가지 잡다한 일들을 더많이 합니다. 그런데 보통 씨니어엔지니어 정도의 수준일경우에는 메니져가 되어있는 경우가 더 많습니다. 예를 들어...
저희 팀의 메니져 보다도 더 오랫동안 엔지니어로 남아있는 사람이였는데요.
그 사람의 연봉이 저와 비슷했었습니다. 일부러 본것이 아니라 우연히 알게되었는데 전 충격이였습니다.
당시 거의 30여년간 소프트웨어 엔지니어로 일을 하셨던 분이였는데 (전공은 컴퓨터공학으로 학부와 석사 마침) 진짜 실력도 최악이였습니다. 그렇지만 그분의 타이틀이 씨니어 소프트웨어 엔지니어였습니다.
제가 직장생활을 시작하여 약 6년후에는 저의 연봉은 첫해의 연봉에 비하여 1.8배 정도 올라갔었고 Mid-Level Engineer로의 직장생활을 그때 접었습니다.
Software Engineer = Programmer 이지만 저희는 프로그래머라고 불리우는것을 엄청 싫어했습니다.
저는 대학교 4년간 컴퓨터 언어를 배우는 수업을 들은적이 없습니다.
하지만 지정된 컴퓨터 프로그래밍 언어로 과제물을 내도록 정해져 있었습니다.
제일 처음으로 지정되었던 언어는 FORTRAN 이였습니다.
그다음 언어가 Ada 였습니다.
그다음 언어는 c 였구요. 그다음엔 c++ 을 썻습니다. 어쎔블리를 써야 하는 수업도 있었구요. 프로그래밍 언어가 2진법 로직게이트였던적도 있습니다.
그리고 가장 많은 프로젝트를 저희 학교에서는 Ada로 하였습니다.
미국은 오십 중반 넘어까지 개발자하는 분들도 적지 않은데 우린 그렇지 않은면이 좀 있어요
농담삼아 강남에서 개발할 때, 디버깅하다 문제 생기면 치킨 시킨다고 하죠
치킨집 사장님이 치킨 배달 와서 자기보다 더 버그 잘 잡아준다고ㅋ
어셈블러 잘 한다고 해서 현실에서는 고수라고 대접(?)받지 않을 확률이 더 큽니다.
무술영화도 아니고 만능은 없은것 같아요.
소프트웨어 분야가 워낙 넓어서요...
원래 어셈 다루고, 하드웨어 제어해서 드라이버 수정이랑 작성까지 가능한 인력은 고급인데, 국내에선 제대로 취급을 못 받더군요 (심지어는 덤으로 언어 3~4개 다룰줄 알고, 프론트랑 백엔드 다 작성가능한 수준의 웹코딩까지 가능해도 취급이...)
적성과 취향이 맞아야 한다는 말입니다.
취향은 스스로를 속이거나 노력으로 어떻게든 가능한데
적성은 아쉽게도 죽도록 노력해도 불가능 합니다.
그래서 개발자를 하는 경우
나머지는 자기경영 입니다.
이거 공부해서 이쪽 일 하면 대박난다 ?
아니죠 주식하는 사람 다 갑부인가요
기술 스택의 선택부터 본인의 선택입니다.
어디 취직해서 일을 하던 프리를 뛰던 사업을 하던 본인의 선택이고 정답은 없습니다.
재능기부만 몸상하게 할수도
운좋게 좋은 회사 드가서 고연봉 받을수도
운빨 과 노력일 뿐이지 개발자라고 뭐 특별한건 없습니다
개발의 능력차이는 설계능력 요구사항 분석능력 그리고 일정준수라고 생각합니다.
나이 먹는다고 개발능력이 월등해지는 건 아니고요.
디버깅 능력은 확실히 늘어나긴 합니다. ^^
자격증이 있고 없고, 무슨 언어를 얼마만큼 하고 못하고가 아니고
문제의 해결 능력이 있냐 없냐 (다시 말해서 문제가 주어졌을 때 안되요 라고 말하느냐, 어떻게 조율하면 문제가 해결 되느냐)
나 말고 이정도 일을 해 낼 수 있는 사람은 어느 정도쯤 하는 사람인가를 짐작하는 통밥이 빠르게 서는가? 였습니다.
문제가 생기면 밑의 애들한테 일거리 분배해서 해결하라고 일 시키고
그 결과가 나왔을 때 그 결과도 본래 문제가 해결이 안될 때 본인이 책임지고 실시간으로 확인해서 문제를 잡아낼 수 있는 프로그래머입니다..
그런 사람 있기는 합니다..
보통 회사의 임원급이고 실세이자 실체이죠...
보통 그런 분들은 울트라 슈퍼맨들이신지라 같이 일하거나 모시는데 옆의 사람이 고생을 많이 합니다..
- 그 나라에 태어나면 기본적으로 그 나라 언어는 할 줄 압니다.
==> 어떤 프로그램 언어를 배우면 기본적으로 그 프로그램 언어로 프로그램을 작성할 수 있습니다.
- 여러나라 말을 할 줄 안다고 수입이 좋지는 않습니다. 하지만, 사람들이 필요로 하는 나라 말을 잘 하면 수입이 좋죠.
- 말을 아무리 잘 해도 혼자서 잘 하는 것 보다는 말 잘 하는 사람 여러 명이 있는 회사를 운영하는게 돈을 더 잘 법니다.
- 아무리 노력해도 따라잡을 수 없는 말 잘 하는 재능을 가진 사람들이 있습니다.
- 오랬동안 말을 했다고 말을 잘 하는 건 아니지만, 오랬동안 말로 먹고 살았으면 말을 잘 할 가능성이 큽니다.
- 일본어는 우리나라 사람이 조금만 공부하면 잘 한다고 해서 일본어를 네이티브 뺨치게 잘 하는 사람들이 평가절하 받을 일은 없습니다.
이런 식으로 대입해 보면 거의 다를 게 없습니다. 사실 어떤 다른 기술을 넣어도 비슷하겠죠.
무술을 넣어도 비슷할 거고요.
다른 것들은...
개발자로 50대 중반이라도 우리나라에서 약간 희귀하긴 한데 엄청나게 대우를 받거나 그런 건 없습니다.
오래동안 했으니 많은 노하우는 있지만, 막상 그 노하우를 발휘할 상황이 그다지 많지는 않습니다.
1년에 한두번 생길까 말까죠. 대부분 일상적인 지루한 개발이 더 많죠. 지루한 일만 하고 있긴 싫으니
뭔가 재미있는 공부 (다른 언어를 배운다든지... 새로운 기술 (머신러닝, 여러 OS 사용해 보기. 같은 거)... 하드웨어 수집 및 개선...) 같은 걸 하게 되죠.
개발 일 하면서 계속 도전을 하면 스킬이 올라갑니다. 레벨에 맞는 적당한 몬스터를 계속 잡으면 능력치가 계속 올라가듯...
너무 센 몬스터는 잘못 잡으면 회사가 망할 수도... 앵벌이는 오래해도 능력치가 잘 안 올라가죠.
아이템이 어떤 것들이 드랍될 지는 운빨이긴 하지만, 사냥을 많이 하면 좋은 아이템을 얻을 확율이 높죠.
많은 것들이 어떤 게임을 하냐에 따라 극단적으로 달라지긴 하지만...