지난 12 개월 동안 배운 가장 중요하고 유용하거나 깨달은 것은 무엇입니까? [닫은]


14

코딩 커뮤니티의 많은 사람들이 지속적인 개선, 고의적 인 연습 및 기타 활동에 대해 이야기하지만 현재의 관행에 대해 이야기 할 때 거의 제우스의 허리에서 완전히 형성된 것처럼 보입니다. 그들의 의견은 시간이 지남에 따라 또는 최근에 배운 내용으로 바뀌었다

때때로 나는 이야기를하러 가거나 책을 읽거나 누군가와 이야기를 나눕니다. 그리고 그들은 조금 더 열어 보았습니다.

지난 12 개월 동안 가지 를 골라야 한다면 그것이 무엇인지 알게 되었습니까?

답변:


18

나는 전체 프로젝트를 망쳐 놓는 데 썩은 관리자 한 명만 필요하다는 것을 알았지 만 나중에 혼란을 없애려면 많은 훌륭한 프로그래머가 필요합니다.


Martin, 나는 당신의 메시지가이 비오는 추운 토요일 아침에 나를 미소 짓게하기 때문에

"그것을 배웠습니다 ..."
Martin Wickman

이번 달에 나는 그 프로그래머 중 하나이기 때문에 +1. 지난 주 70 시간 이상 == "배럴에서 내 차례".
Dan Ray

그거 알아요! 인용해야합니다! "전체 프로젝트를 망칠 수있는 썩은 관리자는 한 명 뿐이지 만, 이후 많은 문제를 해결하려면 많은 훌륭한 프로그래머가 필요합니다."
Amir Rezaei

12

Clojure를 배우고 나서 함수형 프로그래밍 의 유용성을 깨닫기 시작했고 Java 코딩 스타일이 그 영향을 많이 받았습니다. 일반적인 생각과는 달리, 기능적 프로그래밍 언어 는 일부 기능적 프로그래밍을 수행하기위한 전제 조건이 아닙니다.

Java와 같은 명령형 언어에 기능 프로그래밍의 몇 가지 요소를 통합하는 것이 가능하며, 항상 관용적이지는 않지만 일부 문제에서 큰 도움이 될 수 있습니다. 예를 들어, wikipedia에 설명 된 것처럼 익명 클래스는 클로저와 거의 같습니다 . 게으른 평가는 특이한 것이 아니라 표준이어야합니다. 불변성은 과용 될 수 없다. 기존 객체를 변경하는 대신 새 객체를 생성하는 것이 GC 및 힙 소비로 인해 비싸다는 (거의) 구식 아이디어를 극복하십시오-99.9 %의 경우 단순히 관련이 없습니다. 실제로 병렬 처리는 효율성 인수를 다른 방식으로 뒤집을 수 있습니다 . 잠금을 제거하기 때문에 새로운 불변 ​​객체를 만드는 것이 기존 객체를 변경하는 것보다 저렴할 수 있습니다 .

순수 자바에서 FP 일에 대한 자세한 정보를 원하시면 여기 , 여기 , 여기여기 .


+1 동의합니다. Java가 함수형 프로그래밍에 대해 너무 나쁜 지원을한다는 것은 슬픈 일입니다.
Jonas

나는 FP에 대한 오랜 관심을 가지고 있었으며 (최초의 직업은 lisp를 포함했다) 지난 몇 년 동안 마침내 OO 등과 함께 상당히 '공통적 인'패러다임이되고 있다는 것이 매우 흥미 롭다.
FinnNk

Java 7은 최소한 더 나은 클로저를 가져야합니다. 그리고 lambdaj와 같은 영리한 라이브러리를 사용하면 언어 자체의 결함을 패치 할 수 있습니다.
Joonas Pulakka

Java / JVM에서 꼬리 재귀를 더 잘 지원하고 싶습니다.
Jonas

1
@Helper Method : 내 대답의 첫 번째 두 링크는 ​​FP with Java 관련 기사입니다. 나는 그 주제에 관한 어떤 책도 모른다. "얻는"가장 좋은 방법은 실제 FP 언어를 배우고 Java 코드에서 더 많은 불변의 객체를 사용하는 것입니다.
Joonas Pulakka

10

뛰어난 팀과 해당 팀의 유능한 관리가 있어도 작업은 안전하지 않습니다. 고위 경영진은 여전히 ​​전체 이사국을 해산하는 것처럼 어리석은 일을 할 수 있습니다.

한마디로 정치는 중요하고 때로는 당신에게 영향을 미치는 정치는 통제 할 수 없습니다.


Martin은 이미 비슷한 대답으로 나를 웃게하기 때문에 가상 +1을 제공합니다.) Dead March을 읽었습니까? 이것은 당신이 말하는 것에 관한 책입니다

(가상 상승 투표를 실제 투표로 전환)

9

소프트웨어 테스트의 목적은 버그를 찾는 것임을 알게되었습니다 . 그것은이다 없는 시스템이 올바른지 확인합니다.

중요한 심리적 요소가 있습니다 : 당신의 목표가 프로그램이 "정확하다"는 것을 보여주는 것이라면, 당신은 당신이 통과 할 것으로 예상되는 시험을 보게 될 것입니다. 그러나 버그를 찾는 것이 목표라면 시스템을 실제로 한계까지 끌어 올리는 테스트를 보게 될 것입니다.

사용하는 언어에 중요한 변화가 있습니다. 테스트에서 버그를 발견하면 성공 이라고합니다 . 테스트가 실패 하면 (즉, 프로그램이 통과 한 경우) 실패 라고합니다 . 나는 "검증"사고의 선을 따라가는 것을 붙 잡았다. 그리고 그것은 큰 차이를 만든다.

이 심리적 효과는 제가 추천하는 고전적인 책인 The Art of Software Testing 에서 더 많이 논의 됩니다. 필자 Myers는 또한 프로그램을 테스트하는 사람이 저자가 아니거나 동일한 관리 체인에 있지 않아야한다고 권장합니다. 직접 코딩하는 경우이 작업을 수행 할 수 있으므로 훈련이 필요합니다.


8

고객 제공에서 처음으로 테스트 중심 개발을 수행하여 코드 품질에 어떤 영향을 미치는지 확인하고 Eclipse의 JUnit 실행기 내에서만 실행됩니다. 더 나은 제품을 만들었습니다.


"Reunit latest unit test"를 키에 바인딩하는 방법을 찾지 못했습니다. 이것은 조금 지루했다.

5

자아없는 프로그래밍의 진정한 가치.

어떤 수준에서 나는 자아와 프로그래밍이 섞이지 않는다는 것을 항상 알고 있었지만 그 결과를 전혀 추론하지 않았습니다. 자신의 관행에서 적극적으로 검토하고 결함을 찾아야한다는 개념은 작년에야 실현하기 시작한 것입니다. 또한 내 디자인에 대한 비판 (UI와 코드 모두)을 적극적으로 찾는 법을 배우고 있습니다.

그러나 솔직히 말해서, 나는 여전히 자아를 버리는 방법을 배우고 있으며 아마도 내 프로그래밍 경력의 나머지 부분에서 그렇게하는 법을 배우고있을 것입니다.


3

내 질문에 대한 대답은 다음과 같습니다.

약 1 년 전에는 자동화 된 승인 테스트가 테스터가 수동으로 수행 한 테스트의 자동화 된 버전이 아니어야한다고 클릭했습니다. 단일 패스에서 가능한 한 많이 충돌하지 않고 단일 사양에 대한 테스트에 중점을두면 테스트가 훨씬 단순하고 읽기 쉬워졌으며 증분 전송을 장려하는 데 도움이되었습니다.


3

Semirings와 같은 수학적 개념이 알고리즘에 어떻게 적용되는지 배웠습니다. 이것으로 당신은 다른 semiring을 사용하는 것을 제외하고는 어떤 알고리즘이 같은지 보여줄 수 있습니다. 이것은 프로그래머로서 나에게 그렇게 이상해서는 안되지만 머리가 부러졌습니다.


1
하나의 예가 있습니까?
Mark C

프로그래밍 요소 책에는 거듭 제곱을 계산하는 함수와 피보나치 재료를 사용하여 O (log n) 시간으로 fib를 계산하는 예제가 있습니다. 예는 cpp-next.com/archive/2010/03/eop-ch3-preview 에서 찾을 수 있지만 해당 웹 사이트는 내부 서버 오류로 응답합니다.
피터 Stuifzand

3

Frank Shearar는 정치 외에도 최근에 QUnitJSCoverage 를 발견 했습니다. 그리고 달. 절대로은 단위 테스트 자바 스크립트 가능한 것이라고 생각하지 으로 코드 커버리지,하지만 ... 거기 :-)


이것은 내년에 내 레이더에 있으며 js 단위 테스트에 약간의 어려움을 겪었지만 아직 실제 프로젝트는 아닙니다. 이용 가능한 커버리지 도구가 있다는 것을 몰랐습니다!
FinnNk

2

지난 프로그래밍 연도에 대한 나의 3 대 감사는 다음과 같은 것입니다 (중요도와 감사의 내림차순).

  • 아이디어와 알고리즘을 코드로 표현하는 다른 더 우아하고 간결한 방법으로 내 마음을 여는 기능적 프로그래밍 패러다임 . 기능적인 프로그래밍 아이디어 덕분에 전반적인 프로그래밍 기술이 단기간에 크게 향상되었다고 생각합니다.

    (저의 훌륭한 책 Real-world Functional Programming 으로 Tomáš Petříček에게 개인적으로 감사드립니다 .)

  • 모두 의존성 주입단위 테스트는 객체 조성물은 틀림없이 복잡한 (객체 지향) 시스템을 만들기위한 가장 좋은 방법이라고 가르쳐왔다 (그 클래스 상속은 내가 생각하는 데 사용으로 거의 중요하지 않다). 둘 다 저를 가르쳐 주었고 시스템을 가장 잘 구성하는 방법과 사용하기 쉽지만 재사용하기에 충분한 구성 요소를 작성하는 방법에 대해 생각하게 만들었습니다.

    (좋은 교육 자료를 언급해야한다면 Roy Osherove의 Art of Unit Testing 이라고 말할 것 입니다.)

이 모든 것들이 합쳐져서 이전에 비해 버그가 적은 코드를 작성하게되었습니다. 이제는 이전에 내놓은 것보다 훨씬 이해하기 쉽고 잘못된 코드를 작성하기 때문입니다.


2

빠르게 진화하는 소프트웨어 산업에서 변화가 무엇이든 , 학습 곡선 은 항상 여기에 있습니다. "배우는데 시간이 걸리지 않고 배울 수있는 방법이 있다면"


항상 배울 새로운 것들이 있다는 사실은 저에게이 직업의 큰 매력 중 하나입니다. IT 시스템은 점점 복잡 해지는 문제를 가장 잘 처리하는 방법에 관한 것입니다. 저는 그 방향에서 새로운 이론과 개념을 발견하는 것을 좋아합니다. 반면에, 최신 기술을 따라야하는 것은 끊임없는 경쟁처럼 느껴질 수 있기 때문에 때때로 모두 실망 할 수 있습니다.
stakx

1

나는 새로운 회사에 팔리는 것이 실제로 당신의 직업을 향상시킬 수 있다는 것을 배웠습니다. 내 조직은 5 월에 이전 회사에서 구입했으며 상황이 계속 좋아지고 있습니다. 이 새로운 회사는 새 사무실에 거의 또는 전혀 비용을 아끼지 않았고, 사용되지 않는 개발 기계를 21 세기 장비로 교체했으며, 프로젝트 관리에 유연성을 보였으며, 일반적으로 우리 모두를 환영하는 것 이상으로 느끼게 만들었습니다.

그것은 팔리는 것을 약간 우울하게 느낍니다 (손이 바뀌는 땅에 묶여 있기 때문에 새로운 봉건 영주가있는 종자와 조금 비슷합니다). 그러나 최종 결과는 내가 예상했던 것보다 훨씬 나았습니다.


0

Visual Studio 2010 내에서 Microsoft 단위 테스트를 사용한다고 말합니다.

특정 테스트 방법을 디버깅하는 것이 정말 쉽다는 것을 알았습니다.

비즈니스 계층 응용 프로그램이 제대로 작동하는지 확인하기 위해 언제든지 테스트 프로젝트를 실행할 수 있습니다. 테스트 프로세스를 통해 웹 사이트 방문자를위한 완벽한 솔루션을 배포 할 때 팀에 아무런 문제가 없어야합니다.


0
  • 기본 파이썬 배우기 (때때로 빠른 스크립트 작성에 사용)

  • VM에 ArchLinux를 설치했습니다 (이전에 VM에 Ubuntu가 있었으므로 PC가 빠릅니다!).

  • MATLAB으로 시작 (특히 그래프 및 빠른 수치 확인을 위해)

  • SVN에서 Mercurial으로 전환 (분기 및 병합!)



-1

파이썬 웹 응용 프로그램을 유지 관리하기 시작해야했기 때문에 Vim 을 배우기에 좋은 시간이라고 결정했습니다 . 이제 Java 및 Flex 개발을 위해 Intellij에 IdeaVim 플러그인을 사용하고 있으며 타이핑이 더 빠르고 효율적이라고 생각합니다.


1
정말 -1? 당신은 저를 위해 포장을 풀고 싶어합니다. 사람들은 VIM이 계몽 적이거나 유용하다고 생각하지 않습니까?
Watson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.