Human work decomposition

img



In my 15 years as a developer, I've discovered that false beliefs about human nature are the main enemies of good decomposition . Knowing about them and striving not to fall into their trap, over time, you can formulate tips for creating a quality decomposition . This happened to me, and I hasten to share this knowledge.



Key concepts

(feature) — -, . , -. .



, . , .



— , . « » : , .



For over 5 years I have been working as a backend developer at FunBox. At the company, we believe that good products are the result of a strong engineering culture, and we strive to practice this principle in developing solutions for mobile operators. It has its own features of the stack and processes, but there are also universal aspects applicable in any subject area. One of them is the decomposition approach . Thanks to the product-based nature of the work and the engineering culture, I was able to gain experience and insights that I cannot help but share.



Navigation through the article:







False Beliefs About Human Nature



:



  1. , .
  2. , , .
  3. , ().
  4. ( ).
  5. , ().
  6. ().


, , . , .



. , . , .



.

, . « ».



, , . . , , . . , . , .



. , , . — , , . . — () , .



. , . , , , .



, , .



, , «» «» , , , .





« »



4 :



, .

« », 1955 . , . , .



« . » , , . , , .







:



  • , ;
  • #NoEstimates, .




« » , . :





, , , , . 1840- 1960- . , . , , . , . .



, . ( Thinking Fast And Slow). . . , , , . .



, , . , , . , , , .



, . , . , , , , , .



NoEstimates



#NoEstimates ( ) , , .



AgileDays'14. , , :



  1. .
  2. , - . (CI) .
  3. , , .


, , :



  1. , , .
  2. .
  3. , , .


, , , .



#NoEstimates . , . , , .



, , #NoEstimates, , .







#NoEstimates .

, , , , . .





:



  1. . , .
  2. 3—5 . , .


Loose Coupling / High Cohesion ( / ), :



  • Loose Coupling: .
  • High Cohesion: , .


, , API . , , , , .



. API decomposition smell ( code smell), .





, . .



:



  1. ?
  2. - , ?
  3. ? - , ?


:



  1. , , , ?
  2. ( 3—5 )?
  3. ?


, . . . . .





3—5 — . , , . Ruby on Rails.



, - , , .



, c « ». , :



  1. , , .
  2. , , , ( № 3) , .


, . , , . . , , , , , . - , , . , , .



. , , — . , , , . , , . , - . , .



, , , , - .



. , . .





.



,



, ( Ruby on Rails) CRUD .

, .



. , , . - , . , , , .



Ruby on Rails

Ruby on Rails «--». has_and_belongs_to_many HABTM- .

, , HABTM- .



, . , , HABTM-, , . . , UI, . « », .



, UI, , , , , — , .



, , , .



, , . . — , — , . , .





:



  • .
  • , .
  • .
  • , , .
  • , .
  • .


, 5 , , . , , «»: .



. , . API , , . API , . , .



. , , , . , .



, 10% , : , .



. , , , . , , . . API , , .



, .







, .



1.



«» , , .

, , .

3—5 , , , , . , .



2.



, . , , , . № 5, . , , , .



, — , . , , . № 6, - . , , , .



— , . « » .



, .



, . , — .



, . .



, . , , . .



, , , .



, , , , . . . , , , . 6 .



3.



, — . , - . , — - - .



. , .

: . , .



, . , , . , , .



4. ,



, . .



, , , , . , , , .



, , . W.I.P. (work in progress). , .



5.



, , .



, , . , - , - .

. , , .

. .



6.



- .

, -, .



15 «» «- (DDD). ». (Generic Subdomains) (Cohesive Mechanisms), (Core Domain), .



, , , .



-, . , , . .



« -».

, .



, , (accidental complexity) - . , .



, - , . . omakase-, Ruby On Rails .



, . . , , . . , , .



, .



, , . , . .



7.



. , . . , .



« », , 1:3. , . — .



, , .



, .

, . , . , . , .



, , .



, . .



- , , . . . , , .



« . » 1999 . , 1975 , « -».



11 « » , :



— .






, . .



. , : , . -. . , . , . .



FunBox .



, , , .







:



  1. « . ».
  2. « -».
  3. «- (DDD). ».
  4. « . ».
  5. « . ».


:



  1. .
  2. « . » « . ».
  3. « . ».
  4. Thinking Fast And Slow.
  5. « », , . .


:



  1. « ». AgileDays'14, , , #NoEstimates. .
  2. « ». . , , , , , .



All Articles