개발자

백엔드 개발자를 희망하는데 공부 순서가 어떻게 될까요?

2023년 02월 24일조회 514

안녕하세요. 현재 저는 정보통신공학과 졸업예정자입니다. 집안 사정으로 대학교 내내 일만하고 학과공부만 겨우하던 차에 학점이 애매해서 듣게된 객체지향프로그래밍과 자료구조론에서 큰 재미를 느껴 개발자를 꿈꾸게 되었습니다. 현재 저는 학과수업을 위해 공부했던 C++과 이제 공부를 시작해서 기초문법만 익힌 Java, 전문 지식이 없어서 따로 책을 사 CS를 공부하고 있습니다. 앞으로는 인프런에서 C++ 코딩테스트를 수강할 예정입니다. 제 수준이 부족한건 알지만 이번 카카오 먹통사태때 네이버에서 훌륭히 대처한 것을 보고 멋을 느껴서 네이버 백엔드 개발자로 취업하고자 하는 1지망 희망도 생겼습니다. 여기서 질문이 앞으로 공부를 어떤 순서로 해야할지 막막해서 질문드립니다... 책을 보니 자바스크립트도 공부해야하고 spring? 제이슨? 처음보는 정보가 너무많아서 유튜브나 구글링으로 찾은 로드맵은 서로 너무 다르거나 부트캠프 홍보밖에 없어서 실무자님들이 생각하셨을 때 어떤 순서로 공부하는게 가장 이상적일지 궁금합니다

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

인기 답변

! 정다송님의 프로필 사진

안녕하세요. 객체지향프로그래밍과 자료구조론.. 대학교 때 공부했던게 생각이 나는 단어네요 ^^ 개인적으로 생각하는 공부 방향에 대해서 잠깐 말씀드리자면, (백엔드쪽) 백엔드 관련 기술들이 너무 많고 (프레임워크, 개발 언어, 서버 운영 환경, 배포 환경 등) 이것을 다 공부로 마스터를 할 수는 없을 걸로 생각이 듭니다. 취업이 목표라면, 해당 회사에서 요구하는 사항이 있을 거에요. 거기에 맞춰서 공부를 진행하시는게 도움이 되지 않을까 생각합니다. 그리고, 대학교에서 배우는 것은 기본적인 프로그래밍 언어나 이론적인 것들에 대해서 배우기 때문에, 실제 제품을 개발하는 전체적인 프로세스에 대해서는 깊게 다루지는 않는 것 같더라고요 (저 때는 그랬어요 ^^) 제품을 개발하기 위해서 기획 단계가 필요하고, 요구 사항에 맞춰서 기반 기술을 검토하고 회의를 통해 업무를 진행하는게 실무적인 개발 프로세스라고 보시면 될 것 같아요. 이미 기반 기술이 있으면 그 위에 새로운 기능을 추가한다거나 구조를 좀 변경해서 유지보수를 한다거나 하는 경우도 있을 거에요. 실무적으로 도움이 되는 공부는 개인의 아이디어로 제품을 하나 만들어서 배포까지 해보는게 아닐까 싶어요. 물론 개발 언어에 대해 깊게 이해하는 것도 중요하지만, 첫 회사에 입사하게 되면 생각보다 새로 배울게 많아서, 그 때 열정적으로 공부하셔도 충분할거라 생각합니다 ^^

profile picture

익명

작성자

2023년 02월 24일

맞습니다ㅠㅠㅠ 백엔드 관련 기술이 너무나도 많아서 오히려 공부의 방향성을 잡지 못해 갈팡질팡했는데 회사 요구사항에 맞춰서 방향을 잡아보면 되겠군요! 말씀 하신대로 개인프로젝트나 팀프로젝트도 겁내지 말고 도전해봐야겠습니다. 좋은 답변 감사합니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

비슷한 질문 2

Q. 어떤 걸 공부 해야될까요?

안녕하세요 6개월 차 백엔드 개발자입니다. 개발을 별로 안하고 개발자가 된거라서 기초가 많이 부족합니다. 꾸준히 공부하고 있긴한데 공부할 게 너무 많다보니 뭐부터 해야될지 계속 헷갈리네요.. Java 다시 보기, DDD, TDD, Clean Architecture, SQL, JPA, Spring boot 등등 공부할껀 많은데 어떤 걸 우선적으로 공부하는 게 좋을까요?? 만일 본인이 공부를 한다고 하면 뭐부터 하실껀지도 궁금합니다!

안녕하세요! 제 개인적인 경험을 토대로 말씀드리겠습니다. 이건 지극히 제 개인적인 생각이기 때문에 정답이라고 할 순 없으니 참고만 해주셨으면 좋겠습니다. 저는 프로그래밍을 크게 '도구' 와 '도구를 쓰는 방법' 을 알아야 할 수 있는 것이라고 생각합니다. 실생활에서 예를 들면 드라이버라는 도구를 저희가 처음 접했을 때 이 드라이버가 언제 필요한 것이고 손잡이가 어디에 있으며 무슨 종류가 있는지 등의 '드라이버' 에 대해 파악합니다. 그런 다음에 드라이버를 어떻게 잡아야 하고 나사를 어떻게 꽂아야 하고 어느 방향으로 돌려야 쓸수 있다는 등의 '드라이버를 쓰는 방법' 을 배우게 됩니다. 이처럼 저희가 뭔가를 하려면 사용하려고 하는 '도구' 에 대해 먼저 파악이 되야 그다음 '도구를 쓰는 방법' 을 진행해 볼 수 있는데요 프로그래밍도 이와 마찬가지라고 생각합니다. 나열해주신걸 토대로 '도구' 와 '도구를 쓰는 방법' 을 분류해보면, Java, SQL, JPA, Spring boot 가 '도구' 에 속하는 것이고 DDD, TDD, Clean Architecture, Design Pattern, 혹은 위에 나열된 '도구' 들에 대한 beat practice 등이 '도구를 쓰는 방법' 에 속하게 됩니다. 이에 따라 먼저 Java, SQL, JPA, Spring boot 를 일단 먼저 공부해보시고 이후 업무를 진행하시거나 사이드 프로젝트 등을 진행하시면서 DDD, TDD, Clean Architecture, Design Pattern, Beat Practice 등을 탐구하시면서 발전시켜 나가면 좋지 않을까 싶습니다. 도구와, 쓰는 방법 내에서의 우선순위는 진행하시는 업무에서 가장 많이 사용하거나 중요도를 파악하셔서 우선순위를 정하시면 좋지 않을까 싶습니다. 참고로 DDD, TDD, Clean Architecture, Design Pattern 등이 위에서 언급한 '도구' 에 속하는 내용보다 안좋거나 떨어지기에 우선순위를 낮춰야한다는 말은 절대 아닙니다. 다만, 순서상 먼저 '도구' 가 어떤건지를 정확하게 알아야지 그 뒤에 '쓰는 방법' 을 해볼 수 있다는 의미로 이해해주시면 되겠습니다. 모든 배움이 그렇듯이 빠르게 배울 수 있으면 좋겠지만 그게 쉽지 않기 때문에 무엇보다도 꾸준함이 중요하다고 생각합니다. 부디 프로그래밍의 재미를 잃지 않으시고 꾸준하게 원하시는 지식을 학습하시길 바라겠습니다. 부족한 제 의견을 읽어주셔서 감사드리고 부디 작게나마 도움이 되셨으면 좋겠습니다.

이 질문 바로 가기

Q. 백엔드 공부할때 저는 어느것부터 어떤 순서로 공부를 해야할까요??

저는 지금 전문대 2년제 컴퓨터정보과를 졸업하고 현재 취업준비중입니다. 저는 학교에서 그닥 의미있는 공부를 했다고는 못느꼈습니다. 다른 4년제 교육과정을 보면 String 도 배우고 뭔가 많이 하던데 제가 해본거라고는 java 기초와 c 기초그리고 mysql을 통한 db작성 기초 html 기초밖에 못배운거 같습니다. 졸업을 하고 인프런에서 김영한 선생님이 올려주신 spring 기초를 보고있는데 이게 내가배운 자바가 맞나? 할정도로 이해가 안됬습니다. 강의에서 이해가 안되면 자바와 라이브러리를 다시봐야한다 라고 말씀해주셨는데 막막합니다. 선생님이 갑자기 객체를 생성하시는데 왜 객체를 생성하는지를 제가 이해를 못하고 있으면 자바부터 다시 공부하는게 맞겠죠? 자바기초와 라이브러리를 공부하기에 좋은 책이나 강의를 추천해주실 수 있을까요? 그리고 가능하시다면 어떤 식으로 공부하는게 좋을지를 알고 싶습니다. 많은 조언 부탁드립니다! 선생님들!

사실 4년제 컴퓨터공학과에서도 기본은 배우지만 심화는 본인이 더 깊게 파고 들어야합니다. 우선 미시적인 답변을 먼저 드린다면, 백엔드개발자를 지망하신다면 어떤 기술 스택을 가져갈지를 생각해보시는 것이 좋습니다. 이에 따라 Python을 파야할지, Java를 파야할지 등 갈라질 수 있습니다. Spring을 말씀주셨으니 Spring을 기준으로 생각해본다면 Java를 먼저 공부하는 것이 맞습니다. Java는 말씀 주신 것처럼 객체를 왜 생성하고 컴퓨터 메모리와 어떤 상관 관계가 있는지 등 깊게 공부하는 것이 좋습니다. 이에 대한 부분은 의외처럼 느껴지실 수 있지만 C를 통해 배울 수 있습니다. C언어 포인터를 통해 메모리 관리에 대해서 배우실 수 있는데 이 개념이 Java 가비지컬렉션 개념까지 이어집니다. 때문에 C언어를 포인터를 중심으로 공부하시길 바랍니다. 다른 분들은 몰라도 저는 C언어 포인터까지 공부하신 분은 C언어 기본은 됐다고 생각하는 편입니다. C언어 포인터까지 공부하신 이후에는 Java 클래스 / 추상클래스 / 인터페이스 / 람다 / Optional / Collection / 가비지컬렉션 등을 중심으로 공부하시길 바랍니다. 저는 이 2가지를 공부할 때 윤성우님의 열혈 C언어 / 열혈 Java 책 / 강의를 봤습니다. 강의는 무료입니다. 꼭 저처럼 윤성우님 강의를 안 보셔도 되고 유튜브에 C언어 / Java 강의를 검색하셔서 공부하셔도 무방합니다. 마지막으로 거시적인 답변을 드리자면, 앞서 말씀드린 것과 반대로 기술 스택에 종속되지 않는 개발 능력을 쌓으시길 바랍니다. 우선 머리속에 백엔드 기술 과정을 만드는 것이 좋습니다. DB부터 시작해서 REST API 서버를 거쳐 프론트엔드까지 도달하는 과정을 한번 모두 경험하시는 것이 좋습니다. 이때 DB는 RDB를 쓸지 NoSQL을 쓸지, REST API 서버는 Java Spring으로 만들지 Python Django로 만들지, 프론트엔드는 순수 Javascript만 쓸지, React 혹은 Vue.js를 쓸지는 선택 사항입니다. 궁극적으로 기술 스택은 서비스를 구현하는 수단이라는 것과 이를 위해 다른 프레임워크 혹은 앞으로 나올 새로운 프레임워크를 배울 수 있다는 사실을 인지하셔야 합니다.

이 질문 바로 가기

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!