개발자
프론트엔드 공부하고 프로젝트 진행하면서 성능 이슈를 몸소 체험해 코드를 잘 짜야한다는 것은 알겠습니다.. 자료구조와 알고리즘에 대해 공부를 했다가 안했더니 처음으로 돌아간상태입니다 ㅠ ㅠ 코드를 잘 짜야하는 것은 알겠고, 자료구조와 알고리즘이 대부분의 사람들이 중요하다고 하지만 저는 프론트엔드에서 어느 부분에서 자료구조와 알고리즘이 사용되는지도 몰라서 크게 와닿지가 않네요 어떤 식으로 생각하고 공부해야지 코드를 짤 때 접목시키고 좋은 방향으로 나아갈 수 있을까요??
답변 2
인기 답변
글쎄요.. 일반적인 웹 개발(프론트엔드든 백엔드든) 실무를 하는 데에 있어서 우리가 코딩테스트 때 푸는 자료구조와 알고리즘을 쓰는 상황이 많이 오는가에 대해서는 좀 생각해 볼 일인 것 같습니다. 질문자님께서 성능 이슈를 몸소 체험하셨다고 했는데, 혹시 어떤 상황이었는지 말씀해 주실 수 있을까요? 궁금한 이유는 그 성능 이슈가 발생한 원인이 질문자님께서 구현하신 로직에서 자료구조와 알고리즘을 효율적으로 짜지 않았기 때문이 아닐 것 같아서 그렇습니다. 근래 프론트엔드에서의 대표적인 성능 이슈는 - 느린 초기 로딩 속도 - 자주 쓰이는 리소스를 매번 호출 - 느린 이미지 로딩 속도 - 불필요한 리렌더링 위 정도의 상황일 것 같습니다만, 이것들을 해결하기 위해 결코 자료구조와 알고리즘 지식이 필요하지는 않다는 겁니다. 그럼 질문자님께서 들으셨던 “대부분의 사람들이 자료구조와 알고리즘이 중요하다.”라고 하는 건 다 거짓말이냐?라고 한다면 목적에 따라 다르다. 정도로 볼 수 있을 것 같은데요. 예를 들어, - 코딩테스트가 필수인 유명 대기업이나 스타트업에 갈 거다. -> 중요함 - 알고리즘 대회에서 수상할 거다. -> 중요함 - 실무에서 성능 이슈 없이 코드를 잘 짜고 싶다. -> 별로 안 중요함 정도가 될 것 같습니다. 참고로 유명 대기업이나 스타트업에서 코딩테스트 또는 라이브 코딩 같은 걸 보는 이유는 실무의 구현 능력과 직접적인 연관이 있어서라기보다, 개발자로서 기본적인 문제 해결 능력이 있는가를 판가름하는 유용한 척도가 될 수 있기 때문입니다. 그러니까 내가 코딩테스트가 필수인 회사를 굳이 안 가도 되는 상황이면 자료구조와 알고리즘에 굳이 목 멜 필요가 없다는 얘기입니다. 구구절절 얘기했는데, 결론은 프론트엔드 개발자로서 실무에서 성능 이슈 없이 코드를 잘 짜고 싶다. 가 목적이라고 한다면, 자료구조와 알고리즘을 공부하기보다는 (일단 배열, 스택, 해시테이블 정도만 추천) 앞서 말씀드린 대표적인 성능 이슈를 해결하는 방법을 깨우치면 될 것이며, 일반적으로 코드를 잘 짠다는 것은 버그가 없고, 남이 읽기 쉽고, 유지 보수가 용이한 코드를 짤 수 있다. 와 좀 더 일맥상통하기 때문에 이런 능력들을 향상시키시는 게 현재 질문자님의 상황에서 좀 더 도움이 될 거란 생각이 드네요.
익명
작성자
2023년 12월 06일
좋은 답변 감사합니다!! 우선 제가 겪었던 일은 서버에서 작업할 때 하나의 작업을 처리하고, 데이터를 불러오는 과정에서 생각보다? 오래 걸렸습니다... 대략 10초정도..? 로컬에선 1초밖에 안걸렸던 작업들 입니다! 이 프로젝트는 django로 풀스택으로 개발하였는데 개발하기에 급급하여 썻던 데이터를 계속 불러오고 불필요한 저장과 중복된 for문, if문 등으로 인하여 성능 저하가 발생했다고 생각했습니다... 선생님의 말씀을 들어보니 제가 생각했던 방향과 행동한? 방향이 좀 달랐던 것 같습니다. 우선 제가 목표로 했던 것은 코드를 잘 짜는 것이였습니다! 선생님의 말씀에 제 생각을 덧붙여서 올바른 방향으로 가보겠습니다 👍
이종현
프론트엔드 개발지망생 • 2023년 12월 06일
좋은 의견 감사합니다
인기 답변
삭제된 사용자
2024년 01월 15일
안녕하세요. 김석현님께서 현실적인 부분에서 좋은 답변을 남겨주셨으나 알고리즘을 중심으로 공부를 이어가는 입장에서 약간 첨언을 하고자 합니다. 자료구조와 알고리즘은 매우 중요하나, 그것이 low level에서 이미 적용되어 있기에 실제로 와닿지 않으신 것으로 생각이 듭니다. 시스템 엔지니어링, 컴파일러 등의 low level에서 알고리즘을 비롯한 컴퓨터과학의 이론들이 매우 깊게 스며들어있습니다. 심지어는 네트워크의 라우팅 테이블을 형성하는 방법에도 알고리즘이 적용이 됩니다. 그 결과, 어플리케이션 개발에서 그러한 사사로운 부분들을 신경쓰지 않아도 되었고 체감하시기 어려우셨던 것 같습니다. 이는 사실 컴퓨터공학에서 개발을 쉽게 만드는 패러다임과 일맥상통하는 부분이라고 생각하므로, 체감이 어려운 것이 당연하다고 생각합니다. 또한, 몇몇 이슈로 인해 알고리즘에 대한 이해를 요구하는 코드나 공식문서를 보더라도, 이를 이해하기 위해 매우 어려운 수준의 지식을 요구하지 않게 설계된 것도 영향을 끼친다고 생각합니다. 그리고 하드웨어가 매우 발전했기 때문에 많은 경우에 발생한 문제를 모델링하고 수학적으로, 알고리즘적으로 접근하지 않더라도 실험적으로, 그 외의 방법으로 해결이 가능합니다. 전자(알고리즘 설계)는 많은 경우 매우 어렵고 시간이 오래 걸리므로 접하기 쉽지 않으셨을 것 같습니다. 정리하자면, 알고리즘은 이미 많이 스며들어 있으며, 많은 문제들이 이론적 해결보다 더 빠르고 쉬운 방법으로 해결될 수 있으므로 중요성을 체감하시기 어려우신 것 같습니다. 도움이 되셨길 바랍니다.
익명
작성자
2024년 01월 17일
오래 지난 글에도 답변 감사합니다. 크게 와닿지 않는 이유를 이젠 알 것 같습니다 !
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!