Jekyll2020-10-28T00:27:48+00:00/feed.xmlTimo’s blog"I write because I'm bad at remembering..."Deploy site using Github Actions2020-07-23T00:00:00+00:002020-07-23T00:00:00+00:00/2020/07/23/deploy-site-using-github-actions<p>A while ago I had a personal site in some obscure Russian hosting site, I don’t even remember if I have paid for that hosting
or if it was something with ads. Nevertheless, since then the idea of having a public and personal website has always attracted me.</p>
<p>So, once the motivation is set, a new site is gonna be created, this is how we can proceed to create a personal website:</p>
<p><img src="/assets/img/site_preview.png" height="500" alt="Site preview at https://timoteoponce.com" /></p>
<h2 id="domain">Domain</h2>
<p>The first step in all web-related ideas is to buy a domain, nothing is really done unless it’s public. In the past it was really complex
to get a domain, but nowadays it’s quite simple, while there are many choices to buy and manage domains, <a href="https://www.namecheap.com/">Namecheap</a> it’s one of the
cheapest ones. Our domain at <a href="https://timoteoponce.com">https://timoteoponce.com</a> costed around 12 USD a year, so we bought it.</p>
<h2 id="server-host">Server host</h2>
<p>Now, on the hosting part we have many options as well, some of my favourites ones these days are:</p>
<ul>
<li><a href="https://www.digitalocean.com/">Digital Ocean</a></li>
<li><a href="https://www.linode.com/">Linode</a></li>
</ul>
<p>Why these providers? Because they provide you empty servers, we must handle everything from scratch. We went with <strong>Digital Ocean</strong> with the cheapest server as well
and proceeded to configure a simple <strong>Ubuntu Server</strong> instance.</p>
<h2 id="web-server">Web server</h2>
<p>Once that is done, we need to install a web server, while <strong>Apache</strong> is still the great player, (Nginx)[https://nginx.com] is a superb tool for the matter, following the following tutorial was just enough:</p>
<ul>
<li><a href="https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-18-04">Install Nginx</a></li>
</ul>
<h2 id="link-the-domain-to-the-machine">Link the domain to the machine</h2>
<p>This was a piece of cake (this used to be a bit hard back in the day) by following the official guide:</p>
<ul>
<li><a href="https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-registrars#registrar-namecheap">Link Namecheap to Droplet</a></li>
</ul>
<h2 id="https">HTTPS</h2>
<p>Another thing that is quite simple and mandatory for any site now, HTTPS, and it’s so simple. Proceeded to perform this task with the amazing <a href="https://letsencrypt.org">Let’s Encrypt</a>:</p>
<ul>
<li><a href="https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-18-04">Secure Nginx with Let’s Encrypt</a></li>
</ul>
<h2 id="dynamic-or-static-content">Dynamic or static content?</h2>
<p>Finally, we have the whole infrastructure is ready, we can finally start adding some content to our site!</p>
<p>What to do then? In the past, to install a CMS would have been the first choice, but not all sites require the overhead and complexity of a full CMS, our intent is mainly to publish content that’s mostly static, and being ourselves in the development environment, something like a <a href="https://www.staticgen.com">static site generator</a> is a great approach.</p>
<p>Once our content is set (I’m using <a href="jekyllrb.com">Jekyll</a>) we push it to <a href="https://github.com">Github</a> and then create an action to deploy it to our shiny server, yet again, here’s the guide to do it:</p>
<ul>
<li><a href="https://www.digitalocean.com/community/questions/how-to-deploy-using-github-action">Deploy a static site using Github Actions</a></li>
</ul>Timoteo PonceA while ago I had a personal site in some obscure Russian hosting site, I don’t even remember if I have paid for that hosting or if it was something with ads. Nevertheless, since then the idea of having a public and personal website has always attracted me.Tale: ETL component2020-06-10T13:33:00+00:002020-06-10T13:33:00+00:00/2020/06/10/tale-etl-component<div>In this occasion we will see a situation that unexpectedly generated a great design, by purpose and by accident as well.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-qd4_3IA_whA/XuDfE2NxjRI/AAAAAAAAAvk/nuufp3psigUze5mNMRJJecVg7MMoz94sgCK4BGAsYHg/s1122/case_study_3_01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Problem" border="0" data-original-height="453" data-original-width="1122" height="258" src="https://1.bp.blogspot.com/-qd4_3IA_whA/XuDfE2NxjRI/AAAAAAAAAvk/nuufp3psigUze5mNMRJJecVg7MMoz94sgCK4BGAsYHg/w640-h258/case_study_3_01.png" title="Problem" width="640" /></a></div><div>Here we've had a customer with a legacy system that stored all its data in a local data source, this is a very old system, written in <a href="https://en.wikipedia.org/wiki/Fortran">Fortran</a>, that handles huge amounts of data and it's rarely updated.<br /><br />As we can already expect, this is not a simple system to integrate with external participants, and that was exactly what they needed. A partner had a website that was well done and wanted to integrated with the legacy system data, meaning that data could be fetch from that system and updated as well.<br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-_oXt0N_XY-8/XuDf5fIsqJI/AAAAAAAAAwA/YVUaMJQvowI5ypD__4LxNf1CSf8eDfr7QCK4BGAsYHg/s1163/case_study_3_02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Proposed solution - draft 1" border="0" data-original-height="443" data-original-width="1163" height="244" src="https://1.bp.blogspot.com/-_oXt0N_XY-8/XuDf5fIsqJI/AAAAAAAAAwA/YVUaMJQvowI5ypD__4LxNf1CSf8eDfr7QCK4BGAsYHg/w640-h244/case_study_3_02.png" title="Proposed solution - draft 1" width="640" /></a></div><div><br /></div><div>Our team was asked to provide a solution for this scenario, and here comes out handy the figure of an Architect, we were a young team, with very few years of experience and almost no insight on what to do next.<br /><br />The Architect took the lead, he designed an <a href="https://en.wikipedia.org/wiki/Extract,_transform,_load">ETL</a> (Extract/Transform/Load) component that would act as a mediator between the systems, it would read data from the legacy system and synchronize it to the partner web system, and consequently it would take the data from the partner web system and synchronize it back to the legacy system.<br /><br />The behavior was designed in this way because the legacy system couldn't be disrupted, a single misbehavior could take the system down, synchronous communication was out of the picture, everything needed to be asynchronous to ensure a stable integration.<br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-OHkSxAl-hKw/XuDgKEPomwI/AAAAAAAAAwU/FBL1stxWiNsuSwhkHFMBE91pt1Z90BxogCK4BGAsYHg/s1280/case_study_3_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Solution - state 1" border="0" data-original-height="767" data-original-width="1280" height="384" src="https://1.bp.blogspot.com/-OHkSxAl-hKw/XuDgKEPomwI/AAAAAAAAAwU/FBL1stxWiNsuSwhkHFMBE91pt1Z90BxogCK4BGAsYHg/w640-h384/case_study_3_03.png" title="Solution - state 1" width="640" /></a></div><div>Our team worked well and delivered the first ETL to production with some small issues, but worked well, the synchronization process between the Legacy and the External partner was performed every two hours and worked really well.<br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-Xq6VzgdVfAs/XuDgUn1HzFI/AAAAAAAAAwg/fmLoKJvS6HE_wJANO6vt8xDUlDKgWzZtQCK4BGAsYHg/s1452/case_study_3_04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Problems in legacy" border="0" data-original-height="798" data-original-width="1452" height="352" src="https://1.bp.blogspot.com/-Xq6VzgdVfAs/XuDgUn1HzFI/AAAAAAAAAwg/fmLoKJvS6HE_wJANO6vt8xDUlDKgWzZtQCK4BGAsYHg/w640-h352/case_study_3_04.png" title="Problems in legacy" width="640" /></a></div><div><br /></div><div>But after a few weeks in production the customer and owner of the Legacy system saw a problem, the amount of data changed by the External partner was huge compared to their normal changes rate, the Legacy system was getting slower because of this integration and data synchronization.<br /><br />Their Legacy system had a great feature for this scenario, they've created a Replica environment that worked for read-only data (which amounted to 90% of the operations) and the original system where data could be written. The new schema solved the problem on their side, but the ETL needed to be updated, it needed to look now at 2 different data sources, with different behaviors.<br /><br />Our team's Architect took the lead again, he said: "the ETL remains unchanged, we will fix this in the wire". His decision was to put queues in front of the ETL to handle the data traffic, and install agents in the Legacy systems and the External partner system, this agent would monitor the data and communicate with the queues with structured messages, asking for data (read) or performing a data modification (write).<br /><br />The changes were done in two weeks, the performance remained the same, the ETL performed consistently without changing a line of code, the Legacy system's load was controlled and the External system worked really well and fast.<br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-S5NTxrgmY7E/XuDggjkobwI/AAAAAAAAAww/l98qIBSxvb4Zg1g5oYpW3DCAs20bWnFQACK4BGAsYHg/s1463/case_study_3_05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Final setup" border="0" data-original-height="759" data-original-width="1463" height="332" src="https://1.bp.blogspot.com/-S5NTxrgmY7E/XuDggjkobwI/AAAAAAAAAww/l98qIBSxvb4Zg1g5oYpW3DCAs20bWnFQACK4BGAsYHg/w640-h332/case_study_3_05.png" title="Final setup" width="640" /></a></div><div><br /></div><div><b>Backwards Analysis</b><br /><br />Thinking back, the project went really well, the development process was smooth, integration was simple and a lot of things that usually go wrong were avoided. Many of these benefits are related to some key decision made by the Architect for the beginning:<br /><br /><ul style="text-align: left;"><li>Functional programming as main development paradigm</li><li>Automated test covering critical cases</li><li>Periodical automated build</li><li>Asynchronous communication </li><li>Ensured communication channel<br /></li></ul><br /></div>Timoteo PonceIn this occasion we will see a situation that unexpectedly generated a great design, by purpose and by accident as well.Here we've had a customer with a legacy system that stored all its data in a local data source, this is a very old system, written in Fortran, that handles huge amounts of data and it's rarely updated.As we can already expect, this is not a simple system to integrate with external participants, and that was exactly what they needed. A partner had a website that was well done and wanted to integrated with the legacy system data, meaning that data could be fetch from that system and updated as well.Our team was asked to provide a solution for this scenario, and here comes out handy the figure of an Architect, we were a young team, with very few years of experience and almost no insight on what to do next.The Architect took the lead, he designed an ETL (Extract/Transform/Load) component that would act as a mediator between the systems, it would read data from the legacy system and synchronize it to the partner web system, and consequently it would take the data from the partner web system and synchronize it back to the legacy system.The behavior was designed in this way because the legacy system couldn't be disrupted, a single misbehavior could take the system down, synchronous communication was out of the picture, everything needed to be asynchronous to ensure a stable integration.Our team worked well and delivered the first ETL to production with some small issues, but worked well, the synchronization process between the Legacy and the External partner was performed every two hours and worked really well.But after a few weeks in production the customer and owner of the Legacy system saw a problem, the amount of data changed by the External partner was huge compared to their normal changes rate, the Legacy system was getting slower because of this integration and data synchronization.Their Legacy system had a great feature for this scenario, they've created a Replica environment that worked for read-only data (which amounted to 90% of the operations) and the original system where data could be written. The new schema solved the problem on their side, but the ETL needed to be updated, it needed to look now at 2 different data sources, with different behaviors.Our team's Architect took the lead again, he said: "the ETL remains unchanged, we will fix this in the wire". His decision was to put queues in front of the ETL to handle the data traffic, and install agents in the Legacy systems and the External partner system, this agent would monitor the data and communicate with the queues with structured messages, asking for data (read) or performing a data modification (write).The changes were done in two weeks, the performance remained the same, the ETL performed consistently without changing a line of code, the Legacy system's load was controlled and the External system worked really well and fast.Backwards AnalysisThinking back, the project went really well, the development process was smooth, integration was simple and a lot of things that usually go wrong were avoided. Many of these benefits are related to some key decision made by the Architect for the beginning:Functional programming as main development paradigmAutomated test covering critical casesPeriodical automated buildAsynchronous communication Ensured communication channelAbout software development methodologies2020-06-04T14:16:00+00:002020-06-04T14:16:00+00:00/2020/06/04/about-software-development-methodologies<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">A while ago I've sent a question to <a href="https://en.wikipedia.org/wiki/Jim_Coplien">James Coplien</a>, one of the loudest voices of software development processes, methodologies and design.</div><blockquote class="tr_bq"><span style="color: black; display: inline; float: none; font-family: "helvetica"; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">Hello mister Coplien.</span><br /><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br /></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">After some meetings regarding working processes and working methodologies for software, we've reached a point on asking what are the alternatives to the most know approaches (waterfall and agile processes).</div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br /></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">Our group consists of people actively working on software development, testers, students, and college teachers. So, from our limited experience, we couldn't list too many approaches; we ended up with a commitment of digging into the topic and share our findings in our next meetings.</div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br /></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">That's why I would be super thankful if you could recommend some resources (articles/books) on software development processes/methodologies.</div></blockquote><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">To my surprise, he replied back with a great explanation: <br /><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br class="" /></div><blockquote class="tr_bq"><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><span style="color: black; display: inline; float: none; font-family: "helvetica"; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">Hej, Juan,</span>Thanks for writing.</div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br class="" /></div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">First: just to pick nits, “methodology” is a branch of philosophy which is the study of<span class="Apple-converted-space"> </span><i class="">method</i>. Technically, things like waterfall and XP are methods and not methodologies. Alistair Cockburn, who has developed a theory of software engineering, playfully likes to call himself a “methodist” rather than a “methodologist.”</div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br class="" /></div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">A<span class="Apple-converted-space"> </span><i class="">method</i><span class="Apple-converted-space"> </span>is therefore a pre-packaged set of practices and processes suitable to design and implementation. One of the great learnings of the 20th century is that method doesn’t work. The architect Christopher Alexander has been one of the leaders of the Design Movement since about 1968, and is very familiar with the notion of method. He writes:</div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br class="" /></div><blockquote class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border: none; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 0px 0px 0px 40px; orphans: auto; padding: 0px; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><div class=""><i class="">No one will become a better designer by ... following any method blindly... if you try to understand the idea that you can create abstract patterns by studying the implication of limited systems of forces, and can create new forms by free combination of these patterns—and realize that this will only work if the patterns which you define deal with systems of forces whose internal interaction is very dense, and whose interaction with the other forces in the world is very weak—then, in the process of trying to create such diagrams or patterns for yourself, you will reach the central idea of which this book is all about.<span class="Apple-converted-space"> </span></i>— Christopher Alexander, “Notes on Synthesis of Form,” 1974</div></blockquote><br class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;" /><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">So it is not a matter of choosing between alternative potential approaches, but rather of transcending the whole framework of reducing design to method. No more than Michelangelo followed any method in making the statue of David or of painting the roof of the Sistine Chapel will method help any technical design activity.</div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br class="" /></div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">Even within the framework of<span class="Apple-converted-space"> </span><i class="">agile</i>, there are those that believe that Man can triumph over the complexity of nature and that they can prevail using some method. XP is a very old example. SaFE is a newer example. The things that work dismiss this claim and open the doors to self-organization and feedback. That is true agile. True agile is incompatible with the fundamental notions of<span class="Apple-converted-space"> </span><i class="">method</i>.</div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br class="" /></div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">This is why I am an advocate of Scrum. Scrum is not a method but rather a framework. If you want to explore the method space I’d recommend exploring Crystal and the works of Alistair Cockburn. Scrum and Crystal aren’t the only ones. But to find anything effective for complex development you must abandon<span class="Apple-converted-space"> </span><i class="">method</i>.<span class="Apple-converted-space"> </span><i class="">Method</i><span class="Apple-converted-space"> </span>is good for simple and merely complicated work — not for complex work.</div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br class="" /></div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">What you have read is aa OK start, but I think you are exploring noise and need to dig deeper into some of the underlying theory before looking at experience reports like<span class="Apple-converted-space"> </span><i class="">Scrum from the Trenches</i>. If you want to know Scrum in depth, then get the new “A Scrum Book” (<a class="" href="https://pragprog.com/book/jcscrum/a-scrum-book">https://pragprog.com/book/jcscrum/a-scrum-book</a>). That will help you understand Scrum. But Scrum is not a method, and I think you need to come to grips with the scope within which<span class="Apple-converted-space"> </span><i class="">method</i><span class="Apple-converted-space"> </span>works. Maybe you even need to come to grips with the taxonomy of design within which<span class="Apple-converted-space"> </span><i class="">method</i><span class="Apple-converted-space"> </span>is historically a relatively small part. Therefore, I recommend getting these books as well:</div><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br class="" /></div><blockquote class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border: none; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 0px 0px 0px 40px; orphans: auto; padding: 0px; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><div class=""><i class="">Design after Modernism: Beyond the Object</i>, by John Thackara (<a class="" href="https://www.amazon.com/gp/offer-listing/0500234833/">https://www.amazon.com/gp/offer-listing/0500234833/</a>)</div><div class=""><br class="" /></div><div class=""><i class="">Developments in Design Methodology,</i><span class="Apple-converted-space"> </span>by Nigel Cross (<a class="" href="https://www.bookdepository.com/Developments-Design-Methodology-Nigel-Cross/9780471102489">https://www.bookdepository.com/Developments-Design-Methodology-Nigel-Cross/9780471102489</a>)</div><div class=""><br class="" /></div><div class=""><i class="">Notes on the Synthesis of Form</i>, by Christopher Alexander, 1974 printing (<a class="" href="https://www.amazon.com/Notes-Synthesis-Form-Harvard-Paperbacks/dp/0674627512/ref=sr_1_fkmrnull_1">https://www.amazon.com/Notes-Synthesis-Form-Harvard-Paperbacks/dp/0674627512/ref=sr_1_fkmrnull_1</a>)</div></blockquote><div class="" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br class="" /></div><span style="color: black; display: inline; float: none; font-family: "helvetica"; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">There are many more, but this is a start. From where you seem to be at, you have many years of work to do before coming to any conclusion.</span></blockquote></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">At this point, <a href="https://en.wikipedia.org/wiki/Alistair_Cockburn">Alistair Cockburn</a> (participant on the Agile Manifesto) got involved, and provided a lengthy response:</div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"></div><blockquote class="tr_bq"><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><span style="background-color: white; color: black; display: inline; float: none; font-family: "helvetica"; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">hi, Juan, Cope,<span class="Apple-converted-space"> </span></span><br /><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">I rarely like to disagree with Cope, but he is wrong twice here, and putting words in my mouth, so I feel somewhat obliged to step in. I'm afraid this is a long discussion, but one in which I have invested considerable research. Nothing of what I am about to say is "off the cuff".<span class="Apple-converted-space"> </span></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">First because it is easiest : I am a methodologist, not a methodist. The "-ologist" refers unambiguously to "person who studies --".?? I study methods and methodologies (explanation of the 'methodology' in long form below).?? I am not a methodist, and never refer to myself as such. A methodist is not a studier of, he is a person who follows the rules of the method, in particular, a very rigid form of Christianity. So if I am anything, it is not a methodist :).</div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">For those who wish to be pure, that "-ology" means "study of", I then insist that I am a "technologist" because my field is "technology", the study of techniques. Until the users of the English language repair the word "technology" to mean, as they imply from the suffix "-ology", study of techniques, then I feel no obligation to honor the false appeal to ancient Greek etymology for "methodology". But more on that in a moment. I am a "technologist" (studying techniques") or a "methodologist" (studying methods and methodologies), but not a "methodist" (a particular, very formulaic Christian religion)</div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br /></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">For the second, "Methodology", Cope makes the usual vague reference to a false etymology based on ancient greek. For my PhD dissertation, I had to take on this question, I researched and tracked this word over a period of years and using different dictionaries.<span class="Apple-converted-space"> </span></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">It is best that I don't try to re-write that research, but rather, show you that section of my PhD dissertation.<span class="Apple-converted-space"> </span></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br /></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br /></div><a href="https://www.blogger.com/null" name="_Toc10563846" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"></a><a href="https://www.blogger.com/null" name="_Toc5788411" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">1.1 Clarification of Words</a><span style="background-color: white; color: black; display: inline; float: none; font-family: "helvetica"; font-size: 12px; font-style: normal; font-weight: normal; letter-spacing: normal; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"></span><br /><div class="MsoNormal" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">With the word<span class="Apple-converted-space"> </span><i>methodology</i><span class="Apple-converted-space"> </span>being used in different ways by various writers, and often interchanged with the word<span class="Apple-converted-space"> </span><i>method</i>, I must clarify my use of the words in order for the rest of the thesis to make sense.<span class="Apple-converted-space"> </span></div><h3 style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; break-after: avoid-page; caret-color: rgb(0, 0, 0); color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; letter-spacing: normal; margin: 12pt 0in 6pt; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">Methodology</h3><div class="MsoNormal" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">My use of the word comes from two sources: the Merriam-Webster Dictionaries and common usage among large contract software houses.</div><div class="MsoListBullet" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in 3pt 0.25in; orphans: auto; text-align: justify; text-decoration: none; text-indent: -0.25in; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><span style="font-family: "symbol";">??????????????<span class="Apple-converted-space"> </span></span>The (U.S.-based) Merriam-Webster dictionaries list as their first definition: "A series of related methods or techniques."<span class="Apple-converted-space"> </span></div><div class="MsoListBullet" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in 3pt 0.25in; orphans: auto; text-align: justify; text-decoration: none; text-indent: -0.25in; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><span style="font-family: "symbol";">??????????????<span class="Apple-converted-space"> </span></span>When I sat in a discussion of methodology with a group of senior consultants from Coopers & Lybrand, Ernst & Young, Andersen Consulting, and the IBM Consulting Group, one of them stood up and said (words to the effect of): "Let's get clear what we mean by methodology. It is the roles, teams, skills, processes, techniques, tools, and standards used by the project team." The others in the room nodded their heads, and the meeting proceeded. As one of the senior consultants later told me, "If it is what one or two people do while working on a task, it is technique. If it is what the team uses to coordinate their work, then it's methodology."</div><div class="MsoNormal" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">Those two meanings of the word are congruent and match the common use of the word.<span class="Apple-converted-space"> </span></div><div class="MsoNormal" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">Many British and continental European speakers dislike the above definition, preferring to use the word<span class="Apple-converted-space"> </span><i>method</i><span class="Apple-converted-space"> </span>instead. They cite the (U.K.-based) Oxford English Dictionary, which in the early 1990s contained only one entry for<span class="Apple-converted-space"> </span><i>methodology</i>: "study of methods." This explains the cultural difference in usage. However, the 1995 Oxford English Reference Dictionary includes in the entry for<span class="Apple-converted-space"> </span><i>methodology</i>: "2. a body of methods used in a particular branch of activity." Both American and British dictionaries now agree on the subject.</div><h3 style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; break-after: avoid-page; caret-color: rgb(0, 0, 0); color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; letter-spacing: normal; margin: 12pt 0in 6pt; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">Method</h3><div class="MsoNormal" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">The Merriam-Webster dictionaries define<span class="Apple-converted-space"> </span><i>method</i><span class="Apple-converted-space"> </span>as a "systematic procedure"; that is, similar to a technique. This matches the way many European speakers and European research literature uses the word<span class="Apple-converted-space"> </span><i>method</i>. An example, from Mathiassen (1998), is the following:</div><div class="MsoNormalIndent" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: Arial, sans-serif; font-size: 10pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in 3pt 0.3in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><u>Lesson 2:</u><span class="Apple-converted-space"> </span>Methods are primarily frameworks for learning.</div><div class="MsoNormal" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">The intention behind Mathiassen's word<span class="Apple-converted-space"> </span><i>method</i><span class="Apple-converted-space"> </span>is quite different from my intention for the word<span class="Apple-converted-space"> </span><i>methodology</i>. Mathiassen writes<span class="Apple-converted-space"> </span><i>method</i><span class="Apple-converted-space"> </span>to connote what one or a few people are learning to use, usually as a technique. This learning eventually disappears into the background skill set of the practitioner.<span class="Apple-converted-space"> </span></div><div class="MsoNormal" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">In contrast, I write<span class="Apple-converted-space"> </span><i>methodology</i><span class="Apple-converted-space"> </span>to connote the conventions people agree to across the team (including development techniques). While the techniques disappear into each person's skill set, the conventions in play do not disappear into skill sets.<span class="Apple-converted-space"> </span></div><div class="MsoNormal" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">We shall need both words to complete the discussion. This thesis primarily addresses methodology rather than method.</div><h3 style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; break-after: avoid-page; caret-color: rgb(0, 0, 0); color: black; font-family: Arial, sans-serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; letter-spacing: normal; margin: 12pt 0in 6pt; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">Shifts in Meaning</h3><div class="MsoNormal" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">As the research took place over a ten-year period, there were several minor shifts in the way the word<span class="Apple-converted-space"> </span><i>methodology</i><span class="Apple-converted-space"> </span>got used, as well as some shifts in the way the practitioner community used the word. I deliberately leave in place some of those shifts, because readers will come to this thesis with their own personal interpretations, and part of the thesis topic is dealing with those personal interpretations.<span class="Apple-converted-space"> </span></div><div class="MsoNormal" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; caret-color: rgb(0, 0, 0); color: black; font-family: "Times New Roman", serif; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; margin: 3pt 0in; orphans: auto; text-align: justify; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">The first research question, for example, asks: "<b>Question 1:</b><span class="Apple-converted-space"> </span>Do we need yet another software development methodology, or can we expect a convergence and reduction at some point in time?" In this question, I do not mean just, "Do we need yet another set of<span class="Apple-converted-space"> </span><i>team conventions</i>, or can we expect a convergence and reduction at some point in time?" Rather, I accept the fluid way in which people ask the question, which often includes, "Do we need yet another software development<span class="Apple-converted-space"> </span><i>technique</i>, or can we expect a convergence and reduction at some point in time?" The answer that I develop responds to both versions of the question. Research question #2 is handled in a similarly liberal way.</div><span style="background-color: white; color: black; font-family: "helvetica"; font-size: 11pt; font-style: normal; font-weight: normal; letter-spacing: normal; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">However, by the time we reach the third question, "<b>Question 3:</b><span class="Apple-converted-space"> </span>How does the methodology relate to the people on the project?" the meaning narrows. It is quite a different question to ask, "How does a<span class="Apple-converted-space"> </span><i>technique</i>relate to the people on the project?" That question has to do with introducing techniques into groups, as well as the relation between technique-in-theory and techniques-in-practice (the latter topic being well discussed in the Scandinavian literature, see Ehn (1988) and Mathiassen (1998)). In the context of this inquiry, it is relevant to use the narrower meaning, "How do the<span class="Apple-converted-space"> </span><i>team conventions<span class="Apple-converted-space"> </span></i>relate to the people on the project and other aspects of life on the project?"??</span> </div></blockquote><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br /></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">I found these replies and explanations extremely good, especially to someone trying to get more information about software development processes, so, I wanted to make them public because they might be useful for someone else.</div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><br /></div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; caret-color: rgb(0, 0, 0); color: black; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-decoration: none; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">Additionally, I've never expected a reply, it's great to know that knowledge can be shared and guidance can be provided despite the name, profession, location or expectations, thank you James and Alistair for your time.<br /> <br />My recommendations:<br /><ul><li><a href="https://www.youtube.com/watch?v=SxHqhDT9WGI">James Coplien on DCI</a></li><li><a href="https://www.youtube.com/watch?v=sr5wfygbY7k">Alistar Cockburn on The Heart of Agile</a></li></ul></div>Timoteo PonceA while ago I've sent a question to James Coplien, one of the loudest voices of software development processes, methodologies and design.Hello mister Coplien.After some meetings regarding working processes and working methodologies for software, we've reached a point on asking what are the alternatives to the most know approaches (waterfall and agile processes).Our group consists of people actively working on software development, testers, students, and college teachers. So, from our limited experience, we couldn't list too many approaches; we ended up with a commitment of digging into the topic and share our findings in our next meetings.That's why I would be super thankful if you could recommend some resources (articles/books) on software development processes/methodologies.To my surprise, he replied back with a great explanation: Hej, Juan,Thanks for writing.First: just to pick nits, “methodology” is a branch of philosophy which is the study of method. Technically, things like waterfall and XP are methods and not methodologies. Alistair Cockburn, who has developed a theory of software engineering, playfully likes to call himself a “methodist” rather than a “methodologist.”A method is therefore a pre-packaged set of practices and processes suitable to design and implementation. One of the great learnings of the 20th century is that method doesn’t work. The architect Christopher Alexander has been one of the leaders of the Design Movement since about 1968, and is very familiar with the notion of method. He writes:No one will become a better designer by ... following any method blindly... if you try to understand the idea that you can create abstract patterns by studying the implication of limited systems of forces, and can create new forms by free combination of these patterns—and realize that this will only work if the patterns which you define deal with systems of forces whose internal interaction is very dense, and whose interaction with the other forces in the world is very weak—then, in the process of trying to create such diagrams or patterns for yourself, you will reach the central idea of which this book is all about. — Christopher Alexander, “Notes on Synthesis of Form,” 1974So it is not a matter of choosing between alternative potential approaches, but rather of transcending the whole framework of reducing design to method. No more than Michelangelo followed any method in making the statue of David or of painting the roof of the Sistine Chapel will method help any technical design activity.Even within the framework of agile, there are those that believe that Man can triumph over the complexity of nature and that they can prevail using some method. XP is a very old example. SaFE is a newer example. The things that work dismiss this claim and open the doors to self-organization and feedback. That is true agile. True agile is incompatible with the fundamental notions of method.This is why I am an advocate of Scrum. Scrum is not a method but rather a framework. If you want to explore the method space I’d recommend exploring Crystal and the works of Alistair Cockburn. Scrum and Crystal aren’t the only ones. But to find anything effective for complex development you must abandon method. Method is good for simple and merely complicated work — not for complex work.What you have read is aa OK start, but I think you are exploring noise and need to dig deeper into some of the underlying theory before looking at experience reports like Scrum from the Trenches. If you want to know Scrum in depth, then get the new “A Scrum Book” (https://pragprog.com/book/jcscrum/a-scrum-book). That will help you understand Scrum. But Scrum is not a method, and I think you need to come to grips with the scope within which method works. Maybe you even need to come to grips with the taxonomy of design within which method is historically a relatively small part. Therefore, I recommend getting these books as well:Design after Modernism: Beyond the Object, by John Thackara (https://www.amazon.com/gp/offer-listing/0500234833/)Developments in Design Methodology, by Nigel Cross (https://www.bookdepository.com/Developments-Design-Methodology-Nigel-Cross/9780471102489)Notes on the Synthesis of Form, by Christopher Alexander, 1974 printing (https://www.amazon.com/Notes-Synthesis-Form-Harvard-Paperbacks/dp/0674627512/ref=sr_1_fkmrnull_1)There are many more, but this is a start. From where you seem to be at, you have many years of work to do before coming to any conclusion.At this point, Alistair Cockburn (participant on the Agile Manifesto) got involved, and provided a lengthy response:hi, Juan, Cope, I rarely like to disagree with Cope, but he is wrong twice here, and putting words in my mouth, so I feel somewhat obliged to step in. I'm afraid this is a long discussion, but one in which I have invested considerable research. Nothing of what I am about to say is "off the cuff". First because it is easiest : I am a methodologist, not a methodist. The "-ologist" refers unambiguously to "person who studies --".?? I study methods and methodologies (explanation of the 'methodology' in long form below).?? I am not a methodist, and never refer to myself as such. A methodist is not a studier of, he is a person who follows the rules of the method, in particular, a very rigid form of Christianity. So if I am anything, it is not a methodist :).For those who wish to be pure, that "-ology" means "study of", I then insist that I am a "technologist" because my field is "technology", the study of techniques. Until the users of the English language repair the word "technology" to mean, as they imply from the suffix "-ology", study of techniques, then I feel no obligation to honor the false appeal to ancient Greek etymology for "methodology". But more on that in a moment. I am a "technologist" (studying techniques") or a "methodologist" (studying methods and methodologies), but not a "methodist" (a particular, very formulaic Christian religion)For the second, "Methodology", Cope makes the usual vague reference to a false etymology based on ancient greek. For my PhD dissertation, I had to take on this question, I researched and tracked this word over a period of years and using different dictionaries. It is best that I don't try to re-write that research, but rather, show you that section of my PhD dissertation. 1.1 Clarification of WordsWith the word methodology being used in different ways by various writers, and often interchanged with the word method, I must clarify my use of the words in order for the rest of the thesis to make sense. MethodologyMy use of the word comes from two sources: the Merriam-Webster Dictionaries and common usage among large contract software houses.?????????????? The (U.S.-based) Merriam-Webster dictionaries list as their first definition: "A series of related methods or techniques." ?????????????? When I sat in a discussion of methodology with a group of senior consultants from Coopers & Lybrand, Ernst & Young, Andersen Consulting, and the IBM Consulting Group, one of them stood up and said (words to the effect of): "Let's get clear what we mean by methodology. It is the roles, teams, skills, processes, techniques, tools, and standards used by the project team." The others in the room nodded their heads, and the meeting proceeded. As one of the senior consultants later told me, "If it is what one or two people do while working on a task, it is technique. If it is what the team uses to coordinate their work, then it's methodology."Those two meanings of the word are congruent and match the common use of the word. Many British and continental European speakers dislike the above definition, preferring to use the word method instead. They cite the (U.K.-based) Oxford English Dictionary, which in the early 1990s contained only one entry for methodology: "study of methods." This explains the cultural difference in usage. However, the 1995 Oxford English Reference Dictionary includes in the entry for methodology: "2. a body of methods used in a particular branch of activity." Both American and British dictionaries now agree on the subject.MethodThe Merriam-Webster dictionaries define method as a "systematic procedure"; that is, similar to a technique. This matches the way many European speakers and European research literature uses the word method. An example, from Mathiassen (1998), is the following:Lesson 2: Methods are primarily frameworks for learning.The intention behind Mathiassen's word method is quite different from my intention for the word methodology. Mathiassen writes method to connote what one or a few people are learning to use, usually as a technique. This learning eventually disappears into the background skill set of the practitioner. In contrast, I write methodology to connote the conventions people agree to across the team (including development techniques). While the techniques disappear into each person's skill set, the conventions in play do not disappear into skill sets. We shall need both words to complete the discussion. This thesis primarily addresses methodology rather than method.Shifts in MeaningAs the research took place over a ten-year period, there were several minor shifts in the way the word methodology got used, as well as some shifts in the way the practitioner community used the word. I deliberately leave in place some of those shifts, because readers will come to this thesis with their own personal interpretations, and part of the thesis topic is dealing with those personal interpretations. The first research question, for example, asks: "Question 1: Do we need yet another software development methodology, or can we expect a convergence and reduction at some point in time?" In this question, I do not mean just, "Do we need yet another set of team conventions, or can we expect a convergence and reduction at some point in time?" Rather, I accept the fluid way in which people ask the question, which often includes, "Do we need yet another software development technique, or can we expect a convergence and reduction at some point in time?" The answer that I develop responds to both versions of the question. Research question #2 is handled in a similarly liberal way.However, by the time we reach the third question, "Question 3: How does the methodology relate to the people on the project?" the meaning narrows. It is quite a different question to ask, "How does a techniquerelate to the people on the project?" That question has to do with introducing techniques into groups, as well as the relation between technique-in-theory and techniques-in-practice (the latter topic being well discussed in the Scandinavian literature, see Ehn (1988) and Mathiassen (1998)). In the context of this inquiry, it is relevant to use the narrower meaning, "How do the team conventions relate to the people on the project and other aspects of life on the project?"?? I found these replies and explanations extremely good, especially to someone trying to get more information about software development processes, so, I wanted to make them public because they might be useful for someone else.Additionally, I've never expected a reply, it's great to know that knowledge can be shared and guidance can be provided despite the name, profession, location or expectations, thank you James and Alistair for your time. My recommendations:James Coplien on DCIAlistar Cockburn on The Heart of AgileBitbucket and Mercurial2019-08-29T12:16:00+00:002019-08-29T12:16:00+00:00/2019/08/29/bitbucket-and-mercurial<br />It has been recently announced that Bitbucket will be leaving Mercurial support in 2020 [1], defaulting to Git from then on.<br /><br />A lot of things come to mind when reading the announcement, mostly because Mercurial has been my first distributed revision control system or at least the first one I understood. It's fairly simple to use, concise and with a simple interface, but sadly has fallen in popularity.<br /><br />Git has won in other fields where popularity is more important that correctness and simplicity. If I would go back in time and choose between Git and Mercurial, I would still choose Mercurial, it's still a great tool.<br /><br /><br />[1] <a href="https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket">https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket</a>Timoteo PonceIt has been recently announced that Bitbucket will be leaving Mercurial support in 2020 [1], defaulting to Git from then on.A lot of things come to mind when reading the announcement, mostly because Mercurial has been my first distributed revision control system or at least the first one I understood. It's fairly simple to use, concise and with a simple interface, but sadly has fallen in popularity.Git has won in other fields where popularity is more important that correctness and simplicity. If I would go back in time and choose between Git and Mercurial, I would still choose Mercurial, it's still a great tool.[1] https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucketDebugger usage as bad smell?2019-06-05T15:19:00+00:002019-06-05T15:19:00+00:00/2019/06/05/debugger-usage-as-bad-smell<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-y7Woyyd5rrQ/XPfdN8Ia9WI/AAAAAAAAIFk/mWs4D0Byet4kA8XPN4ZS7QYMbJ81FX5zgCLcBGAs/s1600/0.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="400" data-original-width="698" height="183" src="https://1.bp.blogspot.com/-y7Woyyd5rrQ/XPfdN8Ia9WI/AAAAAAAAIFk/mWs4D0Byet4kA8XPN4ZS7QYMbJ81FX5zgCLcBGAs/s320/0.jpg" width="320" /></a></div><br />A lot of times development is not straightforward, you hit a corner and don't know what else to do to fix a problem. During those periods I've seen many developers do the following things:<br /><ol><li>Start the debugger right away and go step by step into the problem</li><li>Sketch all possible scenarios that would lead to the problem, then println-debug each scenario</li><li>Take a walk for 10 mins to think about the problem</li></ol> While all these approaches have worked for me, I tend to ignore the debugger use more and more over time. The reason for it can be summarized as:<br /><br /><i> "By using a debugger, I'm always avoiding to first understand the problem, but instead patching it with a single-scenario fix"</i><br /><br />In the past I've used debuggers a lot, starting it as soon as some problem arose. But then a pattern started to show up, fixes were coming back with other problems that the first fix didn't cover.<br /><br />It took a while to understand this and slowly move away from debuggers, it all started when some production applications started to fail, and we didn't have the chance to debug in such environment, we just had the logs.<br /><br />Reading the code, checking the possible inputs and flows, creating a test case (hopefully automated) and then attempting different fixes resulted in more consistent patches, fewer round-trips with the customers and higher efficiency in the team.<br /><br />So, whenever someone's starting to fix a bug, my first instinct is to try to create a test case that reproduces the problem before firing up the debugger gun.<br /><ol></ol>Timoteo PonceA lot of times development is not straightforward, you hit a corner and don't know what else to do to fix a problem. During those periods I've seen many developers do the following things:Start the debugger right away and go step by step into the problemSketch all possible scenarios that would lead to the problem, then println-debug each scenarioTake a walk for 10 mins to think about the problem While all these approaches have worked for me, I tend to ignore the debugger use more and more over time. The reason for it can be summarized as: "By using a debugger, I'm always avoiding to first understand the problem, but instead patching it with a single-scenario fix"In the past I've used debuggers a lot, starting it as soon as some problem arose. But then a pattern started to show up, fixes were coming back with other problems that the first fix didn't cover.It took a while to understand this and slowly move away from debuggers, it all started when some production applications started to fail, and we didn't have the chance to debug in such environment, we just had the logs.Reading the code, checking the possible inputs and flows, creating a test case (hopefully automated) and then attempting different fixes resulted in more consistent patches, fewer round-trips with the customers and higher efficiency in the team.So, whenever someone's starting to fix a bug, my first instinct is to try to create a test case that reproduces the problem before firing up the debugger gun.Review: Weekly Experiment: Standing desk2017-11-01T14:23:00+00:002017-11-01T14:23:00+00:00/2017/11/01/review-weekly-experiment-standing-deskAfter a week trying this new setup for working, here the results.<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://www.pei.com/wp-content/uploads/2017/02/Standing-Desks.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="400" data-original-width="800" height="318" src="https://www.pei.com/wp-content/uploads/2017/02/Standing-Desks.jpg" width="640" /></a></div><br /><br />The rules:<br /><ul><li>During mornings sitting will be the default</li><li>During afternoons standing will be the default</li><li>During lunch-time standing will be the default</li></ul><br />The control:<br /><br /><ul><li><b>Did it have any physical effect?</b> </li><ul><li>A big physical effect, the body feels better, although there were some small pains after the first days</li></ul><li><b>Did it have any food/drink related effect?</b></li><ul><li>Clearly, I consumed much less sugared drinks, not even coffee, and the body didn't ask for it.<b> </b></li></ul><li><b>Did it have any sleep-related effect?</b></li><ul><li>Not sure if related to this single event, but I've been sleeping better.<b> </b></li></ul><li><b>Did it affect in any way productivity and awareness?</b></li><ul><li>This was the biggest effect, procrastination decreased, interactions increased, awareness increase, hence productivity increased as well.</li></ul></ul>Result: This is a must-do practice, I'm going to extend it to full work-days and not only in the afternoons, the effects have been so noticeable that I can't avoid feeling weird by sitting down.<br /><br /><br />Timoteo PonceAfter a week trying this new setup for working, here the results.The rules:During mornings sitting will be the defaultDuring afternoons standing will be the defaultDuring lunch-time standing will be the defaultThe control:Did it have any physical effect? A big physical effect, the body feels better, although there were some small pains after the first daysDid it have any food/drink related effect?Clearly, I consumed much less sugared drinks, not even coffee, and the body didn't ask for it. Did it have any sleep-related effect?Not sure if related to this single event, but I've been sleeping better. Did it affect in any way productivity and awareness?This was the biggest effect, procrastination decreased, interactions increased, awareness increase, hence productivity increased as well.Result: This is a must-do practice, I'm going to extend it to full work-days and not only in the afternoons, the effects have been so noticeable that I can't avoid feeling weird by sitting down.Weekly Experiment: Standing desk2017-10-24T18:24:00+00:002017-10-24T18:24:00+00:00/2017/10/24/weekly-experiment-standing-deskAfter listening to some interesting thoughts from <a href="http://www.se-radio.net/2015/09/se-radio-episode-238-linda-rising-on-the-agile-brain/">Linda Rising at Software Engineering Radio</a>, I've started a periodical experiment, time-boxed to a week in order to check results.<br /><br />So this weeks is related to standing desk, not really a standing desk, but a platform that allows me to work while standing up.<br /><br />The rules:<br /><ul><li>During mornings sitting will be the default </li><li>During afternoons standing will be the default</li><li>During lunch-time standing will be the default </li></ul>The control:<br /><ul><li>Did it have any physical effect? </li><li>Did it have any food/drink related effect?</li><li>Did it have any sleep-related effect?</li><li>Did it affect in any way productivity and awareness?</li></ul><br />Timoteo PonceAfter listening to some interesting thoughts from Linda Rising at Software Engineering Radio, I've started a periodical experiment, time-boxed to a week in order to check results.So this weeks is related to standing desk, not really a standing desk, but a platform that allows me to work while standing up.The rules:During mornings sitting will be the default During afternoons standing will be the defaultDuring lunch-time standing will be the default The control:Did it have any physical effect? Did it have any food/drink related effect?Did it have any sleep-related effect?Did it affect in any way productivity and awareness?DCI: Data Context and Interaction Architecture playlist2016-08-30T20:20:00+00:002016-08-30T20:20:00+00:00/2016/08/30/dci-data-context-and-interactionIt's been a while since I've heard about DCI, and still to this day I'm thrilled with the approach and the concept behind it.<br /><br />It still lacks lots for experimentation in my case, but I find the paradigm really but really interesting.<br />So in that matter, here a list of resources that can introduce the paradigm in a better way:<br /><br /><h3>Coplien: A good introduction</h3><br /><iframe allowfullscreen="" frameborder="0" height="360" mozallowfullscreen="" src="https://player.vimeo.com/video/8235574" webkitallowfullscreen="" width="640"></iframe> <a href="https://vimeo.com/8235574">James Coplien - The DCI Architecture: Supporting the Agile Agenda</a> from <a href="https://vimeo.com/user4280938">Øredev Conference</a> on <a href="https://vimeo.com/">Vimeo</a>.<br /><br /><h3>Coplien: A good interview</h3>- <a href="https://www.infoq.com/interviews/coplien-dci-architecture">https://www.infoq.com/interviews/coplien-dci-architecture</a><br /><br /><h3>Coplien: Another great interview</h3>- <a href="http://devnology.nl/podcasts/devnology-podcast-020-james-coplien-on-lean-architecture">http://devnology.nl/podcasts/devnology-podcast-020-james-coplien-on-lean-architecture</a><br /><br /><h3>Reenskaug: A great overall view and history</h3><br /><iframe allowfullscreen="" frameborder="0" height="360" mozallowfullscreen="" src="https://player.vimeo.com/video/43536416" webkitallowfullscreen="" width="640"></iframe> <a href="https://vimeo.com/43536416">Trygve Reenskaug - Object Orientation Revisited. Simplicity and power with DCI.</a> from <a href="https://vimeo.com/ndcconferences">NDC Conferences</a> on <a href="https://vimeo.com/">Vimeo</a>.<br /><br /><br />And finally a thick (in content) book, a great read in general.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://d188rgcu4zozwl.cloudfront.net/content/B004IK8PIW/images/cover.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://d188rgcu4zozwl.cloudfront.net/content/B004IK8PIW/images/cover.jpg" width="240" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://www.amazon.com/Lean-Architecture-Agile-Software-Development-ebook/dp/B004IK8PIW/ref=mt_kindle?_encoding=UTF8&me=#nav-subnav">Book on Amazon</a></div><br />Timoteo PonceIt's been a while since I've heard about DCI, and still to this day I'm thrilled with the approach and the concept behind it.It still lacks lots for experimentation in my case, but I find the paradigm really but really interesting.So in that matter, here a list of resources that can introduce the paradigm in a better way:Coplien: A good introduction James Coplien - The DCI Architecture: Supporting the Agile Agenda from Øredev Conference on Vimeo.Coplien: A good interview- https://www.infoq.com/interviews/coplien-dci-architectureCoplien: Another great interview- http://devnology.nl/podcasts/devnology-podcast-020-james-coplien-on-lean-architectureReenskaug: A great overall view and history Trygve Reenskaug - Object Orientation Revisited. Simplicity and power with DCI. from NDC Conferences on Vimeo.And finally a thick (in content) book, a great read in general.Book on AmazonAn advice towards Mercurial2016-08-14T03:23:00+00:002016-08-14T03:23:00+00:00/2016/08/14/an-apollogy-for-mercurialThis is not a rant, really, just a some few things I would like to write down.<br /><br /><h2>History</h2>When I started into development I've got the great suggestion to use revision control systems, the first one that I ever used was <a href="http://www.nongnu.org/cvs">CVS</a>, it really worked well for my own purposes, just had some issues with the sharing-between multiple machines.<br /><br />Then Subversion was the hot-thing and it was a bit better that <a href="https://subversion.apache.org/">Subversion</a>, but still had some of the things that I disliked from CVS.<br /><br />Then <a href="https://git-scm.com/">GIT</a> showed up, the projects I was working on required CVS, so I got an early non-official version of git-svn and started working with it, it was great, so many of my problems went away, but it was still under a SVN server.<br /><br />After that , Github, Bitbucket, Kiln, and the tipping point, everybody switched to the reasonable choice, distributed revision control systems, and I think the best summary for why this approach is better than others, is described by <a href="http://www.joelonsoftware.com/items/2010/03/17.html">Joel</a>.<br /><br /><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-sysUll2dt2Q/XTx5_xjWjxI/AAAAAAAAIHI/iwtlXa-QBIg7qPetqvKNssLm-We4dshFQCLcBGAs/s1600/hg.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="499" data-original-width="384" height="320" src="https://1.bp.blogspot.com/-sysUll2dt2Q/XTx5_xjWjxI/AAAAAAAAIHI/iwtlXa-QBIg7qPetqvKNssLm-We4dshFQCLcBGAs/s320/hg.jpg" width="246" /></a></div><br /><h2>My point</h2><br />My point is not to tell which tool is technically better, my point is more subjective, I think that Git is still technically the most advanced approach you can have for revision control systems, but it might not be the most simple one to use.<br /><br />I have used a lot of tools, and among all of them the one that still holds my thumbs up is <a href="https://www.mercurial-scm.org/">Mercurial</a>, here some few reasons:<br /><ul><li>Simple and concise user interface (commands)</li><li>Better merging strategies</li><li>No automatic commits on merge</li><li>Good performance</li><li>Simple to explain</li><li>Gentle learning curve</li><li>Consistent tooling </li></ul> Not too many reasons, rights? that's why I like it, because it just works, no porcelain/plumbing, just the tool. The other tool that goes beyond this is Fossil SCM, but it still needs adoption.<br /><br />So in the end, my suggestion, if you are using revision control systems and you are unhappy with Git, or you don't know any other tool, give Mercurial a try.Timoteo PonceThis is not a rant, really, just a some few things I would like to write down.HistoryWhen I started into development I've got the great suggestion to use revision control systems, the first one that I ever used was CVS, it really worked well for my own purposes, just had some issues with the sharing-between multiple machines.Then Subversion was the hot-thing and it was a bit better that Subversion, but still had some of the things that I disliked from CVS.Then GIT showed up, the projects I was working on required CVS, so I got an early non-official version of git-svn and started working with it, it was great, so many of my problems went away, but it was still under a SVN server.After that , Github, Bitbucket, Kiln, and the tipping point, everybody switched to the reasonable choice, distributed revision control systems, and I think the best summary for why this approach is better than others, is described by Joel.My pointMy point is not to tell which tool is technically better, my point is more subjective, I think that Git is still technically the most advanced approach you can have for revision control systems, but it might not be the most simple one to use.I have used a lot of tools, and among all of them the one that still holds my thumbs up is Mercurial, here some few reasons:Simple and concise user interface (commands)Better merging strategiesNo automatic commits on mergeGood performanceSimple to explainGentle learning curveConsistent tooling Not too many reasons, rights? that's why I like it, because it just works, no porcelain/plumbing, just the tool. The other tool that goes beyond this is Fossil SCM, but it still needs adoption.So in the end, my suggestion, if you are using revision control systems and you are unhappy with Git, or you don't know any other tool, give Mercurial a try.Some interesting things…2016-07-27T13:20:00+00:002016-07-27T13:20:00+00:00/2016/07/27/some-interesting-thingsDuring the last seven years I've been working as a software developer, ocasional team leader, weird tester and lazy seller.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://farm9.staticflickr.com/8671/15646186494_5b99212368_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://farm9.staticflickr.com/8671/15646186494_5b99212368_o.jpg" width="320" /></a></div><br /><br />The world of software development is so wide and moving that you never get tired of it, I happen to dislike some technology approaches, some practices, and even some programming languages.<br /><br />But something I come to appreciate from the profession itself, is the self-pacing nature of it. It's possible to have great teams where things move really fast and well, and is also possible to get into a slow-as-a-snail situation in which you can't even see the final outcome.<br /><br />I've been in many kinds of teams, and I think I know how to create a working environment that helps to understand the problems, react to them and make things better, I have come to that state.<br /><br />I can't say that I'm the best developer, because I'm not, my role is closer to a problem-solver. That's why I've been investing some time looking for options in software development in which I can learn more, new problems, new challenges, and came across <a href="http://www.toptal.com/">TopTal</a>.<br /><br />Confession, I have heard of it while listening to <a href="https://changelog.com/">TheChangelog</a>, that ringed the bells for me, working from home is a nice incentive, now that I have a family, and the chance to work with people all over the world, is a hook for me. So, I'm looking forward to join it's <a href="https://www.toptal.com/software">development group</a>.<br /><br />I'm currently applying to see: how it is, how it works, what can I do in there, will it suit me?<br /><br />But only time and practice will say, let's see how it goes...<br /><br />Update: It didn't go that well :-), but it was a great opportunity to understand how little I know, and to try to learn new thingsTimoteo PonceDuring the last seven years I've been working as a software developer, ocasional team leader, weird tester and lazy seller.The world of software development is so wide and moving that you never get tired of it, I happen to dislike some technology approaches, some practices, and even some programming languages.But something I come to appreciate from the profession itself, is the self-pacing nature of it. It's possible to have great teams where things move really fast and well, and is also possible to get into a slow-as-a-snail situation in which you can't even see the final outcome.I've been in many kinds of teams, and I think I know how to create a working environment that helps to understand the problems, react to them and make things better, I have come to that state.I can't say that I'm the best developer, because I'm not, my role is closer to a problem-solver. That's why I've been investing some time looking for options in software development in which I can learn more, new problems, new challenges, and came across TopTal.Confession, I have heard of it while listening to TheChangelog, that ringed the bells for me, working from home is a nice incentive, now that I have a family, and the chance to work with people all over the world, is a hook for me. So, I'm looking forward to join it's development group.I'm currently applying to see: how it is, how it works, what can I do in there, will it suit me?But only time and practice will say, let's see how it goes...Update: It didn't go that well :-), but it was a great opportunity to understand how little I know, and to try to learn new things