지난 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는 정치 외에도 최근에 QUnit 과 JSCoverage 를 발견 했습니다. 그리고 달. 절대로은 단위 테스트 자바 스크립트 가능한 것이라고 생각하지 으로 코드 커버리지,하지만 ... 거기 :-)


이것은 내년에 내 레이더에 있으며 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.