개요 지난 6개월간 여러 개발자들과 협업을 진행하면서 많은 양의 코드를 기회가 있었고 다양한 방식으로 옳은 방법을 찾기 위해 함께 고민했었다. 이 과정에서 어떤 이들은 코드 리뷰는 신랄하게 비판적이어야 한다며, 다른 이들은 코드 리뷰를 굳이 비판적으로만 할 필요는 없다며 다양한 의견들을 제시해 주었었는데, 여전히 어떤 방법이 옳은 방향인지는 모르겠지만 이 글을 통해서 무엇이 궁극적으로 팀을 위한 코드 리뷰인지 다시금 생각해보고자 한다. 코드 리뷰 대체 왜 해야만 할까? 그리고 어떻게 해야 좋을까? 기업들의 기술 블로그 뿐만 아니라 코드 리뷰에 대한 다양한 의견들을 찾아보면 결국 코드 리뷰란 개발자가 다른 개발자의 코드를 확인하면서 서로의 지식을 공유할 뿐만 아니라 업무의 효율을 올리고 결론적으로 더 나은..
개요 개발자라면 한 번쯤은 들어보거나 혹은 지금 개발하는 중에도 사용하고 있을 오픈 소스는 무엇일까? 오픈 소스란 공개적으로 기술의 소스에 접근할 수 있고 수정하여 공유할 수 있는 소프트웨어를 의미합니다. 더 넓은 의미에서는 단지 소프트웨어에 국한되지 않고, 모델이 될 수도 있고 하드웨어가 될 수도 있습니다. 개발 커뮤니티가 현재처럼 크게 성장할 수 있었던 이유는 개발에 사용되는 많은 기술들이 오픈소스로 존재하고 필요에 따른 기술 수정 및 2차 창작을 허용한 상태로 존재하기 때문이라고도 여겨질 만큼, 개발 생태계에서 오픈소스의 영향력은 막강합니다. 그러면 이런 오픈 소스들은 어떤 식으로 유지되고 개발될까? 국내에서 많이 사용되는 자바 기반의 프레임워크인 스프링은 오픈소스 기반의 프레임워크로써 개발자들의 ..
개요 한 달간 진행했던 E2E 과정 동안 백엔드 엔지니어로써 서비스를 설계할 때 무엇을 중점적으로 봐야할지, 생각해야할 지 고려할 수 있었습니다. 이번 프로젝트는 한 달 간 실제로 배포까지 완성하여 접근할 수 있는 서비스를 구현하는 것이 목표였기에 앞서 과정 중인 진행했었던 프로젝트들 보다 더 많은 기술들을 시도해 볼 수 있는 기회였습니다. 이전에 Spring을 혼자 독학하면서 나름 프로젝트의 첫 발을 떼보았다 생각했지만, 이미 해커톤 중 한 차례 뒤통수를 맞고 온 참이라 더 배우는 자세로 임할 수 있었던 것 같습니다. 이번 프로젝트를 시작할 때 투표를 통한 제 주제가 뽑혀서 팀장이 되었고, 약 한 달이라는 기간동안 팀원들과 함께 기획하고 일정을 관리하는 동안 이전 프로젝트들에서는 배울 수 없었던 교훈들..
서론 Kernel360 과정 내부에는 프로젝트 팀 말고도 셀이라는 독립적인 단위의 조직이 존재합니다. 처음에는 왜 이 아무런 연관도 없는 사람들을 모아놓았을까? 라는 생각이었다면.... 사실 지금은 제일 친한 친구(?)와 같은 느낌의 사람들입니다. 딱히 프로젝트를 같이 진행하지 않아도 되고 (서로에게 스트레스 줄 일이 거의 없음).. 아무것도 하지 않아도 된다고는 했지만.. 이왕 하는거 더 친하게 지내고 싶고, 백엔드라는 공동의 목표가 분명히 존재하므로 셀장으로서 스터디를 제안했었습니다. 현재 진행 중인 스터디들,, https://github.com/Kernel360-cell1 Kernel360-cell1 Kernel360-cell1 has 4 repositories available. Follow th..
어떤 수의 제곱은 해당 수를 두 번을 곱함으로써 구할 수 있다. 이는 제곱식의 지수가 커지더라도 같으며 커지면 지수가 커지면 커질 수록 시간이 오래 걸린다. 예를 들어, 11의 12 제곱은 다음과 같이 구할 수 있다. int result = 1; for (int i = 0; i < 12; i++) { result *= 11; } System.out.println(result); 위와 같은 식에서 지수가 한없이 커진다면 해당하는 시간 만큼 반복문이 돌아야 하기 때문에 시간 복잡도는 O(N)이 걸린다. 위의 식을 더 빠르게 계산할 수는 없을까? 분할정복을 이용한 거듭제곱은 위에 대한 해결 방식이다. 예를 들어 11의 12 제곱은 11의 6제곱과 11의 6제곱의 곱을 통하여 구할 수 있는데 이처럼 분할하여 계..