기능을 구현할 좋은 아이디어가 없으면 어떻게합니까? [닫은]


32

나는 내 자신의 응용 프로그램에서 일하고 있고 붙어 있습니다. 기능을 구현해야하지만이 기능을 구현하기위한 좋은 방법을 찾을 수 없습니다. 나는 며칠 동안 그것에 대해 생각하고 있었고 좋은 생각은 없었습니다. 인터넷을 검색해도 영감을 얻지 못했습니다.

계속 진행해야하지만 가장 좋은 것이 무엇인지 알고 싶습니다.

  • 더 많이 생각하고 더 기다린 후 최선의 방법을 계속 찾으십시오.
  • 테스트 낭비로 시간 낭비를 막고 열악한 디자인으로 시작

어떻게 생각해? 내가 말했듯이, 나는 내 자신의 응용 프로그램에서 일하고 있습니다. 마감일이 없지만 앱 코딩을 마무리하고 싶습니다.



12
@gnat :이 다른 질문들은 요청자가 이미 일부 기능을 깔끔하게 구현하는 방법을 알고 있지만 "빠르고 더러운"벌을위한 좋은 디자인을 희생하고 싶을 수있는 상황을 다룹니다. 그러나이 질문은 다른 상황을 설명합니다. 일반적으로 좋은 출발점을 찾지 못하면 일반적으로 문제 해결에 관한 것이므로 IMHO는 중복되지 않습니다.
Doc Brown

참고 : 앱이 성공하면 "코딩을 마치지"않으며 기능이 다시 디자인됩니다. 그래서 지금은 최선의 방법으로 구현할 것입니다.
ren

답변:


41

사람들에게 그것에 대해 이야기하는 것 외에도 (질문에는 프로젝트에 동료가 없다는 것을 암시합니다), 종종 내가 할 수 있는 일에 집중하는 것이 좋은 접근법이라고 생각합니다.

일반적으로 코드의 일부는 어쨌든 작성해야한다는 것을 알고 있습니다. 내가 아직 작성하는 방법을 모르는 것은 더미 결과를 반환하거나 나머지를 테스트하기에 충분한 근사치를 사용하는 스텁으로 대체됩니다.

이렇게하면 생산성이 유지됩니다. 그리고 누락 된 부분을 구현해야 할 때까지 인터페이스가 있습니다. 그리고 동일한 문제 도메인에서 문제를 둘러싼 많은 코드를 작성하여 아이디어를 생성하는 데 도움을줍니다. 결과를 출력하는 데 필요한 정보와 문제를 해결하는 데 사용할 수있는 다른 입력 정보를 더 정확하게 알고 있습니다. . 또한 누락 된 부분이 처음에 생각했던 것만 큼 포괄적 일 필요는 없다는 결론을 내립니다.


6
가장 위험하고 이해하기 어려운 코드를 마지막으로 작성하는 단점은 문제를 해결할 수 없거나 프로그램 아키텍처를 실질적으로 변경하여 해결할 수 있다는 것만으로도 많은 노력을 낭비 할 수 있다는 것입니다.
Rich Smith

1
이 접근법의 다른 단점은 때때로 "문제 X를 해결할 수 있습니다. 남은 것은 Y를 수행하는 것"입니다. 실제로 Y는 실현 가능하지 않고 실제 솔루션은 Z입니다.
Brian

@RichSmith, Brian : 나에게 묻는다면 거의 일어나지 않습니다. 그런 다음 누락 된 부분이 왜 그렇게 어려운지 더 잘 이해하여 추정치를 개선 할 수 있습니다. 그리고 나는 투기적이고 임의적 인 책임 분담에 근거하여 몇 주 동안 일할 것을 제안하지 않을 것입니다.
jdv-Jan de Vaan

그러나 단점이 있는지 여부는 논쟁의 여지가 있습니다. 문제를 전혀 탐구하지 않고 시간을 더 잘 보냈습니까? 또는 당신은 무엇이 효과가 있을지 추측하고 앉아 있습니까? 빠른 프로토 타입을 작성하고 시험 해보고 빠르게 실패하는 것이 좋습니다. 그것은 확실하고 미래의 비슷한 상황에 대한 경험을 얻는 유일한 방법입니다
sara

14

검색이 실패하면 항상 가장 좋은 첫 번째 아이디어를 사용하여 구현 한 다음 올바른 접근 방식을 찾으면 나중에 리팩터링 할 수 있습니다.

좋은 생각처럼 보이는 것을 발견하더라도 나중에 나빠질 수 있기 때문에 이것은 올바른 접근 방법입니다. 또는 그 당시에는 좋을지 모르지만 나중에 훨씬 더 나은 것을 발견합니다. 그런 다음 여전히 리팩터링해야합니다.

이 작업을 수행 할 때는 리팩토링하기 쉬운 방식으로 설계 및 구현해야합니다. 올바르게 수행하면 문제가있는 부분 만 변경해야하며 처음부터 시작하지 않아야합니다.


1
이 게시물에서 가정 된 것처럼 보이지만 리팩토링하기 쉬운 방식으로 코드를 작성 하는 것이 매우 중요하다고 덧붙이고 싶습니다 .
c_maker

@c_maker 물론입니다. 그렇지 않으면 나중에 모든 것을 처음부터 다시 작성하는 것은 의미가 없습니다. 답변에 추가하겠습니다. 감사합니다
BЈовић

10

다른 사람에게 물어 보는 것은 어떻습니까? 예를 들어 여기서 문제를 설명하거나 문제가 구현 문제인 경우 stackoverflow.com에서 아이디어를 요청할 수 있습니다. 좋은 답변을 얻지 못하더라도 문제를 기록하기 시작하면 이미 도움이 될 수 있습니다.


문제가되는 사용자 인터페이스 인 경우 ux.stackexchange.com
Rob Church

SO에 요청하면 Creative Commons에서 답변의 저작권이 보호되며 프로젝트에 따라 해당 코드를 사용할 수 없습니다.
smcg

2
조언은 저작권으로 보호 될 수 있습니까? 분명히 저자는 그것을 복사 / 붙여 넣기가 아닌 튜토리얼로 사용할 것입니까?
grizwako

@smcg : 주제는 여기에서 논의되었다 : meta.stackexchange.com/questions/12527/... -하지만 이제 정말 문제가되는 경우 솔직히, 나는 한 회색 제안하는 방식으로이 문제를 회피 할 수 있다고 생각합니다.
닥 브라운

@DocBrown IANAL이므로 확실하지 않다고 말할 수는 없지만 때로는주의를 기울이는 것이 좋습니다.
smcg

2

몇 가지 아이디어 :

  • 브레인 스토밍
    자신이 가지고있는 모든 어리석은 아이디어를 종이나 화이트 보드에 적습니다. 작동하지 않을 것이라고 확신하는 사람들을 교차시킵니다. 계속 쓰세요. 잠재적으로 관련된 실제 문제에 대한 솔루션을 포함합니다. 예를 들어, 페인트를 섞거나 벽에 못을 박거나 기름을 바꾸는 것이 현실 세계의 비유를 해결합니까?

  • Google 에 도움을 요청하고, 여기에 요청하고, 괴짜 친구에게 문의하십시오.
  • 관련 문제 해결
    당신은 해결할 수없는 문제를,하지만 당신은 훨씬 간단 하나를 해결할 수 있습니까? 아니면 똑같이 복잡한 관련이 있습니까? 그렇게. 그런 다음 솔루션을 원하는 솔루션에 더 가깝게 만들기 위해 작고 개별적으로 변경하십시오.
  • 그냥 외부에서 쓰기 시작
    인터페이스가 웹 서비스, 웹 페이지, 기본 형식, 카메라, 키보드, 모니터 또는 기타 인터페이스 관계없이 하십시오 . 인터페이스가 작동하도록 몇 줄의 코드 / 의사 코드를 작성하십시오. 아직 존재하지 않는 마술 방법을 사용하십시오. 존재하지 않는 각각의 마법 방법에 대해 재귀 적으로 동일하게 수행하십시오. 나중에 최적화하십시오.

2

나쁜 해결책으로가는 데 아무런 문제가 없습니다. 종종 그 시점에서 문제 영역에 대해 충분히 알지 못하는 경우가 있습니다. 나쁜 해결책으로 나아가면 문제에 대해 더 많이 배우고 배울 수 있습니다. 그런 다음 여전히 돌아가서 첫 번째 솔루션을 리팩터링 할 수 있습니다.


1

나는 항상 최종 사용자 관점에서 그것을 시도하고 본다. "멋진"아이디어를 개발자로 생각하면 작업에 오랜 시간을 할애 할 수 있으며 실제로는 앱에 거의 영향을 미치지 않습니다.

이상적으로는 앱의 모든 기능을 매핑하고 최종 사용자의 이익에 따라 우선 순위를 지정하려고합니다. 개인적으로는 MOSCoW를 사용 합니다 으로 우선 순위 지정 방법을 동일하게 유지 합니다. -5.

그 후에도이 기능이 앱의 필수 요소라는 것을 여전히 알고 있다면 사람들이 이미 말했듯이 물어보십시오! 나는 동료 나 Stackoverflow에서 좋은 사람들이 결국 해결하지 못한 문제를 겪은 적이 있다고 생각하지 않습니다.


내가 모스크바 출신이기 때문에 쿨 :)
user21974

거기 당신은 그것의 표시를 간다!
Mrk Fldig

1

내 의견은 : 그냥 작동하는 코드를 작성하지 마십시오! 앞으로 리팩토링하는 것은 매우 어렵습니다.

개발자 (물론 PM 또는 보스)에게는 매우 일반적인 접근 방식입니다. 나는 "그냥 작동하게한다"또는 "나중에 고칠 것이다"(나중에 ??? 결코!)라고 많은 시간을 들었지만, 품질은 프로젝트 도중에 얻을 수없는 것이 아니라고 생각합니다.

내 제안은 당신의 문제에 대해 잠시 생각하지 말고 다른 일을하고 때로는 해결책이 스스로 나오는 것입니다.

Btw, 동료에게 요청하는 것은 절대적으로 문제를 해결하는 좋은 방법입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.