개발자 팀은 소비자 앱의 성능 저하를 어떻게 방지 할 수 있습니까?


32

이전 에 느린 소프트웨어에 대한 책임이 무엇인지 물었을내가 받은 몇 가지 답변은 그것이 사회 및 관리 문제라고 제안했습니다.

이것은 기술적 인 문제가 아니라 마케팅 및 관리 문제입니다 .... 궁극적으로 제품 관리자는 사용자가 얻는 것에 대한 사양을 작성해야합니다. 많은 일이 잘못 될 수 있습니다. 제품 관리자가 사양에 버튼 응답을 넣지 못합니다 ... 품질 보증 담당자는 사양에 대해 평범한 테스트를 수행합니다. 우리는 프로그래머가 그것을 보충 할 수 없습니다. — 밥 머피

사람들은 좋은 크기의 앱에서 일합니다. 작동하면서 버그와 마찬가지로 성능 문제가 발생합니다. 차이점은-버그는 "나쁜"- "나를 찾아서 고쳐줘"라는 외침입니다. 성능 문제는 단지 거기에 앉아 악화됩니다. 프로그래머들은 종종 "내 코드에는 성능 문제가 없을 것입니다. 오히려 경영진은 새로운 / 더 큰 / 빠른 기계를 구입해야합니다."라고 말합니다. 사실 개발자가 주기적으로 성능 문제 ( 실제로는 매우 쉬운 )를 찾기 만하면 문제를 간단히 해결할 수 있습니다. — 마이크 던 라비

따라서 이것이 사회적 문제라면 조직이 고객에게 느린 소프트웨어를 배송하는 것을 피하기 위해 어떤 사회적 메커니즘을 적용 할 수 있습니까?


2
이것은 Jeff Atwood의 최근 블로그 게시물을 상기 시켰습니다 .
rahmu

2
해설자 : 질문이 마음에 들면 투표하십시오. 답변이 있으시면 의견이 아닌 답변으로 남겨 주십시오 . 그렇지 않으면 질문이 명확하거나 개선되었다고 생각되거나 관련 리소스에 대한 링크가있는 경우에만 의견을 남겨주십시오.

답변:


34

올바르게 작성되고 완전한 요구 사항이 있으면 버그와 성능 저하가 구분되지 않습니다 . 비 기능적 요구 사항으로 성능을 지정하기 때문에 성능 저하는 다른 버그와 마찬가지로 버그가되며 QA에 의해 파악되어 릴리스 전에 개발자가 해결합니다.

사회적 문제가 있습니까? 나는 그렇게 생각하지 않습니다. 주요 문제는 요구 사항이 불완전하다는 것입니다. 몇 년 동안 프리랜서로 일하면서 특정 작업이 평균 최대 N 초 동안 수행되어야한다는 기능적 요구 사항을 본 적이 없습니다 . 관리자 / 고객 / 이해 관계자 또는 그 밖의 어떤 것이 성과 자산에 대해 신경 쓰지 않는다면, 내가 관심을 가져야하는 사람들이 전혀 신경 쓰지 않기 때문에 개발자로서 내가 왜 귀찮게합니까?

성능 저하에 영향을 미치는 또 다른 요소가 있습니다 . 개발자가 값 비싼 PC에서 잘 작동 한다는 사실입니다 . 8GB RAM, 고급 SSD, 최신 OS 등을 갖춘 쿼드 코어 PC에서 수년 동안 작업하는 경우 듀얼 코어 PC의 Windows XP에서 응용 프로그램이 어떻게 실행되는지 상상하기가 매우 어렵습니다. 512 Mo의 RAM과 오래된 하드 디스크를 90 %로 채우고 몇 년 동안 조각 모음을하지 않았습니다. 불행하게도, 일부 국가에서는 마지막 사례가 대부분의 앱 소비자에게 나타나는 사례입니다. 개발자 PC와 소비자 PC 사이의 간격이 클수록 개발자는 자신의 앱 성능을 관리하기가 더 복잡합니다.


2
이 의견을 피기 백하여, 적어도 개발자 (및 테스터) 가이 문제를 잘 알고 있는지 확인하는 가장 좋은 방법은 하드웨어 또는 가상 컴퓨터의 요구 사항이 더 오래되거나 더 낮은 수준에서 항상 테스트하도록하는 것입니다. . 개발자로서 나는이 말을하기가 어렵지만, 때때로 우리는 스스로 경험할 때까지 문제를 해결하기 위해 노력하지 않습니다. 따라서 최소한 개발자가 하위 시스템에서 응용 프로그램을 테스트하도록 강요하면 직접 경험하는 성능 저하로 인해 효율적인 솔루션을 찾게됩니다.
RLH

3
QA 부서의 전반적인 성능을 저하시키고 느린 기계를 사용하는 직원을 압박하기 때문에 매일 제안하지는 않습니다. IMHO는 성능 메트릭을 요구 사항으로 지정하면 충분합니다 (예 : 자동 성능 테스트를 수행해야하는 시스템,로드, 평균 수행 횟수 등).
Arseni Mourzenko

1
공식적인 (비 기능적) 성능 요구 사항이있는 요구 사항으로 작업합니다. 실시간 생활에 중요한 소프트웨어입니다. 사양은 "평균적으로 x 이내, 시간의 y 95 %"로 응답합니다. 소프트웨어는 여전히 소프트웨어에 비해 속도가 느리지 만, 시스템이 잘못 수행하는 것과 마찬가지로 결함이되기 때문에 성능을 개선 할시기를 알고 있습니다. 개발자가 결정하도록 내버려 두는 것은 매우 나쁜 생각입니다. 대부분의 개발자는 자체 장치를두고 모든면에서 엔지니어를 능가하며 성능 문제로 삼진했습니다.
mattnz

3
성능의 또 다른 문제는 소프트웨어 개발자가 작업을 완료 한 후 오래 걸리는 최종 통합이 완료 될 때까지 사소한 시스템 이외의 성능을 테스트 할 수 없다는 것입니다. 몇 다운로드 한 애플리케이션으로, 반짝 공장 새 휴대 전화 마른 사람에서 잘 작동하고 메모리가 꽉 차면 및 소프트웨어 개발자가 ...... 엉터리 소프트웨어를 작성하기위한 비난 - 전화 응용 프로그램을 가지고
mattnz

2
여기서 문제는 "정확하게 작성된 완전한 요구 사항"을 절대로 얻지 않는다는 것입니다. 어떤 크기 나 복잡한 응용 프로그램에도 적용되지 않습니다.
CaffGeek

12

문제 (?) :

  • 고객 (또는 최종 사용자)이 이에 대해 불평하지 않습니다 (충분히)
  • 따라서 프로젝트 (/ 제품) 관리자는 요구 사항을 고려하지 않습니다.
  • 따라서 개발자는 그것을 고칠 시간이 없습니다.

처음부터 시작하여 고객을 교육해야합니다. 그러나 더 빠르고 덜 반짝이는 전화 대신 iPhone을 구입하면 개발자는 성능 대신 외모에 시간을 할애 할 수 있습니다. 조직은 문제가 아닙니다.

물론 어떤 것이 도움이 될 수 있습니다. 자동화 된 테스트를 기다리는 것은 성가신 일이므로, 자동화 된 테스트를 수행하면 개발자는 성능 문제에 대한 지속적인 피드백을받을 수 있으며 기능 문제가 아닌 기술적 문제로 해결할 가능성이 높습니다.

그러나 모든 것을 할 수는 없습니다. 기능을 최적화하거나 추가하며 돈을 쓰는 사람들이 결정합니다.

그러나 좋은 소식은 : SaaS / Cloud / Buzzword 애플리케이션이 여기에서 많은 도움이된다는 것을 알았습니다. 사람들이 몇 가지 유사한 웹 응용 프로그램을 선택하고 먼저 '필수'기능의 인공 목록을 작성하는 대신 실시간 테스트 를 수행하면 응답 속도에 더 빨리 영향을 받으므로 성능에 더 많은 관심이 집중됩니다.


나는 그것을 아주 잘 알고, 타이밍 +1
mKorbel

8

슬프게도, 가장 큰 문제는 모든 것을 할 수 없다는 것입니다. 배송 날짜가 있으며 속도가 느리다는 것을 알고 있지만 X, Y, Z 기능을 시장에 출시해야합니다.

마음 속으로 느리게 고칠 수는 있지만 앱은 최소한 작동합니다.

따라서 기능과 미학에 대해 걱정합니다 (사용자가 미학에 자주 초점을 맞추기 때문). 다음 릴리스에서는 성능을 수정합니다.

그러나 PM은 단지 기능 목록을 제공하며 성능을 수정할 시간이 없습니다.

그리고 악순환이 계속됩니다.


3
PM이 "향상된 성능"이라는 "기능"을 제공 할 때만 수정됩니다!
FrustratedWithFormsDesigner

4
PM이 성능을 향상시키기를 원할 때, 그렇게하는 유일한 방법은 다시 쓰는 것입니다. :)
Job

여기서 중요한 점은 대부분의 소비자 응용 프로그램에서 성능이 소프트웨어를 판매하는 기능이 아니라는 것입니다. "이 소프트웨어가하는 일"의 체크리스트에서 반짝 거리는 것은 아닙니다. 컴퓨터 게임은 이러한 생각의 빛나는 예입니다. 게임의 시스템 요구 사항은 시간이 지남에 따라 꾸준히 증가했습니다. 즉, 높은 프레임 속도로 인해 상자가 선반 밖으로 이동하지 않고 프랙탈 디테일로 실시간으로 렌더링되는 현실적인 환경 때문에 새로운 게임이 이전과 동일한 하드웨어로 느려집니다. will ...
Malachi

1
+1 여기에 좋은 성과를내는 경쟁자를 확보하는 데 도움이되는 곳이 있습니다. PM은 그것을보고 무서워하며 그것에 대해 뭔가를 부탁합니다.
Mike Dunlavey

1
@ 채드, 조건부 확률은 높지만 절대 확률은 낮습니다. 저는 "태어난 후"Windows 버전 용 16 비트 C 프로그램으로 시작한 앱을 만들고 있습니다. 오늘날과 수십 년의 프로그래머들에게는 C, C ++, C #, VB.Net 및 많은 SQL 벤더가 혼합되어 있습니다. F #에서 앱의 일부 주요 부분을 다시 작성해도 끔찍한 생각처럼 들리지 않습니다 ...
Job

4

다른 사람들도 동의합니다. 개발자가 느린 하드웨어에서 테스트하고 성능 목표를 세우는 것과 같이 개발자가 문제에 더 관심을 갖도록하는 방법을 찾아야합니다. 성능 튜닝과 관련해서는 괜찮습니다.

사람들은 방법을 알고 있어야합니다.

그들은 수 있습니다 생각 그들이, 그러나 다만 유래에이 포럼의 모든 성능 관련 질문과 답변을 통해 본다. 얼마나 많은 사람들이 성능에 대해 상식을 거의 나타내지 않는지 고통 스럽습니다.

사람들에 의해 배울 필요에 대해 그냥 이야기 뭔가 아니다 을. 그들이이 모드에있는 유일한 시간은 수업을 들거나 책이나 블로그에서 새로운 것을 배울 때입니다.

따라서이 문제를 해결하기 위해 생각할 수있는 유일한 방법은 프로그래밍 을 가르치는 사람들을 사로 잡고 그들이 하는 방법을 가르치는 입니다.

천국은 알고 있듯이이 포럼에서 시도했습니다-

누구나 할 수 있습니다. 그들은 실제로 해야 합니다.


4

성능을 요구 사항으로 만듭니다.


+1 : 그렇게 간단합니다. "기능 X는 Y 밀리 초 안에 완료해야합니다."

대기 환경을 지정하는 것을 잊지 마십시오. 예를 들어 대기 시간이 40ms (예 : WAN) 인 네트워크에서 실행될 때 표준에 따라 수행 할 NFR이 있습니다. 당신이하지 않으면 개발자는 슈퍼 컴퓨터에서만 작동하는 무언가를 제시 할 것입니다.
gbjbaanb

2

수행 코드 작성이 어렵습니다. 스레딩, 비동기 이벤트 처리, 캐싱 및 점근 적 복잡성과 같은 개념에 대한 확실한 이해가 필요합니다. 내가 함께 일한 프로그래머 그룹에 의해 판단하면, 주어진 그룹의 약 20-40 %는 물론 일상 업무에 성능 고려 사항을 포함시키기에 충분한 개념을 이해하지 못합니다.

그러나 이러한 프로그래머는 분명히 회사에 유용하지만 성능이 중요하지 않은 작업에 할당되므로 프레임을 삭제하지 않고 Netflix 스트림을 완벽하게 재생할 수있는 블루 레이 플레이어가 생겨나지 만 30-60 초가 걸립니다. 대기열을 표시하는 메뉴 항목을 엽니 다.

직원의 20 %를 해고하고 더 숙련 된 (그리고 더 비싼) 개발자로 교체 할 수있는 핫샷 소프트웨어 회사가 아니라면이를 해결하는 유일한 방법은 개발자 교육 및 버그 신고입니다. 다른 회사가 어떻게 진행되고 있는지 모르겠지만 여기서 개발자가 해결해야 할 시간이나 비즈니스 우선 순위가없는 성능 문제가 발견되면 자체 버그 보고서를 제출할 수 있습니다. 백 로그 맨 위로 이동하려면 몇 가지 릴리스가 필요할 수 있지만 일반적으로 최종적으로 해결됩니다.


또한 뛰어난 프로그래머조차도 성능 문제에 대한 통찰력을 얻으려면 훌륭한 계측 및 프로파일 링 도구가 필요합니다. (스택 추적 분석을 무시하는 성능 특성을 가진 많은 프로그래밍 패러다임이 있습니다.) 이러한 도구는 일반적으로 오픈 소스 스타일의 Linux 플랫폼에서 사용할 수 있지만 독점 및 사용자 정의 플랫폼에서는 이러한 도구가 종종 직원에게 거부됩니다.
rwong

나는 표현 된 감정에 동의하지 않습니다. 최대 퍼포먼스를 얻는 것은 매우 어려울 수 있지만 종종 저지방 과일이 많이 있습니다. 간단한 프로파일 링 (Mike Dunlavey가 위에서 제안한 기술)을 수행하고 명백한 문제를 해결하려고 노력하십시오. 종종 먼 길을 갈 것입니다.
sleske

2

성능이 필요한 경우 테스트하십시오.

그렇지 않으면 Wally는 무한 루프를 작성하고 "시간이 오래 걸립니다"를 일찍 떠날 수 있습니다. 그는 주장 할 수 있습니다.

소프트웨어 승인 테스트에는 다양한 운영 성능 특성에 대한 자세한 승인 테스트가 있어야합니다.

이렇게하지 않으면 당신은 엔지니어링하지 않는 모든 제품에 성능을.

자원 소비와 같은 성능은 하위 시스템에 예산을 책정해야합니다. 그런 다음 하위 시스템 승인 테스트에서이를 확인할 수 있습니다.

그런 다음 성능을 조기에 자주 테스트 할 수 있습니다. 그런 다음 단위 테스트조차도 확인할 수 있습니다.

따라서 이제 개발자는이를 수용 기준으로 삼고 있으며 이에 적합한 접근 방식을 구성 할 수 있습니다.

현재 작업중인 곳에서 성능 스트레스 테스트는 우리가 알고있는 고객 데이터 세트보다 2 배 더 큽니다. 정기적으로 새 버전의 제품이 중단됩니다. 좋은 테스트.


2

나는 90 년대 중반에 한 번 기억하고 무언가를 최적화하기 위해 시간을 보냈는데, 동료가 "이것은 펜티엄에서 실행되고 있습니다. .... 그것은 눈을 뜨는 사람이었습니다. 슬프게도, 그것은 빙산의 일각 일뿐입니다. "펜티엄"부분이 시간이 지남에 따라 바뀌었지만 내 경력 전반에 걸친 태도를 들었습니다.

일반적인 개발자가 관심을 가질 수있는 유일한 방법은 성능이 부족하여 고객이 버그로 간주하는 것입니다. 응용 프로그램과 대상에 따라 이것은 쉽지 않거나 어려운 작업 일 수 있습니다 (두 가지를 모두 보았습니다). 청중이 열악한 성능에 신경 쓰지 않는다면 개발자는 결코 (빠르고, 좋고, 빠르며, 두 가지를 선택하지) 않을 것입니다.


2

그러나 프로그래머가 키 누르기와 응답 사이의 3 초 지연이 허용되지 않는다는 것을 깨닫기 위해 QA의 서한을 가져 와서는 안됩니다.

해서는 안된다고 동의하십시오. 지연을 얻은 증거는 최종 사용자와 관련 이 있다는 증거 이상이 필요 합니다 .

컨텍스트를 제공하지 않으면 dev / QA 환경의 지연이 로컬 디스크 / 메모리 / 네트워크 액세스의 로컬 문제로 인해 발생할 수 있습니다. 이 경우 QA와 개발자는 최종 사용자에게 중요하지 않은 사항을 수정하기 위해 노력을 낭비하게됩니다.

성능 테스트에서 개발자에게 의존하는 것은 속도를 내기 위해 기능을 선택하기 위해 주사위를 굴리는 것만큼이나 생산적입니다. "개발자는 일반적으로 응용 프로그램의 성능 문제가 실제로 어디에 있는지에 대한 끔찍한 직관을 가지고 있습니다"( Brian Goetz ).

  • 나는 절름발이 경영진이 한때 그들의 밝은 마케팅 담당자와 똑똑한 프로그래머가 고객의 성능 문제를 처리하기에 충분하다고 결정한 프로젝트에 참여했습니다. 정말 대단한 교훈이었습니다. 거부 된 석방, 반년의 노력은 쓰레기통에 갔고 회사는 전략적 파트너를 거의 잃었습니다. 결국 그들은 전문가 (벤치마킹, 통계, UX, 저수준 최적화 전문가 등)를 초청 했고 전문가들은 그 혼란을 해결했습니다.

모든 프로그래머가 자체 QA를 수행하여 그러한 문제를 즉시 볼 수 있어야합니까?

그것이 가능하다는 사실이 그것이 갈 길이라는 의미는 아닙니다. 오히려 내 경험에서 이것은 프로그래머의 생산성잃는 가장 신뢰할 수있는 방법 중 하나였습니다 . 끝없는 회의만큼이나 우수하고 인터뷰 후보보다 훨씬 좋습니다.

  • 전 테스터로서 한 번은 개발과 QA 활동을 결합하는 것이 문제가되지 않아야한다고 생각했습니다. 일상적인 개발자 테스트와 체계적인 QA의 차이는별로 중요하지 않은 것으로 보입니다. dev / QA 분리는 소프트웨어 산업의 전통 일 뿐이라고 생각했습니다. 이것이 그렇게 어려운 방법을 배웠습니다. 분리는 초점과 생산성의 문제이며 매우 심각한 문제였습니다.

성능 문제가있는 경우 벤치 마크를 제공 하고 목표 성능을 설정 하기 만하면 최선을 다할 것입니다. 성능 테스트는 그다지 좋지는 않지만 최적화에 대해 조금 알고 있습니다.


downvoter- QA 및 성능 테스트에서 개발자 팀의 요구를 충족 하는 전문 테스터 와 협력하는 것이 일어 났 습니까? 그렇지 않다면 시도해보십시오
gnat

1

문제의 99 %가 스코프 크립이라는 것을 알게 될 것입니다. 예를 들어 dvr을 사용하십시오. 이것이 쉽다고 생각하지만 TIVO 또는 경쟁 업체는 잘 받아 들여진 새로운 기능을 소개합니다. 다음으로 새로운 기능을 알고 있습니다. 기존 제품과 호환되지 않을 수 있으며 오래 걸리는 기존 제품을 다시 실행하지 않습니다. 따라서 기능이 중단되어 성능이 저하됩니다. 데이터가 정보를 얻기 위해 존재하지만 정보를 얻을 생각이 없다면 쉽게 얻을 수 없을 것입니다. 따라서 이제는 프로그램 목록 근처에 갈 때마다 해당 정보를 작성하는 복잡한 프로세스가 있습니다.


1

신경 쓰지 않는 개발자를 무시하고 ...

필자는 종종 코드를 개발하는 개발자에게 지속적으로 성능을 측정 할 수있는 도구가 없다고 생각합니다.

예 : 앱의 응답 시간을 측정 할 수있는 경우 (예 : 웹 기반 애플리케이션 또는 데이터베이스 쿼리 등)-현재 "최고 10"이라는 최악의 알림 (이메일, SMS 등)을 받고 있습니까? 응답을 수행하거나 결정된 임계 값을 초과합니까?

대부분의 경우 개발자는 "실제"배포에서이 정보를 얻지 못하므로 보이지 않는 정보를 무시하기가 매우 쉽습니다.

그러나 매일 / 몇 시간마다 화면 "x"를로드하는 데 13 초가 걸리고 다음 SQL 쿼리 SELECT TOP 1.... JOIN... OUTER JOIN... OUTER JOIN... CROSS JOIN...를 실행한다는 이메일이 표시되면 개발자가 완전히 고칠 수 있다고 생각하는 것이 좋습니다. 그것.

따라서 모든 프로그래머 성능을 심각하게 생각한다고 생각하지만 문제에 대한 가시성이 부족한 경우가 종종 범인이라고 생각합니다.

참고 : 개발자가 액세스를 요청하거나 이러한 기능을 개발해야하며 관리자가 이러한 도구를 제공 / 자금 지원해야한다고 생각합니다.


1

실제로 프로그래머에게 책임을 물을 수있는 더 좋은 예를 생각해 낼 수 있습니까? Eclipse를 제외하고 한 의견자는 이미 플러그인을 수행한다고 지적했습니다 (새 Eclipse 버전을 처음 설치할 때 번개처럼 실행되지만 다른 도구를 추가하면 속도가 느려집니다). 코드 관련이지만 환경 관련.

컴퓨터에서 프로그램을 분리하여 실행하고 '빠른'또는 '느린'여부를 결정하는 시대는 지났습니다. 다른 예는 환경에 따라 다릅니다. 현재 네트워크 혼잡, 백엔드 서버 과부하, 네트워크 카드 불량, 케이블 결함, 근처에서 다른 사람의 수 또는 수백 가지의 다른 변수. 예. 호스팅 제공 업체는 서버 기가비트 연결에 대해 추가 요금을 청구했지만 결국 10Mb 포트가있는 고대 방화벽 장치를 통과 한 것으로 확인되었습니다. 이러한 문제는 바뀌고 찾기가 어렵습니다.

프로그래머가 할 수있는 일이 많이 있습니다 (대역폭 최소화, 응답 성을 개선하고 진행률을 보여주는 UI 트릭으로 빠른 인상을 줄 수 있습니다). 그러나 현실 세계로 진출 할 때 경험으로 만 배울 수있는 모든 종류의 상황이 있습니다 (그리고 당신의 가정이 당신 앞에서 사라지는 것을 보게됩니다).


제가 제공 한 사례는 순전히 로컬 환경에서 성능이 떨어지는 모든 경우였습니다. DVR은 로컬로 녹화 된 프로그램 메뉴를 탐색하는 데 시간이 많이 걸립니다. iTunes는 상점을 보지 않고 로컬 데이터를 탐색하는 속도가 느립니다 . 네트워크가 전혀없는 "비행기 모드"에서도 iPhone 3G는 사진을 표시하는 데 시간이 오래 걸리므로 OS 워치 독이 앱을 실행하기 전에 앱을 종료 할 수 있습니다. 이 모든 것은 프로그래머가 코드를 작성할 때 어떤 하드웨어를 대상으로하는지 정확히 알고있는 경우의 예이며, 특히 업데이트 할 때마다 iPhone이 나 빠졌기 때문에 특히 그렇습니다.
Crashworks

@Crashworks-누군가 귀하의 질문에서 해당 예를 제거했습니다. 세부 사항으로 다시 추가 할 수 있습니까? 사진 예제는 의존성이 없거나 인터넷에서 무언가를 찾아보고 시간이 초과되는 것처럼 들립니다. 무슨 일이 일어나고 있는지 확인하기 위해 디버그를 실행 했습니까? VMWare의 리뷰어가 MS가 HyperV를 출시했을 때 좋은 소식은 VMWare 리뷰어는 출시 된 다음 날에 설치했지만 많은 Windows 업데이트를 다운로드해야한다고 기꺼이 지적했습니다. 왜? HyperV 활성화 프로세스는 IE8 dll을 재사용했습니다. 현대 환경에는 많은 어려움이 있습니다.
jqa

1

더 나은 소프트웨어에 대해 얼마를 지불 하시겠습니까? 시장은 더 나은 소프트웨어를 얼마나 기다리는가? 다음 릴리스에 얼마나 작은 부스러기가 추가됩니까?

많은 절충안이 존재하는 시장입니다. 그것이 실제로 쓰레기라면 시장은 제품을 망칠 것입니다. 현 상태로 살 수있는 고객이 충분할까요?


0

이 문제에 대한 가장 일반적인 대답은 관리하기가 가장 어렵다고 생각합니다. 즉, 모든 프로그래머는 수행하는 모든 작업에 대해 성능을 염두에 두어야합니다. 나는 또한 그것이 약간의 경찰 아웃이라는 것을 알고 있습니다.

프로젝트의 규모와 해당 팀에 따라 전담 퍼포먼스 프로그래머를 보유하는 데 많은 가치가 있다고 생각합니다.

예를 들어, 프로젝트 팀 (약 30 명 포함)에 2 명 이상의 성능 최적화 전담 팀이있는 팀에서 근무했습니다. 이 특정 응용 프로그램은 또한 웹 서비스뿐만 아니라 다양한 데이터 매핑 및 어댑터 구성 요소가있는 레거시 계층 측면에서도 많은 상호 운용성 구성 요소가 있기 때문에 성능 문제가 발생하기 쉽습니다.


0

직접적인 경험이 중요합니다. 개발자에게 빠른 컴퓨터 컴파일 및 빌드를 제공하지만 실제로는 일부 사용자의 경우와 같이 너무 느리게 오버로드 된 컴퓨터에서 앱을 실행할 수있게하십시오. (이 기능은 VM / 서버를 기능별로 분할하여 클라우드 / 서버 기반 개발 환경에서 수행 할 수 있습니다.) 반 배터리가 방전 된 휴대폰을 제공하고 초기 모바일 앱 테스트 기간 동안 만 사용해야합니다.

개발자가 성능 및 배터리 수명과 관련하여 고객과 공감하는 경우 성능을 우선 순위 목록의 맨 아래에 두는 반 가짜 관리 사양으로 간주하지 않습니다. (그래서 : "이봐, 너무 늦을 때까지 조기 최적화라고 생각했다.")


0

물건 구매를 중단하고 온라인 리뷰에서 열악한 성능에 대해 언급하십시오.

장치가 여전히 판매되고 있다면 소프트웨어는 더 많은 시간과 돈을 투자 할 수없는 "충분히 좋은"것입니다. 성능에 대한 나쁜 리뷰가 판매를 크게 줄이면 소프트웨어는 "충분하지 않습니다"고 수정이 필요합니다.

소비재 생산자에게 관심이있는 유일한 지표는 단위당 판매 및 이익입니다.


0

나는 프로그래머가 퍼포먼스 최대화 등에 대해 더 잘 가르쳐야한다는 것에 동의합니다.

그러나 솔루션이 프로그래머에게 거의 매일 사용되는 하드웨어를 제공하지는 않는다고 생각합니다. 비주얼 스튜디오가 하루에 두 번 충돌하면 물건을 만드는 데 x 초, 솔루션을 여는 데 y 초, 창을 변경하는 데 z 초가 걸리는 것은 얼마나 스트레스가 될까요. 나는 하드웨어가 싸고 프로그래머 시간이 비싸기 때문에 회사에게 매우 비용 효율적이라고 생각하지 않습니다.

다음으로 코드를 처리 할 QA (테스트) 팀이므로 성능의 중요성에 대해 가르치고 수용 가능한 성능 표준에 대한 표준을 엔터프라이즈 표준으로 사용하는 것이 좋습니다 (완벽한 세계에서) 성능 표준은 사양에 맞아야하지만 자주 발생하지는 않습니다)? (즉, 중요한 엔터프라이즈 응용 프로그램 인 경우 정기적 인 엔터프라이즈 ee 변경 페이지 / 탭은 "x 초 안에 업데이트 저장"과 같이 즉시 발생해야합니다.) 품질 보증팀이 운영하는 컴퓨터는 일반적인 사용자 컴퓨터 여야합니다. (우리는 그들에게 386을 제공함으로써 그들을 화나게하고 싶지 않지만 8GB의 램으로 쿼드 코어를주지 마십시오). 그들이 성능에 충분히 화가 나면 프로그래머에게 환기를 제공하지 않습니까?

클라이언트 / 프로젝트 관리자는 프로그래머 / qa 팀 / 개발자 / 회사 담당자가 가장 낮은 하드웨어로 프리젠 테이션을하도록 강요해야한다고 생각합니다. (예를 들어 회사에서 가장 약한 컴퓨터). 다시 작성하는 경우 이전 소프트웨어에서 x 프로세스를 수행하는 속도에 대한 데이터를 수집하고 새 소프트웨어의 속도와 비교해야합니다 (새 소프트웨어에는 추가 비즈니스 프로세스가 필요할 수 있으므로 속도가 느릴 수 있음). 허용되는 창이 있어야합니다).


-1

이전에 말했지만 다시 말할 것입니다. 이것을 처리하는 가장 좋은 방법 중 하나는 개발자가 (상대적으로) 후진 하드웨어에서 작업하도록하는 것입니다.

일반적인 프로그래머에게는 대부분의 공식적인 성능 고려 사항은 단순히 "실행하려고 할 때 성가신가?" 그들이 성가신 것을 발견하면 (적어도 시도하려고 노력할 것입니다). 그들이 실행하는 방식에 만족한다면, 당신이 얻는 최선의 방법은 마음을 고치려고 노력하는 것입니다. 또한 문제를 해결하는 데 훨씬 많은 비용이 들기 전에 조기에 문제를 찾는 데 도움이됩니다.

QA가 성능이 적절하다고 생각하기 때문에 개발자가 실제로 믿지 않는 규칙을 시행해야한다는 점에 도달하면 대부분의 "수정"이 규칙을 해결할 수있는 창의적인 방법을 얻을 가능성이 매우 높습니다. 최종 사용자의 수명을 연장시키는 실제 수정 사항이 아닙니다.

동시에, 나는 이것을 거의 문제로 보지 않았다고 덧붙여 야합니다. 어쨌든 개발자가 실제로 귀찮게하기에 충분하지 않은 성능을 향상시키기 위해 너무 많은 시간을 소비하는 것을 보았습니다 (죄는 종종 죄책감입니다).


1
중요하지 않은 일에 집착하는 것은 쉬운 일이지만, 핸드폰에 UI가 포함되어있는 경우 "응답"버튼이 응답하기 전에 수신 전화가 음성 메일로 이동하는 속도가 느리면 누군가가 전화를 걸었을 때 성능을 향상 시키지 못했습니다. 문제.
Crashworks

4
어떤 경우에는 회사에서 저에게 알맞은 검을 사야합니다. 왜냐하면 대부분의 시간을 컴파일하는 데 소비 할 것이기 때문입니다.
David Thornley

문제의 절반은 개발자 컴퓨터에서 테스트하기 어렵다는 것입니다. 개발자 컴퓨터는 크고 빠른 경향이 있으므로 개발자는 문제를 볼 수 없습니다. 수정 프로그램이 동작을 변경하는 방법은 물론 문제를 측정 (영향을받지 않음) 할 수없는 경우 문제를 해결하기가 어렵습니다.
Martin York

7
이것은 몇 년 전에 Slashdot 주석에서 제안되었습니다. "개발자는 빠른 기계에서 개발하고 느린 기계에서 테스트해야합니다."
user16764

1
@ user16764 : 개발자에게 개발 환경과 다른 테스트 환경을 제공하는 데주의를 기울이지 않는 경우가 많습니다. 아내는 관리자 계정 (개발 용)과 제한된 계정 (테스트 용)을 모두받는 데 어려움을 겪었으며 그 전에는 일반 사용자에게 실행되지 않는 유지 관리 수정 프로그램에 실수로 무언가를 넣는 것과 관련하여 끊임없는 문제가있었습니다. 계정.
David Thornley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.