be_better

[ZeroBase] 백엔드 신입 개발자가 쌓아야 하는 역량은? 본문

ZeroBase

[ZeroBase] 백엔드 신입 개발자가 쌓아야 하는 역량은?

NiceTry 2023. 9. 1. 20:12

목차

    자료구조

    자료구조데이터를 어떻게 저장할 것인지를 고민해야 하는 문제다.

     

    자료구조에는 배열, 연결리스트, 스택, 큐, 데크, 해시테이블, 트리, 그래프, 힙, 트라이 등이 있는데 각 자료구조의 장점, 단점을 생각해보고 어떤 자료구조를 사용할지 개발자가 직접 판단해야 한다.

     

    자료구조마다 시간복잡도, 공간복잡도가 다르고 잘 사용하지 않는 자료구조라고 해도 분명히 적합할 때가 있기 때문에 어느 하나 소홀히 공부해서는 안된다.

     

    백엔드 개발자는 데이터베이스에 데이터를 저장하고 그 데이터를 조회하여 사용자에게 제공해주어야 하기 때문에 특히나 더 중요한 역량이라고 생각한다.

     

    어떤 카테고리의 데이터는 어떤 자료구조에 저장해야 어떤 것보다도 효율적인지 사용자가 많아졌을 때의 시간, 공간복잡도를 생각해보고 알맞은 판단을 하기 위해서는 제대로 알고 사용하는게 좋다.

     

    데이터 갱신, 조회를 하기 전에 자료구조를 잘 설계해 놓는다면 개발을 진행할 때와 후에 유지보수도 편리해질 것이다.

     

    알고리즘

    알고리즘은 어떤 일처리를 하고싶을때의 과정을 조화롭게 나열한 것이다.

     

    무수한 데이터를 주고받는 서버 개발자로서 좋은 서비스를 제공하기 위해서는 어떤 과정을 통해 사용자가 요구하는 데이터를 잘 가공해서 보여줘야 할 지 코딩을 하면서 엄청 많은 고민을 해야한다.

     

    우리는 이미 잘 짜여진 알고리즘들을 라이브러리 클래스들을 통해 코딩을 수월하게 하고 있지만 전반적인 이론을 공부하고 알고있어야 어떤 것을 사용할지 바로 생각이 날 정도로 역량을 쌓아야 한다.

     

    코딩테스트

    자료구조와 알고리즘을 잘 공부해서 대부분의 기업에서 보는 코딩테스트를 통과하는 것도 중요하다.

     

    코딩테스트는 기업에 지원한 신입 개발자의 실력을 통계적으로 파악하기 쉬운 중요한 과정이라고 생각한다. 정답을 제출하더라도 어떤 자료구조와 어떤 알고리즘을 사용했는가, 시간복잡도와 공간복잡도를 생각하면서 풀었는가, 코딩을 읽기 쉽게 작성하였는가 에 대한 판단력, 사고력을 보는 분야라고 생각한다.

     

    코딩테스트 문제에는 실제 서비스를 할 법한 문제들도 많이 있기 때문에 사용자가 어떤 요구를 했고 개발자로서 그 문제를 해결해야 한다는 마음으로 임해야 한다고 생각한다.