- 제가 javascript를 열심히 공부하면 서버 개발하는데 도움이 될까요?
- 제가 java로 네트워크 소켓 프로그래밍은 해봤는데 c#으로 하려면 어떻게 해야 하는 거죠?
- java 공부를 열심히 하면 취업 할 때 도움 되나요?
- angularjs를 이용해서 front-end 개발한지 2년 됐습니다. vue.js가 핫하다는데 배우면 이직할 때 도움 되겠죠?
javascript 를 열심히 공부해서 서버를 개발하고 싶다.
java로 네트워크 소켓 프로그래밍은 해봤는데 C#으로는 어떻게 하는 건지 잘 모르겠다.
java 공부를 열심히 하면 취업할 때 도움이 되는지
또 어떤 기술을 택해서 뭔가 해 봐야 취업이 되는 건 사실이나, 그 기술이 중요한게 아니라 그 기술로 뭘 해봤냐가 더 중요하다는 사실을 잊지 말아야 할 것이다. 로그인 세션 관리, 결제 페이지 연동, 게시판 관리 등등 실제 비니지스 로직을 구현하고 만들어낸 결과물이 뭔지 그 경험을 통해 내가 성취한 업적이 뭔지를 잘 설명하는게 중요한데도 단순히 java라는 프로그래밍 언어를 잘 하면 취업 잘 되냐는 되도 않는 소리를 하면 맥이 빠지는게 사실이다.
또 취업을 하기 위해 java를 열심히 할게 아니라 취업을 하기 위해 java로 프로그래밍 하는 게 적성에 맞고 즐거운지 한번 되돌아 보자. 취업하고 나서 적응 못하고 적성에 안맞아서 괴로운것 보다 내가 정말 하고 싶은게 취업이었는지 IT 기술을 배우고 그걸 익히는게 즐거웠는지를. 이 생각이 들 때가 되면 내가 java라는 기술을 배우고 익혔던게 크게 의미가 없다. 당장 마음이 불안하여 취업을 하는게 목표인 사람들이 생각 못하는 건, 내가 이 직업을 가지고 일하게 되면 즐거울지 아닌지에 대한 것이다.
angularjs를 이용해서 front-end 개발한지 2년 됐습니다. vue.js가 핫하다는데 배우면 이직할 때 도움 되는지
이 친구도 여태까지 웹이라는 걸 잘 생각해보지 않고 회사에서 시키는 대로 열심히 일하다 보니 2년이라는 시간을 보낸 안타까운 케이스인 거다. 이 친구의 신입 시절은 아마 절대 그렇지 않았을 것이다. 회사에서 주어진 업무를 빨리 배우고 익히면 스스로 잘 하게 될거라는 생각에 그냥 열심히 했을 것이다. 심지어 angularjs를 잘 알고 할 줄 아는게 잘못된 점도 아니라는 것이다. vue.js도 사실 해보고 경험해 보면 다른 경험을 할 수 있으니 이직할 때 조금이라도 도움이 되는 건 사실이다. 그런데 프론트엔드라는 것이 angularjs던 vue.js던 뭘 더 잘해야 하느냐가 중요한게 아니다. 프레임워크를 잘 쓴다는게 쓰고 경험해 보면 아는 것이지만, 조금이라도 직관적으로 그리고 조금 편하게 개발해서 생산성이 얼마나 될 것인지, 나중에 수정 및 유지보수가 쉬운지 등등 프레임워크가 가져야 하는 본연의 기능을 잘 훈련하는 것 즉 방법적인 것에 불과하다는 것이다.
그러니까 웹 프론트엔드 개발을 하는데 중요한게 어떤 프레임워크를 잘 쓸줄 아느냐가 아니라 어떤 목적을 가진 사이트를 개발할 거고 거기에 맞게 뭘 적용해서 해야 하느냐가 더 중요하다는 얘기다. 그런데 이미 angularjs를 통해서 웹에 대한 이해 프론트엔드에 대한 이해가 충분히 잡혀 있다면 다른 유사한 프론트엔드 프레임워크가 추구하는 가치가 뭔지, 특징이 뭔지 정도는 찾아보면 알 수 있는 건데도, 또 배워야 한다는 생각을 한다는게 잘못됐다는 것이다. 심지어 언어도 javascript로 같은데도 말이다.
닭 잡는데 소잡는 칼 쓴다는 논어에 얘기도 있듯이 웹 프론트엔드가 하는게 뭔지 한번이라도 조금 더 생각해 보면 angularjs를 잘 쓰냐 vue.js를 잘 쓰냐가 크게 중요하지 않을 수 있다는 뜻이다. 오히려 이런 프레임워크를 쓰는 방법을 익히는 것 보다 각각의 프레임워크가 어떤 작업을 하는데 효과적이고 효율적인지 알아보고 적용할 수 있는 안목을 키우는게 더 중요하다. 그런 안목을 키우는 차원에서 토이 프로젝트로 이것 저것 실험적인걸 해보는 수준이면 크게 나쁘지 않으며, 거기서 다른 프론트엔드 프레임워크와의 차이점을 발견할 수준이면 더 없이 좋을 것이다.
다시 정리하자면 이직할 때 도움이 되는게 vue.js 쓰는 법을 아는게 중요한 것이 아니라 현재 써 왔던 angularjs와 어떤 차이점이 있고 내가 뭘 만드느냐에 따라 어떤 프레임워크를 선택하느냐의 기준을 얘기할 수 있으면 충분히 도움이 될 것이다.
결론
프로그래밍을 오래 하다 보면 점점 특정 프로그래밍 언어 의존적, 프레임워크 의존적, 더 나아가서는 툴 의존적인 경력이 쌓이게 된다. 그런데 그 기간이 길어지면 프로그래밍 능력, 생각하는 능력, 발전적인 능력이 쌓인다기 보다는 일하는 방법에 대한 훈련과 반복되는 익숙함에 시간을 보내게 되어 있다. 그리고 시간이 가면서 스스로 내가 잘 하는지 못하는지 불안해 지지만 쉽게 자신의 손에 익숙한 언어, 프레임워크, 툴을 버릴 자신이 없어진다. 물론 비지니스 로직 처리 하면서 시켜서 해야 하는 일 외에 더 좋은 방법에 대해 고민하고 구현하고 정리해 봤다면 프로그래밍 능력이 조금 좋아질 가능성이 높긴 한데, 대부분 회사 일 하느라 바쁘다 보니 생각은 있어도 실천하기가 쉽지가 않다. 이 상태에서 또 다른 프로그래밍 언어를 배우는게 프로그래밍 능력을 향상시키는 방법이 아님에도 불구하고 다른 프로그래밍 언어를 배우는 것이 나의 개발 커리어도 쌓고 실력이 향상될 것이라고 굳게 믿고 있다. 물론 방법을 어떻게 하느냐에 따라 실력을 쌓을 수 있냐 아니냐가 다를 수 있지만, 그냥 튜토리얼 실행해 보기 책 따라해보기 정도로 깔짝대는 수준으로는 어림없다는 것도 알아야 한다.
기술적으로 프로그래밍의 실체를 접한 친구들은 "실무 일을 열심히 하는 것" = "프로그래밍 실력 향상" 이라는 착각을 하는데, 왜 이런 문제가 발생하는지 진지하게 고민해 보도록 하자. 그리고 이 때가 되면 기술 적인 배움 보다는 조금 더 학문적인 수준에서 접근을 해야 할 필요가 있다. 학문적인 것이라 해서 논문을 쓸 수준의 연구를 하라는 뜻이 아니라 프로그래밍 이외의 것들에 대해 접해보고 생각할 시간을 가져야 한다는 뜻이다. 그렇게 해서 프로그래밍이라는게 어떤 것이고 그것을 통해 어떤 결과를 얻고 싶은 것이며 그 과정 중에 왜 이렇게 코드를 짜야 하는지에 대한 이해를 해야 할 때가 실력이 높아질 수 있는 때이다. 이제 프로그래밍이라는 행위를 왜 하는지, 소프트웨어가 추구하고자 하는 본질이 무엇인지를 조금 더 생각해보자. 여태까지 해 왔던 프로그래밍 언어 의존적, 프레임워크 의존적인 개발을 해 왔던 생각이 많이 달라질 것이다.