12월, 2015의 게시물 표시

소프트웨어 전문 기업에서 연구 방법

최근 신입 연구원 지망자들을 면접하면서 소프트웨어를 직업으로 삼으려는 학생들 수준이 예전보다 많이 높아졌음을 느낀다.
국민적으로 소프트웨어의 중요성에 대한 평가가 그만큼 올라갔고, 또 소프트웨어를 통한 자기 실현의 기회가 상대적으로 많아졌기 때문인 것 같다.
아래는 소프트웨어 전문 기업의 연구소를 이끌면서 느끼는 개인적 감흥이라고 할 수 있겠다.
너무 당연한 이야기일지 모르지만, 실제로는 잘 되지 않는 것들에 대한 기록이다.

연구원별 과제 선정

소프트웨어 기업의 연구소는 어느 수준 이상의 연구개발 능력이 필요한 곳이다.
연구원들은 모두 동일한 능력을 갖지 않는다. 지적 노동을 하는 연구원들은 수준이 천차만별이지만, 일단 연구원으로서 연구개발 업무를 수행하기 위해서 필요한 기본 수준은 만족해야 한다.

우수한 인재
매우 우수한 사람은 흥미를 잃지 않을 주제를 주면 알아서 잘 한다. 이런 경우에는 어떤 가치 있는 주제를 기업 차원에서 연구해야 하는지 고민하고 이를 연구원과 잘 컨센서스를 이루는 것이 중요하다. 연구 주제에 흥미를 잃거나 포커스를 놓치게 되면 동기 부여에 실패하여 퍼포먼스가 급격하게 떨어지고, 타 회사로 이직을 고민하게 되는 경우가 있다.
연구의 가치와 방향에 대해서 항상 잘 조율이 되어 있어야 하고 초기에 궤도에 오를 때까지 주제와 방향을 잘 공유해야 한다.

평범한 인재
반면 상대적으로 평범한 연구원들도 많이 있다.
보통의 연구원들은 주제를 정해준다고 해서 충분히 방향을 잘 정하지 못하는 경우가 많다.
연구원의 능력에 따라 주제와 범위, 그리고 해결에 대한 방향까지 제시해줘야 하는 경우가 종종 생긴다. 이런 연구원들은 코칭이 늘 필요하고, 수준에 맞게 연구 수준과 범위를 좁혀줄 필요가 있다.
잠깐만 방향을 잃어도 퍼포먼스가 급격하게 떨어지는 경우가 많으므로 관리는 시간적으로 더 자주 일어나야 한다.

매니저와 연구원
연구 과제는 연구소에서는 누구나 진행할 필요가 있다.
단순 관리자가 필요하지 않은 연구소의 특성 상, 상위 관리자도 역시 기본적으로는 연구를 …

Java 관련한 간단한 테스트

문득 생각나서 몇 가지 간단한 Java  테스트

1. private static method의 코드 블록 크기가 작을 경우 javac는 가볍게 inline 시켜줌.
(즉, 해당 method는 바이트코드에서 사라져버리고 caller method에 inline됨.)

2. instanceof 연산자가 getClass()를 ==비교하는 것보다 훨씬 빠름.
(instanceof는 child class여부까지 체크해야 함에도 불구하고)

3. instanceof 연산을 할 때 exact class에 대해 호출하는 것이 parent class나 interface에 대해 호출하는 것보다 더 빠름. (당연!)

4. java.lang.Object의 clone() 메소드를 사용하여 객체를 shallow copy하는 것은 그다지 효율적으로 구현되지 않아서 직접 copy() 메소드를 구현하여 멤버값들을 복사해주는 것이 대부분 더 빠름. (자바는 C의 struct처럼value object 개념이 없어 메모리 복사만으로 clone할 수 없으므로)