엡실론
2k
2022-01-12 10:18:36
10
1120

신입이 프레임워크를 알아야 할까?


요즘 신입들 공부할게 많다는 글도 있고해서 한번 생각해 봤습니다. 참고삼아 저는 백엔드 개발자고 프론트엔드 쪽 경험은 거의 없습니다. 

최근에 한 코딩중에 프레임워크와 밀접한 부분이 얼마나 있을까 생각해 봤더니 거의 없네요. 많이 쳐줘도 10% 정도? DI를 프레임워크라고 해도 20~25%를 넘지 않을 것 같네요. DI도 대부분의 경우는 이해하고 말것도 없죠. 그냥 알아서 injecting되는 수준이니까요. 프레임워크와 맞닿는 부분도 많은 경우는 자주 쓰이는 몇가지의 반복이고요. 그런면에서 프레임워크에 대한 좀 더 깊은 이해가 필요한 부분은 5% 이하라고 봅니다.

백엔드 개발자가 대부분의 시간을 보내는 부분은 비지니스 로직입니다. 요새 많은 프레임워크들은 DI와 AOP를 잘 활용해서 비지니스 로직과 컨트롤러와 같이 프레임워크 종속적인 부분의 분리를 매우 쉽게 만들어 줍니다. 설계만 잘 되어 있으면 비지니스 로직은, 자바로 말하자면, 철저하게 POJO로 만들 수 있죠.

그런 면에서 신입이 프레임워크를 전혀 몰라도 로직을 코드로 잘 쓰는 능력만 있어도 충분하지 않나 생각합니다. 저도 현재 회사에서 쓰이는 프레임워크는 전혀 몰랐지만, 적응하는데 큰 문제를 느낀 적은 없었습니다. 프레임워크 자체도 예전에 ASP(.NET 아닙니다), JSP, Servlet이나 써보고, 스프링 같은 최신 프레임워크는 다뤄본 적이 없습니다.

최근의 React, Vue 같은 걸 이용하는 프론트엔드 경험은 없어서, 뭐라 말하긴 힘드네요. 얼핏 생각하기 프론트 로직은 좀 더 프레임워크에 가까울 수는 있겠지만 그래도 백엔드랑 비슷하게 분리할 수 있지 않을까 추측합니다.

국비에서도 스프링을 상당히 비중있게 가르치고, 스프링 같은 걸로 포폴을 만드는 걸 굉장히 중시하는 것 같은데, 이런 걸 다 공부해야 하나라는 생각이 듭니다. 프레임워크 지식이 업무에 얼마나 필요하다고 생각하시나요?

0
  • 댓글 10

  • fender
    25k
    2022-01-12 10:45:10 작성 2022-01-12 10:54:19 수정됨

    전 프레임워크를 안다는 건 단지 사용법을 익히는 것이 아니라 핵심 개념과 그런 개념이 등장한 맥락을 배운다는 차원에서 중요하다고 봅니다.

    스프링 MVC의 예를 들자면 그냥 아무 생각없이 코드 복붙해서 페이지를 찍어내는 건 누구나 할 수 있습니다. 하지만 의존성 역전이 어떤 개념이고 왜 필요한지를 이해하는 것은 그 보다 어렵고 훨씬 중요합니다.

    리액트나 같은 프론트 프레임워크도 비슷합니다. 그냥 예제 따라해서 화면을 만드는 것은 누구나 할 수 있지만 상태 변경의 흐름을 단방향으로 유지한다던가, CSS를 JS로 격리한다던가 하는 특성들이 어떤 맥락에서 나온 것인지 이해하는 것은 그보다 어렵습니다.

    비즈니스 시스템을 만드는데 업무가 중요한 것은 맞지만 이를 얼마나 유지보수하기 좋은 형태로 잘 구현할 수 있는지는 저런 기술적인 측면에 대한 이해도에도 영향을 받는 내용이라고 생각합니다.

    11
  • richard7
    1k
    2022-01-12 10:51:09

    입문하는 단계에서는 사용하는 프레임워크에 대한 내부 동작 원리까지 파고들기 보다는

    구현에 집중하여 역량을 기르는 것이 맞다고 봅니다.


    그러나 운영 환경에선 결국 이슈를 만나게 되고,

    이를 해결하는 과정에선 내부 동작 원리를 알아야만 적절한 대응을 할 수 있더라고요.


    그리고 개발자가 회사에서 하는 일이 로직을 짜는 일보다

    기존 로직을 분석하고, 기능을 추가하거나 수정하거나, 버그를 고치는 일이 훨씬 비중이 큰데,

    이 과정에서 내부 동작 원리를 아냐 모르냐가 크게 영향을 미칩니다.


    물론 신입이 모든 걸 다 알고 올 수는 없겠지만

    적어도 자기가 사용하는, 자기가 선택한 기술 스택에 있어서

    어떤 내부 동작 원리가 있는지 공부하는 노력은

    이후에 개발자의 성장 곡선의 기울기를 결정짓는 요소라고 생각합니다.


    그리고 스프링 프레임워크의 경우 

    OOP 개념, 네트워크 개념 등 결국 개발자로서 갖춰야할 역량들을 내재하고 있기 때문에

    알아야 한다고 생각합니다.

  • 하이열
    667
    2022-01-12 11:51:56

    스프링의 내부를 분석하시려면 디자인 패턴도 같이 공부하셔야 합니다 

    proxy나 delegate 등 디자인 패턴에서 지향하는 부분들이 많아요

    우선은 어떻게 사용하는지 알고, 연차가 올라갈수록 내부를 들여다 보고 

    프레임워크가 가질수 있는 이슈해결 방법 등을 아셔야 하니까요 


    저도 2년차에 플렉스와 스프링을 연동하여 인사평가 시스템을 개발한다고 힘들었지만

    몇 개월을 분석 개발 해보니 다른 프레임워크를 분석하는데 도움이 많이 되었습니다

    어차피 기술은 진보 스텐스를 갖춰서 획기적으로 발전하기 어렵습니다


    연차되시면 주말에 심심할때 제대로 한번 파보시길 추천 드립니다

  • 장독깨기
    4k
    2022-01-12 12:04:46

    로직을 만드는 역량이 먼저고, 프레임웍은 그 다음이라 생각합니다.

    중요한 걸 먼저 해야되지 싶은데요, ... 

    어쨌든, 로직은 프레임웍과 크게 관련이 없고,

    같은 맥락으로 신입은 프레임웍을 잘 모르더라도 무방하다 봅니다.


  • abtso
    369
    2022-01-12 12:13:23

    패러다임이 호스트 언어와 살짝 다른 경우엔 공부가 필요하지 않을까요?

  • 엡실론
    2k
    2022-01-12 14:55:10

    @fender

    말씀하신대로 그런 이해는 좋습니다만, 그게 꼭 프레임워크를 통해야만 이해할 수 있는 부분일까요?

    좀 더 부연설명 하자면, 웹 개발자가 되려면 스프링이나 기타 프레임워크로 웹 서비스를 만드는걸 필수처럼 생각하시는 분들이 많은 것 같아서 적어 봤습니다. 프레임워크를 처음 사용할때는 각종 설정의 장벽에 부딪치는 분들이 많은 것 같습니다. 사실상 신입으로 취업하고 나면 거의 필요하지 않는 부분일 텐데요.

    게다가 프레임워크를 써서 DAO니 Repository니 Controller니 하는 걸 만들어도 제대로 이해하는게 아니라, 그냥 따라하는 분들도 꽤 보이는 것 같더군요. 차라리 프레임워크를 써서 웹서비스를 만들바에는 웹이 아니라도 그냥 프로젝트를 하는 게 더 낫다라고 생각해서 써봤습니다.

  • 엡실론
    2k
    2022-01-12 15:01:42 작성 2022-01-12 15:03:10 수정됨

    @richard7

    당연히 앞으로도 꾸준히 공부를 해야 겠지요. 다만 신입에게 당장 필요한 건 논리를 코드로 잘 쓰는 능력이 아닌가 합니다. 괜히 신입분들이 웹 프레임워크를 이용한 포폴에 너무 치중하느라 더 중요한걸 놓치진 않나 하는 혹은 신입을 뽑을 때 중요한걸 간과하진 않나 하는 생각이 들어서 써봤습니다. 

  • 엡실론
    2k
    2022-01-12 15:13:40

    @하이열

    연차가 올라가면 더 알아야 한다는 데에는 이견이 없습니다. 신입에게 더 중요한건 무엇일까 하는 생각에서 써봤습니다.

    @장독깨기

    비슷한 생각이시네요..

    @abtso

    많이 다른 것도 아니고 살짝 다른 게 큰 문제가 될까요? 농담입니다. 패러다임도 사실 신입 업무 범위에서 크게 신경 쓸 부분이 있을까 생각합니다.

  • 엡실론
    2k
    2022-01-12 15:21:24

    전반적으로 프레임워크를 통한 의존성 역전, 디자인 패턴, 이런 말씀들을 많이 해주시네요.

    제가 하고 싶었던 바는 저런게 필요 없다기 보단, 당장의 신입들에겐 다른게 (비교적 작은 범위에서 논리적으로 코드를 쓰는게) 더 중요하지 않은가 하는 점이었습니다.

    okky를 보거나 예전 기억을 떠올려 보면 당장 원하는 바를 코드로 명확하게 표현하는데 힘든데, 포폴을 만든다고 하는 경우가 더러 있는 것 같더군요. 뽑는 사람들이 프레임워크를 쓴 포폴에 너무 초점을 맞추는게 아닌가 하는 생각이 들어서 써봤습니다. 차라리 프로그래머스 레벨 1, 2 정도 통과하는 실력이 신입에게 더 중요한게 아닌가 합니다.

  • richard7
    1k
    2022-01-12 17:04:32

    마지막 말씀을 들으니 어떤 말씀을 하시고자 하는지 공감이 됩니다.

  • 로그인을 하시면 댓글을 등록할 수 있습니다.