35-NIH 신드롬을 옹호하며
“코드 재사용은 좋다. 바퀴 재발명은 나쁘다"는 항상 맞는 말은 아니다. 적어도 핵심 비즈니스 기능과 목표는 파악한 후 직접 수행해라.
“코드 재사용은 좋다. 바퀴 재발명은 나쁘다"는 항상 맞는 말은 아니다. 적어도 핵심 비즈니스 기능과 목표는 파악한 후 직접 수행해라.
세상에 쉬운 일은 없다 항상 위험을 줄여라 위 둘을 해결하기 위해서는, 구현에 앞서 설계를 해야한다. 설계를 하지 않고 구현하면, 수정하는데 더 많은 시간을 사용할 수 있다. 점진적인 설계과 구현은 좋다. 형식에 지나치게 얽매이는 설계는 시간낭비다.
방법론을 조심하라. 방법론은 쓸만한 수준으로 그저 그런 성능을 내는 데는 괜찮은 방법이 될 수 있지만, 동시에 유능한 인재를 쫓아낼 수도 있다.
자기 업무에 대해 훨씬 더 신중한 태도를 지녀야 한다. 자기가 맡은 업무에 대해 최고 결정권을 가지는 곳이 일하기 좋은 곳이다.
편집 시간: 2022년 4월 20일 오후 5:11 코드 Algorithm/3190.py at main · Junroot/Algorithm 풀이 현재 시간에 회전이 있는지 빠르게 파악하기 위해서 dictionary로 저장했다. 보드 정보를 나타내는 2중 배열을 만들어서 비어있으면 0, 사과가 있으면 1, 뱀이 있으면 2로 표현했다. 뱀의 꼬리를 제거할 때, 가장 끝 부분 정보를 얻기 위해서 덱을 사용했다.
조직 내에서 변화를 시도할 만한 결정권이 없는 사람도 있을 것이다. 혼자라도 하십시오 한 사람의 힘이라도 프로젝트르 개선할 여지가 많다. 입소문의 힘을 이용하십시오 조엘 테스트 중 많은 항복은 팀이 비협조적이더라도 혼자 실천할 수 있다. 그 중 성공적인 항목은 분명히 나머지 팀원에게 퍼지게 돼있다. 우수한 인재를 모으십시오 채용과 인터뷰 업무에 참여하세요. 우수한 인재가 여러분 팀에 합류하도록 홍보해라. 개선할 의지와 능력이 있는 사람을 찾아 같은 편으로 만들어라. 뒤처진 팀원이 있으면 배울 기회를 주세요....
dog fooding: 자기회사 제품을 실제로 사용해 보는 과정 고객 입장에서 제품을 실행해보니 버그가 바로 눈에 띄었다. 고객 입장에서 사용 편의성을 직접 이해할 수 있다.
코틀린에서 컬렉션 만들기 코틀린은 자신만의 컬렉션 기능을 제공하지 않는다. 표준 자바 컬렉션을 활용하면 자바 코드와 상호작용하기가 훨씬 쉽다. 코틀린에서는 자바보다 더 많은 기능을 쓸 수 있다. 함수를 호출하기 쉽게 만들기 이름 붙인 인자 코틀린으로 작성한 함수를 호출할 때는 함수에 전달하는 인자 중 일부의 이름을 명시할 수 있다. 호출 시 인자 중 어느 하나라도 이름을 명시하고 나면 혼동을 막기 위해 그 뒤에 오는 모든 인자는 이름을 꼭 명시해야 한다. 자바로 작성한 코드를 호출할 때는 이름 붙인 인자를 사용할 수 없다....
프로세스의 개요 프로세스의 개념 프로그램: 저장장치에 저장되어 있는 정적인 상태. 프로세스: 실행을 위해 메모리에 올라온 동적인 상태. 컴퓨터 시스템의 작업 단위로 태스크라고도 부른다. 프로그램에서 프로세스로 전환 프로그램을 실행시키면 프로그램을 메모리의 적당한 위치로 가져온다. 그와 동시에 프로세스를 처리하는 데 필요한 다양한 정보가 들어있는 프로세스 제어 블록(Process Control Block, PCB)을 만든다. 프로세스 제어 블록에는 있는 다양한 정보 중 대표적인 적인 것은 세가지다. 프로세스 구분자(Process IDentification, PID): 메모리의 프로세스를 구분하는 구분자다. 메모리 관련 정보: 프로세스가 메모리의 어디에 저장되어 있는지 위치 정보가 담겨있다....
아래는 소프트웨어 팀이 얼마나 업무를 잘 수행하고 있는지 판단하는 조엘의 비공식적인 평가테스트 방법이다. 소스코드 관리시스템을 사용하고 있습니까? 소스코드 관리시스템을 사용하지 않으면, 다른 프로그래머가 무엇을 했는지 알 길이 없으며, 실수르 쉽게 되돌릴 수 없다. 한방에 빌드를 만들어낼 수 있습니까? 빌드 프로세스가 한 단계로 끝나지 않을 경우, 실수하기가 쉽다. 출시 날짜가 가까워질 수록 ‘마지막’ 버그를 수정하고 최종 EXE 파일을 생성하는 사이클을 짧게 유지해야 한다. 일일 빌드를 하고 있습니까? 빌드가 꺠진 문제성 코드를 우연히 체크인하는 경우, 다른 직원을 작업을 진행할 수 없게된다....
knowledge를 반복해서 사용하지 말라 프로젝트에세 이미 있던 코드를 복사해서 붙여넣고 있다면, 무언가가 잘못된 것이다. knowledge knowledge: 의도적인 정보 프로젝트를 진행할 때 정의한 모든 것 알고리즘의 작동 방식, UI의 형태, 우리가 원하는 결과 등 knowledge는 코드, 설정, 템플릿 등으로 표현할 수 있다. 프로그램에서 중요한 knowledge 두 가지 로직: 프로그램이 어떤 식으로 동작하는지와 프로그램이 어떻게 보이는지 공통 알고리즘: 원하는 동작을 하기 위한 알고리즘 비즈니스 로직은 시간이 지나면서 계속해서 변하지만, 공통 알고리즘은 한 번 정의된 이후에는 크게 변하지 않는다....
마이크로소프트가 장기간 살아남은 이유는 치명적이고도 아둔한 실수를 저지르지 않았기 때문이다. 실수 중 대다수는 기술관련 지식이 없는 비즈니스 쪽 사람이 기술적인 기본 사실을 이해하지 못하기 때문에 발생한다. 프로그래머를 조타수로 두지 않는 소프트웨어 회사는 결코 성공할 수 없다. 그러나 프로그래머가 저지른 실수 또한 많다. 소프트웨어 비즈니스에서 성공하려면 프로그래밍에 해박한 동시에 비즈니스도 이해하고 좋아하는 관리층이 있어야한다.
측정 역기능: 지식 노동자의 효율을 측정하려 들면 모든 질서가 급격히 붕괴돼버린다. 직원을 완전히 통제할 수 없을 떄 측정 역기능이 필연적으로 발생핟나.
편집 시간: 2022년 1월 31일 오후 5:52 코드 Algorithm/2798.py at main · Junroot/Algorithm 풀이 N이 100보다 작기 때문에 O(n^3)이어도 문제가 없다는 것을 알 수 있다. 모든 경우의 수를 다 구해본 뒤 M을 넘지 않는 최대값을 찾으면 된다.
편집 시간: 2022년 1월 31일 오후 5:59 코드 Algorithm/2751.py at main · Junroot/Algorithm 풀이 N이 최대 1,000,000 이기 때문에 최대 O(nlogn) 까지만 허용된다. python에서 기본적으로 제공해주는 정렬 함수는 머지 소트이므로 사용할 수 있다.
프로그래밍 작업을 더 쉽게 만들어 준다는 추상화 작업을 마쳤더라도 위대한 프로그래머가 되기 위해 알아야 하는 지식이 날로 늘어나고 있다. 허술한 추상화는 우리가 하키 스틱처럼 생긴 학습 곡선에 따라 살아가는 사실을 의미한다. 일주일만 배우면 활용하는데 필요한 90%를 배울 수 있다. 하지만 나머지 10%는 몇 년이 걸려야 겨우 따라잡을 수 있다. 한 세계에서만 살아본 사람이 다른 세상에 존재하는 복잡성에 대한 이야기를 들을 떄마다, 자신이 속한 세계는 복잡하지 않다는 생각이 든다. 소프트웨어 제작과정에서 의존할 언어 클래스, API, 플랫폼 등에 대해 몇년간 옹골진 경험이 있는 아키텍트를 한 명이라도 확보하지 못했다면 새로운 프로젝트를 시작하지 마십시오....
편집 시간: 2022년 2월 12일 오후 9:54 코드 Algorithm/2630.py at main · Junroot/Algorithm 풀이 네 구역으로 나누어서 각 구역에 대한 흰색과 파란색 색종이의 개수를 반환하는 분할 정복을 하면된다. 만약 현재 전체구역이 같은 색이면 이게 한개의 색종이가 된다.
편집 시간: 2022년 4월 2일 오후 5:07 코드 Algorithm/2623.py at main · Junroot/Algorithm 풀이 단순 위상 정렬문제다. 위상 정렬을 사용해서 순서를 결정하고, 모든 노드를 한번씩 방문하기 전에 끝난다면, 순환이 발생한 것이다.
편집 시간: 2022년 1월 31일 오후 6:06 코드 Algorithm/2609.py at main · Junroot/Algorithm 풀이 유클리드 호제법을 사용하면 쉽게 해결할 수 있다.
편집 시간: 2022년 2월 9일 오후 6:29 코드 Algorithm/2606.py at main · Junroot/Algorithm 풀이 bfs또는 dfs로 연결되어 있는 컴퓨터를 확인하면 된다.