Monthly Archives: March 2020

Quote

On specific Agile (software development) traps

There’s much positive to be said about the benefits of Agile software development, and the shift of software development teams is one sign that many feel this way.

However, I think there are some limits to Agile, and this leads teams to fall into certain traps over and over. Indeed, the Wikipedia page highlights a common criticism of Agile, namely:

Lack of overall product design
A goal of agile software development is to focus more on producing working software and less on documentation. This is in contrast to waterfall models where the process is often highly controlled and minor changes to the system require significant revision of supporting documentation. However, this does not justify completely doing without any analysis or design at all. Failure to pay attention to design can cause a team to proceed rapidly at first but then to have significant rework required as they attempt to scale up the system. One of the key features of agile software development is that it is iterative. When done correctly design emerges as the system is developed and commonalities and opportunities for re-use are discovered.

Now, it’s not the case that teams either do design or not. But I have seen that there are a number of specific traps bigger that Agile teams fall into that arise from lack of design. These traps arise from making tactical or limited decisions outside of a larger framework or structure, which isn’t surprising since Agile followers are guided by the principles that the “best architectures, requirements, and designs emerge from self-organizing teams” and “working software is the primary measure of progress”. Unfortunately what I’ve seen that lead to is:

  • Poor middleware/database system decisions: with this trap, you get teams making a decision on deploying a specific middleware package or database system that will support the software development they are doing. However, while that may be great for the Dev, it may not be great for the Ops. If you have enough teams making tactical decisions, you may end up with a more complex system than is necessary and greater technical debt that you want. Once you get enough data into your database systems, trying to reverse the decision may result not result not only in new development and testing, but a small (or not so small) migration project as well.
  • Poor infrastructure decisions: likewise, with this Agile trap I have seen teams using IaaS pick different images to deploy their software onto. Like the database problem, developers may choose one operating system (e.g. Windows) over another (e.g. Debian) because they are comfortable with the former, even if the production environment is more of the latter. The result can be your organization ending up with multiple VMs with many different operating systems to support and thereby increasing the operational costs of the system.
  • Poor application framework decisions: I see less of this one, although it can happen where teams pick an assortment of application frameworks to use in creating their software, and as with middleware and infrastructure, this will drive up the support effort down the road.

Given these traps, I think the way to avoid them is to inject some specific design phases into the overall software development lifecycle. One way to do that is to revisit a software development lifecycle (see diagram below) used by practitioners at IBM and documented in places like this IBM redbook. It has a waterfall quality about it, but it doesn’t have to be limited to waterfall type projects. It can be highly iterative.

The lifecycle process is shown here (taken from the redbook):

 

GSMethod

The part of the lifecycle in the large box is iterative and not all that different from an agile sprint.  But here you take time to explicitly make design / architecture decisions before building  software. You continue to iterate while making important design decisions before building.

Now, before you start your iterative software development lifecycle, you should need to  make specific architectural decisions. You should make these specific decisions in the solution outline and macro design phase. For smaller teams, these two phases may blend into one. But it is here in solution outline and macro design where you make decisions that are fundamental to the overall solution.

For example, in solution outline you could make overall architectural decisions about the application architecture, the choice of infrastructure technology, what application frameworks are the target for the team. These overall architectural decisions guide the dev, test and ops teams in the future. You may also decide to park some of these decisions in order to do further discovery.  Macro design could be next, where each of the dev teams make certain design decisions about their technology choices before they proceed with their iterations. As they are building and deploying code, they can run into issues where they need to make further design decisions, either due to problems that arise or technology choices that have to finally be made: and this is where the micro design phase is useful.  Micro design decisions could be quickly made, or they may require spikes and proof of concepts before proceeding. Or there could be no decisions to be made at all.  The main thing is more design checkpoints are built into the development lifecycle, which can result in less complexity, less maintainability costs, and less technical debt down the road. What you lose in velocity you can make up in overall lower TCO (total cost of ownership).

There is a risks to this type of approach as well. For example, if the project gets hung up with trying to make design decisions instead of gather requirements and making working software. The key stakeholders need to be aware of this and push on the design teams to prevent that from happening. If anything, it can help the key stakeholders better understand the risks before getting too far down the road in terms of developing software. Overall I think the risks are worth it if it helps you avoid these common agile traps.

Highlights and Ramblings (a newsletter, as such)


Here’s a list of  random items I’ve been stashing away while working from home in this time of social distancing and the pandemic. Initially my goal was to create a newsletter, and perhaps I still will create one. Most of the newsletters I get, though, read like blog posts. That’s fine. But then why do I need to create a newsletter, when I can just post here. Plus, it will save you another thing to deal with in your inbox. Read when you have nothing else to read.

  1. Privacy: It’s worrying to me that as people try to adapt to social distancing, tech companies continue to do things poorly. I am thinking of Yelp signing up restaurants for GoFundMe, Zoom selling people’s data, and other tech companies ostensibly tracking sick people using cellphone data. It’s hard to think about things such as privacy abuse with all the fear of the pandemic, but it’s something to not lose track of.
  2. Food suppliers: Before the pandemic, it was a given that pickers would migrate to wherever crops were ripe and pick them, Perhaps not anymore. After this crisis, I think the world is going to need to reconsider so many people they took for granted before, be it food pickers, grocery store clerks, or delivery people. I hope this would mean they would be taken better care of. Maybe they will be. Or maybe the push for automation will come on even stronger. We will see soon enough.
  3. Leadership: Impressed to see that the grocer HEB in the US reached out to Chinese grocers to help them deal with the pandemic. Smart. A case study in good business leadership.
  4. Leadership, pt 2: Trump continues to be Trump: a crisis has not altered who he is or how he acts. All I can say is from my vantage point in Toronto that all three levels of government are being effective. It surprised me by how governments can spring to life during a crisis. I haven’t recalled such strong action since the start of the Great Recession. Not something to take for granted.
  5. Entertainment: As entertainers lost venues, it was heartening to see them take to Instagram and other platforms to perform for us. From singers playing new records to actors like Patrick Stewart reading sonnets was a balm.
  6. Scarcity: it was and is a shock to see sections of the grocery store still empty. Eventually it will return, and toilet paper will go back to being a loss leader versus a scarce product.
  7. Fear: lots of people seem anxious and down, understandably. The efforts of people to deal with that has been a comfort.
  8. Making things: Also, since I seem to have more time, I made a zine, did some painting, wrote some python code to process KML.  Blogged, of course.
  9. Food: Like many  people, I am baking and cooking. I mean, what else can you do? I miss restaurants and cafes and bookstores, though. They feed me with more than food.
  10. Other things: I thought this was a good piece on parenthood: https://www.theschooloflife.com/thebookoflife/the-task-of-parenthood/.  Nicholson Baker followed me on Twitter. Whenever I have interactions with prominent people, I think: oh, I should get serious now and not look the fool. But it doesn’t last for long.
Quote

Fun Fluorescent Sculpture because we could use some fun right about now

For more, check out:  Fluorescent Cacti and Leaf Sculptures by Nobel Truong from the great art site,  Colossal

Quote

How to clean with vinegar

Hey. You’re home. You feel: I might as well clean this place. Or maybe you want to get started on your spring cleaning. Good. Here’s a great list of how you can replace many of your kitchen cleaning products with just vinegar (and maybe a bit of water): 18 Places You Should Be Cleaning with Vinegar in Your Kitchen | Bon Appétit

Save money. Cut out those terrible chemicals. Learn some skills. 🙂

Quote

Are you a Canadian business wanting a primer on Canada’s COVID-19 Economic Response Plan?

Then check this out:  A quick guide for businesses navigating Canada’s COVID-19 Economic Response Plan | IT Business

Quote

How to get more cooperation from your kids regarding chores and morning activities

For people struggling with their kids while they work from home, this piece from The New York Times in 2018 might help. I think a lot depends on the personality of the child, but for some of you, it just might be the thing you need. In a nutshell, they did this:

We devised a personalized morning checklist for each child — with their input. And we created a breakfast menu and a lunch menu, just like the ones they give you in hotels. We’re talking the works here. For breakfast the children can have cereal, muffins, eggs however they want, smoothies. You name it! And the lunch menu is equally expansive. Each night the kids complete their menus for the next day’s breakfast and lunch.

How to whip your inbox into shape? Do this.

Are you one of those people who have hundreds if not thousands of emails in your inbox? Would you like to get down to Inbox Zero? Or Maybe Inbox 99? If so, try this approach:

1) First, for these next few steps, you will not open or read ANY emails. Just look at your inbox.
2) Second, sort your emails by sender. Go through and delete all emails you don’t need: email from people you don’t know or don’t care to respond to, emails from mailing lists (don’t worry, they will send you more), unsolicited email, spam, emails from your ex, etc. Delete delete delete. Read nothing.
3) Third, sort your emails by date. Delete all emails that are a year old or more. Can’t bear to do that for some reason? Then if you must, create a folder called “Attic” or “Basement” and put them there. (You will no more read them then you will look at the stuff you have stuffed in your real attic or basement either, but if it makes you feel better). Again, no reading: delete or file.
4) Ok, you have emails from the past year. Go through and sort them by subject. See all those emails with the same subject, or the “re: re:…”. Chances are you only need to keep one of those. Then delete the rest.
5) Now sort them again by date. Go to the oldest. For everyone you see, ask yourself: is this referring to something that’s over or resolved? If so, delete it or put it in the Attic folder.
6) Go through emails from newsletters. Open only to UNSUBSCRIBE. Otherwise delete.
7) Reminders for bills, etc. Write that down then file or delete.
8) Meetings that have past? Delete.

Now whatever emails you have, you can open. Try to skim them, but do this:
1) If it is an FYI, file or delete. Do NOT reply.
2) If someone did you a favor or a service, reply through non-email: a message, text or phone message even. Do not reply by email.
3) If it is a complex email, figure out what the ACTUAL request is. Write it down. Send them an email just with the request and your response; file or delete the other email.

Now the only emails you have left that are either from colleagues or family and friends. Deal with the most important ones first. Of those, make lists of what they are asking. Then consider whether to just deal with them the next time you see them. Whenever possible, do not reply via email.

By this point you should have alot less email. Look at you being all productive and efficient. Congrats! You did good.

Quote

Adafruit goes to war against the coronavirus

That’s a bit dramatic, but Adafruit (a tech company I love) has been deemed an essential service and is helping to manufacture things needed in the fight against it. I am happy to see that.

Here’s a bit from them saying who they are and what they are doing. Awesome!

Adafruit is a 100% woman-owned, loan-free, VC-free. profitable, USA Manufacturing company. Please see our about page and press page to read about us. Our founder and lead engineer is Limor Fried, a MIT Electrical Engineer.

We have paused some operations in NYC due to COVID-19, we are paying all team members, contractors, and more. There are no layoffs for 130+ Adafruit team members.

Adafruit was deemed an essential service to distribute/make some PPE (Personal Protection Equipment) such as face shields, and manufacturer electronics for essential life-saving/preserving equipment and developement which is needed in New York and beyond.

Adafruit Industries located at 150 Varick Street, New York, NY 10013 by Executive Order 202.6, “Essential Business” by New York State:
https://esd.ny.gov/guidance-executive-order-2026

via Adafruit Industries, Essential service and business: NYC – Executive Order 202.6 Capabilities and more #NewYorkTough #NewYorkStrong #adafruitchronicles @adafruit « Adafruit Industries – Makers, hackers, artists, designers and engineers!

Image

Should you go out during a time of social distancing? A simple flowchart to help you decide

Note: this is meant to be humorous. For proper guidance, please refer to your local government of medical authorities for assistance.

Quote

Is Cloud Computing Green?

It depends on how you measure it, but according to this New York Times Article, cloud computing has brought environmental benefits.

The article starts with this:

The computer engine rooms that power the digital economy have become surprisingly energy efficient.

A new study of data centers globally found that while their computing output jumped sixfold from 2010 to 2018, their energy consumption rose only 6 percent. The scientists’ findings suggest concerns that the rise of mammoth data centers would generate a surge in electricity demand and pollution have been greatly overstated.

That’s good. The other good thought here is that centralized computing can continue to drive out efficiencies that distributed computing can not.

All in all, one more reason for companies to embrace cloud computing.

Quote

Ikea, in Architectural Digest, no less


So yesterday I highlighted that fast furniture is low cost and not great. Is it possible to have low cost furniture that is also good and stylish? I think you can, if you stick to the products listed here: The 13 Most Popular IKEA Products | Architectural Digest

If you mix them in with other furniture, or style them well, you can have a well furnished home that looks great and doesn’t cost much.

Quote

On “Fast Fashion” Furniture


This piece
outlines how “fast-furniture” manufacturers have take a page from the book of fast fashion manufacturers and have gone on to make visually appealing but physically awful furniture.  It says:

Fast-furniture manufacturers (are) giving shoppers an opportunity to buy trend-informed furniture at a price that doesn’t force them to pretend they’re investing in the future. Wasteful though it may be, it doesn’t necessarily make sense to buy an expensive sofa if you don’t know where you’ll be living in a year.

So it should come as little surprise that much of this furniture isn’t great.

People want new furniture. They want to transition from stuff they find on the side of the road, or from IKEA, or even hand me downs from their family. But they don’t have the money or the patience to buy better pieces. This creates the fast furniture market.

File under “you get what you paid for”. Worth a read. Especially if you are attracted to the look and the price of some of these pieces.

In Defense of Self-Help Books

A strong defense of self help books can be found here: On Self-Help Books | The Book of Life.

Essentially the argument is that the genre has been overtaken and is associated with people like this:

And not associated with this:

We need a list of good self help books, classic and current. Unfortunately, even lists with the so called best self-help books of all time  are lacking in literary qualities. That’s a shame.

I think we need a new list of self-help books then, a list stretching  from the classics such as the Dhammapada and the Bible and the Meditations of Marcus Aurelius, all the way to present day books like In Search of Meaning. A new list of books that help us live better lives but that are good as books themselves. It’s time for such a list, and time for the current list of self-help books to take a backseat to this new list.

 

Quote

On ventilators

I’m not a ventilator expert, but I am curious as to what it takes to get more to patients who are sick due to COVID-19. This will give you some answers as to what it takes to get more out there: Why U.S. hospitals don’t have enough ventilators – The Washington Post

Quote

Five ways to think about flattening the curve and other things related to COVID-19

Chances are you’ve seen this chart: it’s strongly related to the justification for all the dramatic changes that have been happening. Now there’s some counterarguments that it will not work: Squashing the curve? | plus.maths.org

First off, the chart is a model, and like all models, it makes assumptions. For COVID-19, the first  assumption it makes is that the outbreak will rise and then drop off. I am not sure this is true, and I don’t know if anyone else is certain either. There are good reasons to make this assumption, but certainty will come later.

Another big assumption this chart makes is that social distancing will bring the cases down so that there is enough health care capacity to handle it. I think social distancing will bring things down, but the health care capacity could still be overwhelmed.

Is social distancing useless then? I think that is the wrong question, and the wrong way of thinking about things. So how should you think about things?

First: think skeptically. I would say you should keep an open mind but be skeptical about information on the Internet. Things are changing all the time, and there is so much we don’t know. Be doubtful of anyone with strong certainty about this.

Second: think optimistically. My thinking was pessimistic before, but I think I am changing to being optimistic about how we deal with the disease. There are lots of positive signs out there and there are many people working to get more resources thrown at this.  It will make a difference.

Third: think maximally.  Continue to wash yourself with soap often. Continue to practice social / physical distance. Continue to do anything that a recognized authority says will help. More action is better than little or no action. Some action may be no better than eating chicken soup, but you don’t know. Just make sure you are following a recognized authority.

Fourth: think practically. You have to make tradeoffs. Some people have to travel outside to get to work or get groceries.  Try to minimize them. But don’t beat yourself up either. Do the best you can. Be cautious, but don’t panic.

Fifth: think and act healthy. The better you take care of your health, the better off you will be. There are other ways to get sick besides COVID-19 that could also land you in the healthcare system. That won’t help.

Quote

On two risks regarding taking an “abundance of caution” approach to danger

With regards to the coronavirus and what to do about it, I see many cases of  overreaction. Specifically I see people and organization saying they are taking an abundance of caution when it comes to deciding how to act.  And to me, an abundance of caution is equivalent to overreacting. With this overreaction, I see two longer term risks:

Risk one: people get desensitized to future risks because the current models of danger let them down.  An example of this, via Conundrum: Why People Do Not Listen to Evacuation Orders – Scientific American:

The fact that we failed to catch this intensification has had a counterproductive effect,” said Berrien Moore, director of the University of Oklahoma’s National Weather Center. “People tend to say, well, it’s uncertain, or it wasn’t predicted. And that leads to inaction. … Our models have let us down.”

Desensitization makes it harder to react the next time an outbreak occurs.

Risk two: it’s not a sustainable approach. We take risks all the time: when we drive to work, when we cross the street, the food we eat, the places we visit, all of these have risks associated with them. We assess the risk (sometimes poorly) and try to make rational decisions. We don’t tend to decide with an abundance of caution, because to do so is to severely limit what we can do. The tradeoffs we make when we decide that way end up harming us overall.

Desensitization and sustainability may not be big concerns if this outbreak is a rare event. If it is not rare but something we start seeing regularly, then this abundance of caution response may harm future efforts to control such contagions.

If you believe this is a rare event, then the benefit of overreaction makes sense. If you do not believe it is, then overreaction will cause problems in the future.

 

Quote

How to wash your hands better


The number one thing you can do to stay well is wash your hands often, and chances are you are doing it wrong by missing spots. For more on how to do it right, see: Map of Areas Most Often Missing During Handwashing

Quote

The decline of youth hockey in Canada

The other day I wrote of the decline of start up tech. Today, I’m writing about the decline of youth hockey in Canada, as written about here: In Canada, the Cost of Youth Hockey Benches the Next Generation – The New York Times.

The chief reason for the decline is due to costs. If anything, the article understates the cost. The other big reason is organized hockey.  There’s much money to be made from parents wanting the best for their sons and daughters who want to play hockey: you can wring thousands of dollars from them. And wring they do. The clubs, the coaches, you name it, there is someone making a buck from hockey teams. Hockey plays are streamed from an early age, and the faster you can stream kids onto certain “elite” teams, the more you can start charging more for the privilege of them being there.

Not that the parents are pure victims. Lots of parents want their kids to make the big leagues or college teams and those parents press hard for their kid to be on the more expensive teams. It all adds up. If anything, it adds up to something more and more families can’t afford. Read the piece linked to above and you’ll get a better grasp of it.