{"id":6716,"date":"2012-10-22T15:18:04","date_gmt":"2012-10-22T14:18:04","guid":{"rendered":"http:\/\/www.itwriting.com\/blog\/?p=6716"},"modified":"2012-10-22T15:18:04","modified_gmt":"2012-10-22T14:18:04","slug":"thoughtworks-bemoans-excessive-software-complexity-advocates-small-focused-services","status":"publish","type":"post","link":"https:\/\/www.itwriting.com\/blog\/6716-thoughtworks-bemoans-excessive-software-complexity-advocates-small-focused-services.html","title":{"rendered":"ThoughtWorks bemoans excessive software complexity, advocates small, focused services"},"content":{"rendered":"<p>ThoughtWorks has released its latest <a href=\"http:\/\/www.thoughtworks.com\/radar\" target=\"_blank\">Technology Radar<\/a>, an opinionated analysis of software development trends.<\/p>\n<p>Things the folk at ThoughtWorks like include automated build and deployment, essential for Continuous delivery; NOSQL database managers especially <a href=\"http:\/\/neo4j.org\/\" target=\"_blank\">Neo4j<\/a>; mobile-first development; the <a href=\"http:\/\/www.jetbrains.com\/objc\/\" target=\"_blank\">AppCode<\/a> IDE for Apple\u2019s Objective-C; the <a href=\"http:\/\/graphite.wikidot.com\/start\" target=\"_blank\">Graphite<\/a> realtime graphing tool for creating dashboards; <a href=\"http:\/\/clojure.org\/\" target=\"_blank\">Clojure<\/a> and <a href=\"http:\/\/www.scala-lang.org\/\" target=\"_blank\">Scala<\/a> for programming.<\/p>\n<p>I meet some of the ThoughtWorks team at developer conferences from time to time, and generally find them smart and though-provoking to talk to. They must be the despair of the big enterprise software vendors, with a liking for open source and an aversion to heavyweight high-maintenance systems. <\/p>\n<p>This remark particularly caught my eye:<\/p>\n<blockquote>\n<p>Simple architectures\u2014Simple continues to gain traction, including both techniques for building and composing applications, as well as infrastructure-based techniques to enable simple deployment, failover and recovery. This theme is a recurring one for us, but we have not yet seen the usage shifts we believe are necessary.<\/p>\n<\/blockquote>\n<p>I asked consultant James Lewis and practice lead Sam Newman to expand on that. Why do we continue to choose complexity over simplicity?<\/p>\n<blockquote>\n<p>\u201cA lot of people like to stay inside their big box, and don\u2019t understand the complexities that then creates,\u201d said Newman. \u201cThere\u2019s a lack of critical thought given to how services talk to each other. A lot of them are driven by whatever the vendor says you do. Java makes RMI very easy. [Microsoft] .NET makes binding to WSDL [SOAP] schemas very easy. All these tools make bad things very easy to do.<\/p>\n<p>\u201cWhen you start talking to organisations about smaller services that are focused on doing one thing well, they have the horror associated with now having more than one box to manage and operate. So it\u2019s hard to talk about moving from one big monolithic complicated box that is hard to change, to lots of little boxes, without also having conversations with those clients about how they get better at managing multiple services.<\/p>\n<p>\u201cNetflix has 300 services. Each service runs on at least six machines. They are very good at deploying those services. Yet they are not an overly complicated domain compared to some of our clients.\u201d<\/p>\n<p>\u201cAmazon were talking about this in 2004,\u201d adds Lewis, \u201cthe idea that you join up development of these small, simple applications with the operational control, so the same people who build them are also the people who run them. Now that we\u2019re seeing both private and public clouds, and the ability to spin up machines becoming more and more prevalent, its starting to become more attractive.\u201d<\/p>\n<\/blockquote>\n<p>This is a consistent theme from ThoughtWorks. Break up complex solutions into many small services, think about how they talk to each other (with REST and HTTP favoured), and think about the infrastructure and how to automate it as well as the software itself. <\/p>\n<blockquote>\n<p>\u201cIn many organisations these conversations are happening,\u201d Newman told me. \u201cI go to clients now, and they talk about the Enterprise Service Bus as being something they\u2019d love to get rid of if they only knew how. Five to ten years ago, to even mention the Enterprise Service Bus as being a problem, they\u2019d look at you with daggers in their eyes.\u201d<\/p>\n<p>\u201cIt\u2019s almost like we\u2019re now able to fulfil the promise of service orientation,\u201d says Lewis. \u201cIt needed these additional practices, around things like automated deployment, automated rollback, and an understanding that people and process are tied intrinsically with it.\u201d<\/p>\n<\/blockquote>\n<p>Another issue, claims Lewis, is that software architects simply get out of touch with best practice.<\/p>\n<blockquote>\n<p>\u201cMost architects who build big systems are quite a long way from their codebases. They sit in rooms talking to other architects. They might have last written a line of code five or ten years ago. What they do is to design systems as they would have done ten years ago. People do get divorced from the latest trends and perpetuate less effective ways of doing things.\u201d<\/p>\n<\/blockquote>\n<p>Finally, here\u2019s something for the Microsoft platform people who read this site. ThoughtWorks is not altogether averse to Microsoft and mentions the Azure cloud platform as something which is becoming interesting. But Windows Phone:<\/p>\n<blockquote>\n<p>Despite a promising start to Windows Phone, a well thought-out user interface, and probably the best development experience of any mobile platform, we have seen several stumbles in the execution of the platform strategy by Microsoft and its partners. This makes us less optimistic about the future of the platform than we were in the last radar.<\/p>\n<\/blockquote>\n<p>Translation: nice mobile platform, but nobody\u2019s buying it. Then again, on Monday next week Windows Phone 8 will be properly unveiled. Still hope?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ThoughtWorks has released its latest Technology Radar, an opinionated analysis of software development trends. Things the folk at ThoughtWorks like include automated build and deployment, essential for Continuous delivery; NOSQL database managers especially Neo4j; mobile-first development; the AppCode IDE for Apple\u2019s Objective-C; the Graphite realtime graphing tool for creating dashboards; Clojure and Scala for programming. &hellip; <a href=\"https:\/\/www.itwriting.com\/blog\/6716-thoughtworks-bemoans-excessive-software-complexity-advocates-small-focused-services.html\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">ThoughtWorks bemoans excessive software complexity, advocates small, focused services<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,19,55,56,62,67,79,80],"tags":[157,167,265,440,512,627,804,909],"class_list":["post-6716","post","type-post","status-publish","format-standard","hentry","category-azure","category-cloud-computing","category-microsoft","category-mobile","category-open-source","category-professional","category-software","category-software-development","tag-appcode","tag-architecture","tag-clojure","tag-graphite","tag-java","tag-neo4j","tag-scala","tag-thoughtworks"],"_links":{"self":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts\/6716","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/comments?post=6716"}],"version-history":[{"count":0,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts\/6716\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/media?parent=6716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/categories?post=6716"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/tags?post=6716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}