답변:
나는 전체 프로젝트를 망쳐 놓는 데 썩은 관리자 한 명만 필요하다는 것을 알았지 만 나중에 혼란을 없애려면 많은 훌륭한 프로그래머가 필요합니다.
Clojure를 배우고 나서 함수형 프로그래밍 의 유용성을 깨닫기 시작했고 Java 코딩 스타일이 그 영향을 많이 받았습니다. 일반적인 생각과는 달리, 기능적 프로그래밍 언어 는 일부 기능적 프로그래밍을 수행하기위한 전제 조건이 아닙니다.
Java와 같은 명령형 언어에 기능 프로그래밍의 몇 가지 요소를 통합하는 것이 가능하며, 항상 관용적이지는 않지만 일부 문제에서 큰 도움이 될 수 있습니다. 예를 들어, wikipedia에 설명 된 것처럼 익명 클래스는 클로저와 거의 같습니다 . 게으른 평가는 특이한 것이 아니라 표준이어야합니다. 불변성은 과용 될 수 없다. 기존 객체를 변경하는 대신 새 객체를 생성하는 것이 GC 및 힙 소비로 인해 비싸다는 (거의) 구식 아이디어를 극복하십시오-99.9 %의 경우 단순히 관련이 없습니다. 실제로 병렬 처리는 효율성 인수를 다른 방식으로 뒤집을 수 있습니다 . 잠금을 제거하기 때문에 새로운 불변 객체를 만드는 것이 기존 객체를 변경하는 것보다 저렴할 수 있습니다 .
소프트웨어 테스트의 목적은 버그를 찾는 것임을 알게되었습니다 . 그것은이다 없는 시스템이 올바른지 확인합니다.
중요한 심리적 요소가 있습니다 : 당신의 목표가 프로그램이 "정확하다"는 것을 보여주는 것이라면, 당신은 당신이 통과 할 것으로 예상되는 시험을 보게 될 것입니다. 그러나 버그를 찾는 것이 목표라면 시스템을 실제로 한계까지 끌어 올리는 테스트를 보게 될 것입니다.
사용하는 언어에 중요한 변화가 있습니다. 테스트에서 버그를 발견하면 성공 이라고합니다 . 테스트가 실패 하면 (즉, 프로그램이 통과 한 경우) 실패 라고합니다 . 나는 "검증"사고의 선을 따라가는 것을 붙 잡았다. 그리고 그것은 큰 차이를 만든다.
이 심리적 효과는 제가 추천하는 고전적인 책인 The Art of Software Testing 에서 더 많이 논의 됩니다. 필자 Myers는 또한 프로그램을 테스트하는 사람이 저자가 아니거나 동일한 관리 체인에 있지 않아야한다고 권장합니다. 직접 코딩하는 경우이 작업을 수행 할 수 있으므로 훈련이 필요합니다.
Semirings와 같은 수학적 개념이 알고리즘에 어떻게 적용되는지 배웠습니다. 이것으로 당신은 다른 semiring을 사용하는 것을 제외하고는 어떤 알고리즘이 같은지 보여줄 수 있습니다. 이것은 프로그래머로서 나에게 그렇게 이상해서는 안되지만 머리가 부러졌습니다.
Frank Shearar는 정치 외에도 최근에 QUnit 과 JSCoverage 를 발견 했습니다. 그리고 달. 절대로은 단위 테스트 자바 스크립트 가능한 것이라고 생각하지 으로 코드 커버리지,하지만 ... 거기 :-)
지난 프로그래밍 연도에 대한 나의 3 대 감사는 다음과 같은 것입니다 (중요도와 감사의 내림차순).
아이디어와 알고리즘을 코드로 표현하는 다른 더 우아하고 간결한 방법으로 내 마음을 여는 기능적 프로그래밍 패러다임 . 기능적인 프로그래밍 아이디어 덕분에 전반적인 프로그래밍 기술이 단기간에 크게 향상되었다고 생각합니다.
(저의 훌륭한 책 Real-world Functional Programming 으로 Tomáš Petříček에게 개인적으로 감사드립니다 .)
모두 의존성 주입 및 단위 테스트는 객체 조성물은 틀림없이 복잡한 (객체 지향) 시스템을 만들기위한 가장 좋은 방법이라고 가르쳐왔다 (그 클래스 상속은 내가 생각하는 데 사용으로 거의 중요하지 않다). 둘 다 저를 가르쳐 주었고 시스템을 가장 잘 구성하는 방법과 사용하기 쉽지만 재사용하기에 충분한 구성 요소를 작성하는 방법에 대해 생각하게 만들었습니다.
(좋은 교육 자료를 언급해야한다면 Roy Osherove의 Art of Unit Testing 이라고 말할 것 입니다.)
이 모든 것들이 합쳐져서 이전에 비해 버그가 적은 코드를 작성하게되었습니다. 이제는 이전에 내놓은 것보다 훨씬 이해하기 쉽고 잘못된 코드를 작성하기 때문입니다.
나는 새로운 회사에 팔리는 것이 실제로 당신의 직업을 향상시킬 수 있다는 것을 배웠습니다. 내 조직은 5 월에 이전 회사에서 구입했으며 상황이 계속 좋아지고 있습니다. 이 새로운 회사는 새 사무실에 거의 또는 전혀 비용을 아끼지 않았고, 사용되지 않는 개발 기계를 21 세기 장비로 교체했으며, 프로젝트 관리에 유연성을 보였으며, 일반적으로 우리 모두를 환영하는 것 이상으로 느끼게 만들었습니다.
그것은 팔리는 것을 약간 우울하게 느낍니다 (손이 바뀌는 땅에 묶여 있기 때문에 새로운 봉건 영주가있는 종자와 조금 비슷합니다). 그러나 최종 결과는 내가 예상했던 것보다 훨씬 나았습니다.
기본 파이썬 배우기 (때때로 빠른 스크립트 작성에 사용)
VM에 ArchLinux를 설치했습니다 (이전에 VM에 Ubuntu가 있었으므로 PC가 빠릅니다!).
MATLAB으로 시작 (특히 그래프 및 빠른 수치 확인을 위해)
SVN에서 Mercurial으로 전환 (분기 및 병합!)