우리는 왜 알고리즘을 공부할까요? 기초 소양을 쌓기 위해서? 좀 더 나은 개발자가 되기 위해서? 아주 틀린 이야기는 아니지만, 좀 더 솔직하게 얘기해 보겠습니다. 아마 대부분은 코딩 테스트를 통과하기 위해 알고리즘을 공부하고 있을 겁니다. 프론트엔드 개발자라면 ‘일단 서비스부터 잘 만들어야 할 것 같은데, 알고리즘은 또 언제 배우냐?’라며 막막한 마음이 들었던 것이 사실입니다. 저도 이런 고민을 했던 입장으로써, 오늘은 프론트엔드 개발자의 관점에서 알고리즘 공부의 중요성에 대해 솔직하게 이야기해보고자 합니다.
좋은 개발 스터디그룹을 찾기란 하늘의 별 따기이다. 개발자라면 공감할 것이다. 누구나 자신과 실력이 비슷하고 열정 있는 스터디원들을 만나 재미있게 공부하고 싶지만, 대부분 중간에 흐지부지되거나 어느새 모임에 생기를 잃은 채 간신히 유지하게 된다. 여럿이서 공부하는 데도 왜 시너지가 나지 않는 것일까? 그동안 스스로의 성장을 위해 많은 스터디에 참여하면서 여러 방법을 시도하면서 좋은 스터디의 기준에 대해 정리할 수 있었다. 이번 글에서는 어떻게 하면 좋은 개발 스터디를 할 수 있는지를 공유해보고자 한다.
“비동기 통신에 대해 설명해 보세요.” 프론트엔드 개발자 면접에서 자주 받는 질문이다. 개발자라면 비동기 통신과 동기 통신에 대한 개념을 정확하게 알아야 하고, 이를 바탕으로 효율적인 프로그램을 만들어야 하기 때문이다. 특히 자바스크립트는 싱글 스레드로 작동하기 때문에, 효율적인 프로그램을 만들기 위해서는 비동기 처리를 적절하게 사용하는 것이 중요하다. 이번 글에서는 필자가 면접에서 받은 질문을 토대로 비동기 통신, 동기 통신에 대한 개념을 소개한다. 그리고 비슷한 개념을 가진 블로킹과 논블로킹에 대해서도 살펴보고자 한다.
나는 비개발자의 일을 하고 있다. 그러나 일하면서 늘 '어느 정도의 프로그래밍은 알아야 한다'라는 생각을 한다. 그래서 다양한 시도 끝에 파이썬과 자바스크립트를 가볍게 활용하는 정도까지는 터득했다. 그리고 돌이켜보니 도움이 되는 강의와 그렇지 못한 강의에는 뚜렷한 차이가 있었다. 이번 글에서는 내 경험을 바탕으로 정리해 본 '프로그래밍 지식이 전혀 없는 비개발자를 가르칠 때 주의점'을 살펴보고자 한다. 프로그래밍 강의를 만드는 분들이나, 비개발자와 협업하는 개발자들에게 도움이 될 것이다.