프로그래머 생산성을 높이는 방법.
오전 9시에 상사가 갑자기 사무실로 들어와 이렇게 말했습니다. "시장에서는 우리 웹사이트에 새롭고 멋진 로그인 상자가 있기를 원합니다. 사용자 이름과 비밀번호 필드만 제공하면 되나요? 추가해 보세요. 링크를 복구하는 데는 이틀 이상 걸리지 않습니다. 아, 가야 해요, 서둘러요!”
그런 상황에 직면하면 사람들은 즉시 포효하는 황제로 변신할 것입니다. 침착함을 유지할 수 있습니다. PHP를 해체하는 방법을 배웠기 때문입니다.
해체란 무엇인가?
해체는 요구 사항을 가능한 가장 작은 조각으로 분해한 다음 이러한 조각을 구성하고 정교화하여 최종적으로 귀하(프로그래머)와 상사/고객 간의 합의가 되는 것입니다.
기성 스펙을 누가 줘도 괜찮습니다. 모든 것은 해체에서부터 시작됩니다!
이미 코딩을 하고 있는데 왜 해체해야 하나요?
예, 아마도 당신은 이미 AngularJS를 사용하여 로그인 양식을 ng-submit()하는 방법을 고민하고 있을 것입니다. 먼저 Struts 1을 사용하여 단계별로 수행하는 것보다 훨씬 쉽습니다. 아뇨, 서둘러서 절벽에서 물러나세요!
가장 먼저 해야 할 일은 요구사항의 견고성을 확인하는 것입니다. 무너지다. "사용자가 상자를 통해 로그인할 수 있기를 바랍니다"는 올바른 요구 사항이 아닙니다.
아주 쉬울 것 같죠? 내 말은, 단 몇 분 안에 할 수 있다는 거죠, 그렇죠? 자, 다음으로 넘어가겠습니다…
실제 사례가 있나요?
내 경험에 따르면 이 실제 사례는 2011년 2월 독일 자동차 제조업체에서 새로운 웹사이트를 요청했을 때 발생했습니다.
아래 사진 좌측하단을 봐주세요. 로그인 상자를 주의 깊게 살펴보시기 바랍니다. 아주 작고 단순해 보이지만 실제로는 매우 복잡합니다. 그 이유를 살펴볼까요...
먼저, 해체하는 방법에 대해서요?
기술 중심의, 비즈니스 중심의 사람들과 함께 일해야 합니다. 따라서 더 많은 입력을 얻으려면 상사를 설득해야 합니다!
아, 그런데 필요하면 사람을 더 추가할 수도 있어요. 하지만 내 과거 경험에 따르면, 전체 팀과 함께 해체 작업을 수행하는 것은 시간, 돈, 에너지의 엄청난 낭비가 될 것입니다. 그러나 그것은 또 다른 주제입니다.
다음으로, 좋아하는 글쓰기 도구를 열고 "유치한" 질문을 시작해 보세요. 그런 다음 답을 하나씩 적어 정리해보세요. 이 "유치한" 질문은 무엇입니까? ——"그게 뭐죠?", "이게 왜 발생하나요?", "왜 필요한가요?", "다른 부분이 있나요?".
언제까지요? 질문을 끝내지 않으면 다른 사람들이 당신을 싫어할 것입니다
예에 대해?
위의 예시로 돌아가세요. "로그인 상자가 필요합니다." 먼저 분석해 보겠습니다. [1] [2] 로그인 [3] 상자가 필요합니다. 이때 [1]이 주어졌다고 가정하면 [2]부터 시작하면 됩니다.
[로그인] 부분에 대한 질문
귀하: "로그인이 뭔가요?"
사업자: "글쎄, 로그인하려면 사용자 이름과 비밀번호가 충분해야 합니다. "
귀하: “사용자 이름입니까 아니면 이메일입니까?”
비즈니스 직원: “괜찮습니다!”
귀하: “잠깐만요, 우리 사용자는 누구입니까? "
사업인: "정말 멍청해요. 해고하시겠습니까? 홈페이지에 등록하는 사람은 모두 사용자입니다."
당신: "그게 사실인가요?" 직원: "그렇습니다. 그런데 이미 BMW 차량을 구매한 사용자라면 고객번호로 홈페이지에 로그인하면 자동으로 게스트 계정을 생성할 수 있다고 고위 경영진이 말씀해 주셨어요."
You: "그럼 이러한 고객 양식은 어떻게 얻나요?"
비즈니스 직원: "CRM 시스템에서요. 새로 생성된 자체 사용자 데이터베이스와 병행합니다. 아, 그런데, 몇 가지 다른 양식이 있습니다. CRM 시스템이니까 이유를 설명해야지. "
당신: "어, 고객번호를 주고 비밀번호를 보내주나요, 아니면 이미 비밀번호를 갖고 로그인을 하던가요." CRM 시스템을 사용할 수 없는 경우 어떻게 해야 합니까? 자동 게스트 계정이란 무엇입니까? 갑자기 로그인이 가능하다는 걸 어떻게 알았나요? ……돕다!
=>계속 질문하기
먼저 회의를 잠시 멈추고 [상자] 부분을 살펴보세요
당신: "상자가 뭐죠?"
영업직원: "거의 다 디자인됐어요. 아이디/비밀번호 입력, 로그인 버튼. 또 뭐가 어려운가요?"
당신: "그냥 홈페이지에만 표시하면 되는 건가요?" 🎜>
비즈니스 직원: "아니요, 일부 활동 페이지 등 여러 웹페이지에 표시하고 싶습니다. 따라서 CMS 시스템의 구성요소로 만들어야 합니다.
당신: "구성요소? " 아하. 음, HTTP/HTTPS의 차이점을 아시나요? 저희 웹사이트는 HTTP에서 돌아가는데, 좀 까다롭습니다. (http 페이지에 https 인라인 프레임을 넣는 건 좀 어지러운 느낌입니다.)... 흠.. .사용자가 데이터를 안전하게 전송하도록 해야 합니까?”
비즈니스 직원: “그렇습니다. 그런데 사용자는 새로운 "이용 약관"에 동의해야 합니다. " 해당 레이어에 로그인하기 전에. 그렇지 않으면 우리 변호사가 "사용자를 차단하시겠습니까?"라고 전화합니다. 그리고 조건은? 인라인 프레임에 삽입된 레이어입니까 아니면 상위 페이지에 배치된 레이어입니까?”
=>유지 질문
부탁드려요! 우리는 이제 막 시작했어요!
아직 다루지 못한 내용이 너무 많습니다. 예를 들어 인프라, SSL-로드밸런서, 잊어버린 비밀번호 워크플로, 오류/정보 메시지 등이 있습니다. 그런데 도대체 누가 "로그인 박스가 필요하다"고 말했습니까? 고객? 그렇다면 실제 고객은 누구일까요?
HTTP/HTTPS 문제와 관련하여 요구 사항을 공식화하기 전에 기술 담당자와 비즈니스 담당자가 함께 논의해야 합니다. 양방향 의사소통이 없다면, 당신은 정말 꿈속에서만 살고 있는 것입니다.
마지막으로, 우리는 아직 이 예를 완전히 해체하지도 못했습니다. 오히려 이는 빙산의 일각에 불과합니다.
숲, 숲, 숲, 나무가 없다면 숲이 어디 있겠습니까?
연속적인 질문을 한 후에는 먼저 이러한 질문을 정리하고 자세히 설명해야 합니다. 정리하고 설명하지 않고서는 계획하거나 추정할 수 없습니다. 그렇지 않으면 약간의 차이가 큰 차이를 만들게 됩니다.
물론 이 단계를 완료하기 전에 코드를 입력하는 것은 절대 올바르지 않습니다. 금을 채취하여 거짓을 버리고 참을 유지하는 것처럼 이러한 질문을 먼저 다듬어 보겠습니다.
다음 단계: 네, 아직 완료되려면 멀었습니다. 이것은 해체의 시작일 뿐이다.
향후 글에서는 해체와 후속 조치에 대해 계속해서 글을 쓸 예정이니 지켜봐 주시기 바랍니다. 다른 의견이 있으시면 수정해주시면 감사하겠습니다.
LAMP Brothers의 원본 PHP 튜토리얼 CD/"Essential PHP in Detail"을 무료로 받아보세요. 자세한 내용은 공식 웹사이트 고객 서비스에 문의하세요: http://www.lampbrother.net
|