3년차의 웹 프로그래머 역량을 가지기 위해 필요한 경험은?

2013-11-15 11:10

사실 쉽지 않은 질문입니다. 3년차 웹 프로그래머에 대한 정의도 쉽지 않고요. 3년차 웹 프로그래머가 경험하면 좋겠다고 생각하는 내용을 정리하고 있는데요. 실제 현장에 계신 선배 개발자들의 의견을 듣고 싶어 질문해 봅니다.

이런 식으로 질문하면 막막하겠죠. 그래서 제가 욕먹을 각오를 하고 몇 가지만 예시로 적어 봅니다.

  • 하나 이상의 웹 또는 앱 서비스를 통해 자신이 만들고 있는 소프트웨어의 사회적 가치를 찾아보는 경험
  • 웹 UI, 웹 서버, 모바일, 자료구조, 알고리즘, 네트워크, 데이터베이스가 어떻게 연결되는지에 대한 연관 부분을 찾고 이해하는 경험
  • 웹 서비스 운영을 위해 필요한 프로시저, 쓰레드, 락에 대한 지식과 쉡 스크립트에 대한 경험
  • Java, Ruby, Python 등 다양한 웹 프레임워크의 기반이 되는 공통 기반 지식에 대한 경험

이 자체만으로도 많은 경험이라고 할 수 있습니다. 하지만 모든 것은 얼마나 깊이 있게 다루느냐에 따라 상당히 다른 내용이 될 수 있다고 생각합니다. 여러분들은 위와 같은 방식으로 정리했을 때 웹 프로그래머가 기본적인 역량을 만들기 위해 필요한 경험들에 어떤 것이 있다고 생각하시나요?

이 질문을 하는 이유는 제가 해야할 숙제를 해야하는 부분도 있지만 그 보다는 현장에 있는 선배들의 목소리를 담아 NEXT 학생들을 가르치기 위함이니 후배들을 위해 선배님들이 한마디씩 해주시면 좋겠네요.

0개의 의견 from FB

4개의 의견 from SLiPP

2013-11-15 12:34

안녕하세요, 형님 javacafe의 유동환입니다.

흠.. '3년차의 웹 프로그래머'라 저도 생각을 해봤는데요,

먼저 회사원으로서의 3년차에게는 그리 많은 능력을 기대하기는 어려울 것 같습니다. 회사의 규모에 따라 벤처기업이라면 한 사람의 여러 방면 (SW , 웹서버 때론 DB일부)를 볼 수 있겠지만 대기업이라면 그중에 한가지를 재대로 하기도 쉽지 않죠. SW기술뿐만 아니라 엄청난 이메일처리 , 맨날 바뀌는 용어, 조직개편등의 '회사 life'따라가기도 쉽지 않거든요. 기술이 전부라고 생각하면 경력 6~7년차 즈음부터 매너리즘에 빠지는 선배들을 많이 봐왔습니다. 지속가능성 측면에서요^^;

사회적 가치..라는 말은 넘 어렵습니다.

그리고 어떤 도표? diagram? 이런 것을 가지고 가시화 해주시면 좀더 설득력이 있을 것 같구요.

NEXT에서 키워내고 싶은 인재가 아마 '3년차 정도의 내공'을 가진 개발자 양성으로 생각됩니다.

SW 프로젝트는 혼자서 만드는게 아닌 만큼 개인의 능력 / 의사소통 능력 / 자기가 뭐를 하고 싶은지를 결정하는 의사결정 능력 측면을 함께 생각해주시면 더 풍부한 리스트가 나오지 않을까 싶습니다.

ㅎㅎ 적어놓고 보니 얘기가 산으로 갔네요.

10년을 넘게 일해봐도 아직 제 전문분야가 뭔지 모르겠는 1인이었습니다^^;

2013-11-15 13:04

내가 생각 하는 3년차 웹 프로그래머가 경험해야될 것이라면 딱 두가지는 꼭 경험 해 봤으면 한다. 일단 3년차라면 이제 어느정도 신입의 딱지를 벗고 본격적인 개발자로서의 리소스를 해소 해나가야할 시기일 것이다.

나의 경험에서 미루어 보는 것이지만(모두다가 그렇지 않을까?)

일단 3년차 웹 개발자라면

  1. 어떤 것을 했던 주위 대부분에게 인정받는 무언가를 만들어 보아야한다. : 너무 추상적인 내용이지만 개발자라면 개발을 하면서 뭔가 불편하고 불합리 한 것들을 하나이상의 격을 것이다. 본격적인 개발을 하는 시점에서 개발을 하면서 자신을 불편하게 만드는 소스코드가 있다면 그것을 개선하는 코드를 만들어 보는것은 꼭 필요하다고 생각 된다. 이제 본격적인 개발을 해야될 개발자가 이런 불편함에 아무런 의문이나 개선의지가 없다면 그것은 문제가 있다고 생각된다. (예를 들자면 예전 cgi로 web을 만들때 jsp같은 template engin을 c로 만들어 보는 것 같이, c로 웹 프로그래밍을 하면서 항상 문제가 되는 html을 내포하는 소스를 html template과 소스를 분리 해보는 framework를 허접하지만 만들어 봄으로서 좀더 코드가 깔끔해지고 다른 사람들에게도 인정받았던 기억이 있다.)

  2. 어떤 것을 했던 자신의 한계에 대한 좌절을 경험해 봐야한다. : 완전히 상반된 내용이지만 이것도 꼭 경험을 해보는것이 좋을 듯 하다. 훌륭한 개발자로 거듭나기 위해서는 자신의 한계와 자신의 생각만이 정답이 아니라는 것을 꼭 경험해볼 필요가 있을 것 같다. 그렇지 않다면 우물안 개구리 처럼 너무 자신의 코드를 자만 하게 되고 점점 발전 보다는 경험의 반복으로 개발자로서의 성장이 없어지는 경우를 많이 보아왔다. (이런 예를 들기는 너무 많은 경험들이 있어서 일일이 나열하긴 그렇지만 새상에는 나보다 똑똑하고 휼륭한 개발자들이 너무 많았다. - 그 사람이 나보다 경력이 많고 적고를 떠나서 - 다만 거기서 좌절만 하지 말고 그 사람들이 그렇게 생각하는 생각의 전환이나 그 내용을 배워 나도 같이 발전을 해야할 것이다.)

일단 추상적인 내용이긴 하지만 내가생각하는 경험은 위 두가지가 필수이지 않을까? 한다. 개발 기술 몇가지를 경험하고 그걸 이용하는 것이 이러한 개발자의 자세를 가지고 있다면 언제든지 필요할때 경험하고 사용할 수 있으리라 생각된다.

2013-11-15 13:17

@koreacio 의견 감사해요.

SW 프로젝트는 혼자서 만드는게 아닌 만큼 개인의 능력 / 의사소통 능력 / 자기가 뭐를 하고 싶은지를 결정하는 의사결정 능력 측면을 함께 생각해주시면 더 풍부한 리스트가 나오지 않을까 싶습니다. => 이 부분도 목록에 추가해 놓은 상태입니다. 앞에 제가 예시로 든 내용은 지식 측면에 한해 정리한 내용입니다. 저도 기술적인 측면 보다는 말씀해 주신 능력이 훨씬 더 필요하다는 것에는 충분히 공감합니다. 이와 관련해 정리한 내용 몇 가지 공유해 봅니다.

  • 본인과 사고하는 방식, 문제를 풀어가는 방식이 다른 사람을 이해하고 설득하는 경험
  • 프로그래밍에는 한 가지 해결책만 있는 것이 아니라 다양한 해결책이 존재한다. 다양한 선택지에서 최선의 해결책을 찾아가는 경험
  • 선배, 동료, 후배 프로그래머에게 자신의 지식을 전달하는 경험
  • 자신이 알고 있는 지식을 커뮤니티, 블로그 등을 통해 NEXT 이외의 개발자와 공유하는 경험
  • 읽기 어려운 소스 코드를 찾고, 다른 프로그래머도 읽을 수 있는 소스 코드로 개선하는 경험

위 경험들을 모두 하게하고 싶지만 짧은 기간 내에 하기는 힘들 듯 하고요. 가능한 범위 내에서 최대한 많은 경험을 할 수 있도록 설계하려고 합니다.

2013-11-15 13:23

@jhindhal.jhang 의견 고맙다. 두가지 내용과 관련해 내가 정리한 몇 가지 경험 공유해 본다.

첫 번째 내용과 관련해 다음과 같은 경험을 하면 좋겠다고 정리해 봤다.

  • Java, Ruby, Python 등 다양한 웹 프레임워크의 기반이 되는 공통 기반 지식에 대한 경험
  • 웹 프레임워크의 공통 기반 지식을 바탕으로 자신만의 웹 프레임워크를 만들어보는 경험
  • 하나 이상의 웹 또는 앱 서비스(웹 서버가 있는)를 오픈 해 3개월 이상 사용자의 피드백을 받아보는 경험
  • 자신이 단순, 반복적으로 하고 있는 작업을 프로그래밍을 통해 자동화하거나 개선하는 경험

일단 위 4가지가 네가 이야기했던 첫 번째 능력과 부합하는 부분이 있지 않을까 생각한다. 좀 더 구체화해야 학생들에게 전달이 가능하다고 판단했기 때문에 정말 상세하게 하나씩 풀어가고 있다.

두 번째 내용은 아마도 프로젝트 수업을 통해 협업을 하면서 발생하지 않을까 생각한다. 사실 이 두 번째 경험이 정말 중요한 경험인데 학교라는 공간과 짧은 기간 내에 이 같은 경험을 우리가 강제적으로 심어줄 수는 없고, 이런 경험을 할 수 있는 멍석을 깔아줄 수 밖에 없을 듯하다. 일단 팀 프로젝트 기반의 수업을 계속해서 강화하려는 생각은 하고 있다. 아마도 이 부분의 앞에 단 답변에서 일정 부분 소화하리라 생각하고 네 글 속에서 뽑아낼 수 있겠다고 생각하는 경험들 추출해 볼께.

의견 추가하기