Detail

IT/Other5

[Pair Programming] 페어 프로그래밍을 통해 본 개발자의 성장을 저해하는 나쁜 습관 요즘 신입 개발자들과 하루에 몇 시간씩 투자해서 페어 프로그래밍을 하고 있다. 그 과정에서 느끼고 알게 된 나쁜 습관과 좋은 습관에 대해서 정리하려 한다. 습관의 힘 나는 프로그래밍 능력을 좌우하는 것이 무엇인지 항상 궁금했다. 개발 센스가 좋은 사람이 있으면 나쁜 사람도 있는데 이걸 단순히 지능의 차이라고 치부해버리기엔 뭔가 아쉽다. 단순히 머리의 좋고 나쁨이 아닌 이 센스를 결정 짖는 무언가가 있지 않을까 생각하곤 했었다. 어느 날, 동료의 화면을 멍하니 쳐다보다가 순간 머릿속을 스치는 게 있었다. 동시에 주위 다른 개발자들의 화면을 둘러보고 알게 되었다. 아웃풋이 느린, 흔히 말하는 생산성이 낮은 사람일수록 스택 트레이스 화면을 작게 띄워놓는 경향이 있었다. 이건 따로 통계를 낸 게 아니라서 확실한..
프로그래밍 원칙 & 법칙 보이스카우트 원칙 (The Boy Scout Rule) 보이스카우트가 오기 전보다 돌아갈 때 그 자리를 더 깨끗하게 한다는 규칙. 소프트웨어 개발에서는 모듈을 체크인할 때, 반드시 체크아웃할 때 보다 아름답게(깨끗하게) 한다는 규칙을 의미한다. 브룩스의 법칙 (Brooks' law) 지연된 프로젝트에 추가 인원 투입은 프로젝트를 더욱더 지연되게 할 뿐이다라는 법칙. 바꿔 말하면 임산부를 9명 더 모아도 아기를 한 달 만에 출산할 수 없다고 비유하기도 한다. 이 법칙의 성립을 설명하기 위해 프로젝트 적응에도 시간이 걸린다는 것과 커뮤니케이션 코스트가 증가한다는 것을 들기도 한다. 콘웨이의 법칙 (Conway's law) 시스템을 설계하는 조직은 그 조직의 커뮤니케이션 구조를 그대로 복사한 설계를 만들어 낸..
[개발자] 유명한 프로그래머들 A * 앨런 쿠퍼 (Alan Cooper) Visual Basic의 아버지. 미국의 소프트웨어 디자이너이자 프로그래머이다. 소프트웨어 개발자들은 자기들이 만든 제품을 볼 때 안 좋은 부분이 눈에 들어오지 않는다. 기능과 특징이 얼마나 풍부한지만 눈에 잘 들어온다. 말도 안 되게 쓰기 불편하다든지 사용 방법을 익히는데 많은 시간이 걸린다든지 혹은 매일 일과에서 사용해야만 하는 사람들을 가볍게 바보로 만든다든지 하는 걸 보지 못하곤 한다. * 앨런 케이 (Alan Curtis Kay) 미국의 전산학자로 Smalltalk 설계자이다. 객체 지향 프로그래밍과 유저 인터페이스 설계에 관한 초기 업적으로 알려져 있다. 미래를 예측하는 최고의 방법은 그것을 발명하는 것이다. 불완전한 아이디어에 근거하여 빈약하게 구현..
Elasticsearch (엘라스틱 서치) 에 대해서 Elasticsearch ※ Java로 만들어진 전문 검색(Full Text Search) 소프트웨어. 미리 축적된 대량의 데이터에서 특정 키워드를 찾아내는 기능을 가짐. Java 클래스 라이브러리로 제공됨. - by Lucene DBMS로도 충분하지 않을까? 데이터베이스마다 장단점이 다르고 대규모 데이터 축적 및 활용에서 모든 유스 케이스에 유연하게 대처할 수 있는 데이터 스토어가 없다. 또 각각의 데이터 스토어는 특정 목적으로 특화되어 진화하고 있다. MySQL 모순 없이 영속화하는 일에 특화된 데이터베이스 장점 : 쿼리 사용(SQL), 검색 트래픽에 맞게 시스템 확장에 유리 단점 : 데이터 증가, 저장 속도에서 약점 Redshift (AWS) 데이터 웨어하우스 데이터베이스 장점 : 대규모 데이터 축..
[번역] 풍림화산(風林火山) 개발자 아프레소라는 벤처기업의 CTO를 맡은 지 6년 2개월이 된다. 변화가 격렬한 벤처업계임에도 운 좋게 비교적 긴 시간 일 할 수 있었는데, 회사 안팎에서 여러 유형의 개발자와 함께 일 할 수 있었다. 어떤 한 개발팀에 개발자 한 명이 투입되면서 짧은 기간에 극적으로 좋아진 사례도 봤고, 서로 상호 보완적인 관계의 다섯 명으로 이루어진 팀이 열다섯 명으로 이루어진 팀보다 훨씬 좋은 성과를 낸 것도 본 적이 있다. 이러한 경험을 통해 스타 엔지니어라고 부를 수 있는 사람들이 갖고 있는 특징을 정리할 수 있었다. 세상에는 훌륭한 개발자가 많다. 개발 능력뿐만 아니라 재무 지식과 같은 업무 관련 지식이 깊은 개발자, 영업 능력을 갖춘 개발자, 남들과 다른 독특한 기술을 익힌 개발자도 있다. 지금부터 내가 설명할 ..
728x90