Skip to content

Software Development Blogs: Programming, Software Testing, Agile Project Management

Methods & Tools

Subscribe to Methods & Tools
if you are not afraid to read more than one page to be a smarter software developer, software tester or project manager!

Feed aggregator

Project Success Means Knowing ...

Herding Cats - Glen Alleman - Mon, 02/27/2017 - 19:08

To increase the Probability of Project success means we have to know something about the attributes and measures of the Five Immutable Principles that enbale this project success, when managing in the presence of uncertainty

All engineering projects, including software projects, are a constrained optimization problems. How do we take the resources we have and deliver the best outcomes requested by those paying?

The answer is to apply the microeconomics of decision-making to the problem. Unlike models of mechanical engineering or classical physics, the models of microeconomics are never precise. They are probabilistic and statistical models, driven by the underlying processes of the two primary actors - suppliers and consumers. The suppliers provide solutions. The consumers define what is needed. The Developers and the Customers in the software development world. Both these actors live in the presence of uncertainty. Uncertainty in knowledge (epistemic uncertainty) and uncertainty of the natural forces in the project (Aleatory uncertainty). Both these uncertainties create a risk to the success of the project. Epistemic uncertainty can be reduced. Aleatory uncertainty can only be addressed with margin.

The suppliers provide solutions. The consumers define what is needed. The Developers and the Customers in the software development world. Both these actors live in the presence of uncertainty. Uncertainty in knowledge (epistemic uncertainty) and uncertainty of the natural forces in the project (Aleatory uncertainty). Both these uncertainties create a risk to the success of the project. Epistemic uncertainty can be reduced. Aleatory uncertainty can only be addressed with margin.

Making decisions in the presence of these uncertainties on software development projects means calculating or assessing the probability that some future event may impact our goal. As successful managers and developers, we should be interested in making decisions about our future actions, in the presence of this uncertainty, so that we satisfy goals along the way to Done.

This means Knowing 5 Immutable things about the project...

  • Knowing what Done looks like in units of measure meaningful to the decision makers.
  • Knowing what plans and schedules are needed to reach Done at the needed time, for the needed cost, with the needed technical and operational capabilities.
  • Knowing what resources are needed to produce these capabilities.
  • Knowing what impediments will be encountered along the way, and how those impediments will be handled, reduced, or avoided.
  • Knowing how to measure progress to plan, schedule, reduce impediments, and deliver the needed capabilities.

This knowing means knowing in the presence of uncertainty to a degree of precision and accuracy needed to make decisions

In order to know the precision and accuracy needed to make decisions, in the presence of uncertainty, we must start with estimating what is possible, estimating the attributes and measures of the needed outcomes of the work activities, that produce the capabilities for the needed cost and schedule.

  • Estimating what Done looks like in units of measure meaningful to the decision makers.
  • Estimating what Plans and Schedules will be needed to reach done.
  • Estimating what Resources we will need to reach done.
  • Estimating what Impediments will be encountered.
  • Estimating the Progress to plan that will be needed to arrive at done.

All of these knowables and the estimates of the work and the outcomes of that work, operate in the presence of uncertainty. When we operate in the presence of this uncertainty, estimating is needed to inform the decision makers along the path to success. Without this estimating process, we have no ability to assessing the past data in the presence of this uncertainty in order to Know, to the needed degree of precision and accuracy, to make informed decisions about the future. 

Without estimates, we'll be driving in the dark with the lights off

Categories: Project Management

Business Case for Serverless

You can’t pick a technical direction without considering the business implications. Mat Ellis, Founder/CEO of Cloudability, in a recent CloudCast episode, makes the business case for Serverless. The argument goes something like:

  • Enterprises know they can’t run services cheaper than Amazon. Even if the cost is 2x the extra agility of the cloud is often worth the multiple.

  • So enterprises are moving to the cloud.

  • Moving to the cloud is a move to services. How do you build services now? Using Serverless.

  • With services businesses use a familiar cost per unit billing model, they can think of paying for services as a cost per database query, cost per terabyte of data, and so on.

  • Since employees are no longer managing boxes and infrastructure they can now focus entirely on business goals.

  • There’s now an opportunity to change business models. Serverless will make new businesses economically viable because they can do things they could never do before based on price and capabilities.

  • Serverless makes it faster to iterate and deploy new code which makes it faster to find a proper product/market fit.

  • Smaller teams with smaller budgets with smaller revenues can do things now that only big companies could do before. Serverless attempts to industrialise developer impact.

  • Consider WhatsApp, which sold to Facebook for $19 billion with only 55 employees. If we’re going to see the first single employee billion user multi-billion dollar valuation startup it will likely be built on Serverless.

Categories: Architecture

Fixing “HNS failed with error : Unspecified error” on docker-compose for Windows

Xebia Blog - Mon, 02/27/2017 - 00:44

The past few days I worked quite a lot with docker-compose on my windows machine and after something strange happened to my machine that crashed it, I was not able to start any containers anymore that had connectivity over the network with each other. Every time I used the command-line docker-compose up, I would get […]

The post Fixing “HNS failed with error : Unspecified error” on docker-compose for Windows appeared first on Xebia Blog.

SPaMCAST 432- Leadership Types, On-Boarding, Surprises in QA, Holy Trinity

SPaMCAST Logo

http://www.spamcast.net

Listen Now
Subscribe on iTunes
Check out the podcast on Google Play Music

The Software Process and Measurement Cast 432 begins with an essay on the impact of leadership types on adopting and sustaining Agile.  Leadership style has a direct impact on an organization’s ability to adopt and sustain Agile.  Some leadership styles are more supportive, while others evoke more of a response that is epitomized by locking feral cats and dogs in a room (nobody wins).

Next up, Jeremy Berriault brings his QA Corner to the cast to discuss surprises in QA testing.  Visit Jeremy’s blog at https://jberria.wordpress.com/  Next we will have a column from The Software Sensei, Kim Pries.  Kim discusses the holy trinity of forethought, execution and follow through. Reach out to Kim on LinkedIn. Last, but not least, Jon M Quigley brings his column, the Alpha and Omega of Product Development, to the Cast. In this segment, Jon discusses on-boarding. On-boarding new people is critical even if the person is just joining from another team down the hall.  One of the places you can find Jon is at Value Transformation LLC.

Re-Read Saturday News

This week  we tackle Chapter 5 in Carol Dweck’s Mindset: The New Psychology of Success (buy your copy and read along).  In Chapter 5, Dweck uses examples from the business world to illustrate and elaborate on fixed and growth mindsets.

Every week we discuss a chapter then consider the implications of what we have “read” from the point of view of someone pursuing an organizational transformation and also how to use the material when coaching teams.  

Remember to buy a copy of Carol Dweck’s Mindset and read along!

Visit the Software Process and Measurement Cast blog to participate in this and previous re-reads.

Feedback on SPaMCAST 428 with Mark Bojeun.  Dan  Stafford  wrote to Mark and said, “ Great talk Mark, insightful as ever.  Open and honest communication is such an important tenet.”   (Listen Now)

Do you have thoughts and comments you would like to share?  Email us at spamcastinfo@gmail.com

Next SPaMCAST

In the Software Process and Measurement Cast, Jeff Dalton returns to discuss holacracy.  Jeff has implemented holacracy in his own firm and others  and has a lot to share about this exciting form of management and leadership.

Shameless Ad for my book!

Mastering Software Project Management: Best Practices, Tools and Techniques co-authored by Murali Chematuri and myself and published by J. Ross Publishing. We have received unsolicited reviews like the following: “This book will prove that software projects should not be a tedious process, for you or your team.” Support SPaMCAST by buying the book here. Available in English and Chinese.


Categories: Process Management

SPaMCAST 432- Leadership Types, On-Boarding, Surprises in QA, Holy Trinity

Software Process and Measurement Cast - Sun, 02/26/2017 - 23:00

The Software Process and Measurement Cast 432 begins with an essay on the impact of leadership types on adopting and sustaining Agile.  Leadership style has a direct impact on an organization’s ability to adopt and sustain Agile.  Some leadership styles are more supportive, while others evoke more of a response that is epitomized by locking feral cats and dogs in a room (nobody wins).

Next up, Jeremy Berriault brings his QA Corner to the cast to discuss surprises in QA testing.  Visit Jeremy's blog at https://jberria.wordpress.com/  Next we will have a column from The Software Sensei, Kim Pries.  Kim discusses the holy trinity of forethought, execution and follow through. Reach out to Kim on LinkedIn. Last, but not least, Jon M Quigley brings his column, the Alpha and Omega of Product Development, to the Cast. In this segment, Jon discusses on-boarding. On-boarding new people is critical even if the person is just joining from another team down the hall.  One of the places you can find Jon is at Value Transformation LLC.

Re-Read Saturday News

This week, we tackle Chapter 5 in Carol Dweck’s Mindset: The New Psychology of Success (buy your copy and read along).  In Chapter 5, Dweck uses examples from the business world to illustrate and elaborate on fixed and growth mindsets.

Every week we discuss a chapter then consider the implications of what we have “read” from the point of view of someone pursuing an organizational transformation and also how to use the material when coaching teams.  

Remember to buy a copy of Carol Dweck’s Mindset and read along!

Visit the Software Process and Measurement Cast blog to participate in this and previous re-reads.

Feedback on SPaMCAST 428 with Mark Bojeun.  Dan  Stafford  wrote to Mark and said, “ Great talk Mark, insightful as ever.  Open and honest communication is such an important tenet.”   (Listen Now)

Do you have thoughts and comments you would like to share?  Email us at spamcastinfo@gmail.com

Next SPaMCAST

In the Software Process and Measurement Cast, Jeff Dalton returns to discuss holacracy.  Jeff has implemented holacracy in his own firm and others  and has a lot to share about this exciting form of management and leadership.

Shameless Ad for my book!

Mastering Software Project Management: Best Practices, Tools and Techniques co-authored by Murali Chematuri and myself and published by J. Ross Publishing. We have received unsolicited reviews like the following: “This book will prove that software projects should not be a tedious process, for you or your team.” Support SPaMCAST by buying the book here. Available in English and Chinese.

Categories: Process Management

Azure Hidden Gems: Resource Policies

Xebia Blog - Sun, 02/26/2017 - 16:30

Today I want to show a really useful Azure feature to help you with the governance of your Azure Subscriptions: Azure Resource Policies: Resource policies enable you to establish conventions for resources in your organization. By defining conventions, you can control costs and more easily manage your resources. For example, you can specify that only […]

The post Azure Hidden Gems: Resource Policies appeared first on Xebia Blog.

Mindset: The New Psychology of Success: Re-Read Week 5, Chapter 5: Business: Mindset and Leadership

Mindset Book Cover

Today we are lead into Chapter 5 in Carol Dweck’s Mindset: The New Psychology of Success (buy your copy and read along).  In Chapter 5,  we explore the impact of mindsets in the business environment.  The impact of mindsets can be seen in positive and negative business outcomes.  Dweck begins this section with a focus on the negative impact of the fixed mindset at the C level in business.

One of the primary examples used in Chapter 5 is Enron. Enron, (watch the movie Enron: The Smartest Guys in the Room for background) represents one of most egregious examples of excess, corruption and the impact of leaders of the modern age.  Some, if not a majority, of the poor behavior described can be ascribed to the fixed mindset,  both individually and collectively.  The fixed mindset culture of an organization creates an environment in which employees are forced to look and act extraordinarily talented rather than focusing on outcomes. In organizations with fixed mindset, people protect their egos and how they perceived rather than learning from any potential bump in the road. A quote that illustrates Jeffrey Skilling’s fixed mindset drives the point home, “my genius not only defines and validates me. It defines and validates the company. It is what creates value. My genius is profit.”  In Skilling’s mind, he was more important than the business. Dweck also uses the example of Lee Iacocca as the big fish that that would only tolerate helper fish around him. For example, Iacocca used saving Chrysler recover his ego but then was not able to stop burnishing his ego, which nearly lead to nearly destroying Chrysler when things got difficult a second time around.  None of those around Iacocca were able to shift his focus back to the organization rather than his reputation, and the board had to finally force him out. Iacocca, like Skilling at Enron, is an example of someone who makes decisions based on their own good rather than the good of the organization

Jim Collins, author of Good to Great found that organizations that were continuously trying to improve performance through learning and were self-effacing about their progress prospered.  These attributes are a reflection of a growth mindset at the organizational level. One of the reasons organizations with a growth mindset prosper is that leaders with a growth mindset usually surround themselves with great teams rather than having to be the big fish with helpers.

Another negative outcome of a fixed mindset is brutal managers. Brutal managers (I chose not to use the word leader) believe that the needs or feelings of others can be ignored. A fixed mindset allows brutal managers to dehumanize those they manage.

Another danger for organizations (or teams) that are affected by a fixed mindset is groupthink.  It is an affliction where no one will criticize or provide outside information to the leader.  This form of fixed-mindset groupthink needs to find some mechanism to bring in other information so that you don’t fall prey to thinking within a bubble.

On the other hand, growth-oriented leaders peruse a journey of learning.  Dweck’s examples of growth mindset oriented leaders include:

  •    Jack Walsh, GE, was devoted to the concepts of team and growth.  Walsh is not my favorite example because of concepts like cutting the bottom 10% yield negative behaviors. However, this does not reflect a mindset issue.
  •    Lou Gerstner, IBM, opened lines of communication, attacked elitism, accepted that everyone has a lot to offer and focused on customers.
  •    Anne Mulcahy, Xerox, reshaped the company to believe in growth even though it required cutting and suffering.  Mulcahy worried about the morale and development of her people. 

In each case, the growth mindset CEO helped to lead their companies from near failures to highly innovative growth phases.

The chapter concludes with a set of questions and activities that help grow your mind.  For instance: Reflect on whether your workplace promotes groupthink while eschewing information that might challenge the status quo.

Organizational Transformation:  The prevailing organizational mindset, generally set by senior leaders will directly affect how and why change is introduced into an organization.  When helping to introduce change into an organization lead by someone with a fixed mindset, the change has to be perceived to burnish the leader’s ego and has to fix the leader’s world view.  This does not sound like a huge amount of fun; however, the knowledge of mindsets is an effective tool to help introduce change or to challenge groupthink.

Team Coaching:  The most valuable takeaway for a team-level coach is the added ability to recognize mindsets based on the impact they have on the team. In addition, helping teams understand the mindsets around them is also useful for helping the team understand the possible considerations and consequences of changes they attempt.

Previous Entries of the re-read of Mindset:

 


Categories: Process Management

Quote of the Day

Herding Cats - Glen Alleman - Fri, 02/24/2017 - 21:50

Simplicity is key, because it is tied up with being fundamental - Harvey Freidman

Now the question really becomes - how simple is simple enough? When we hear some phrase like this, and we don't hear the units of measure of how simplehow to reach simple, then there is only a platitude - no actionable outcomes. How can we measure simplicity? How can we measure the coupling and cohesion of all the parts that make up a simple design, process, or system - to confirm the result is the simplest? How can we learn to ignore the platitudes of those making claims about simple systems are the best when they provide units of measure of the systemsimple, or best?

So remember

Explanations exist; they have existed for all time; there is always a well-known solution to every human problem — neat, plausible, and wrong. - H.L. Mencken

Categories: Project Management

Keeping up to Date with the Support Library

Android Developers Blog - Fri, 02/24/2017 - 19:25
Posted by Agustin Fonts, Product Manager, Android Support Library

It's important to keep current when you're dealing with technology. That’s why we're constantly working to improve the quality of our software, particularly libraries that are linked into your apps, such as the Support Library.  The Support Library is a suite of libraries that provides backward compatibility along with additional features across many Android releases.

We have just released version 25.2 of the Support Library.  If you're making use of the android.support.v7.media.MediaRouter class in revision 25.1.1 or 25.1.0, we strongly recommend that you update due to a known issue.  If you haven't updated recently, you've missed out on some great bug fixes such as these:

25.2:
  • Corrected a severe mediarouter issue in which using an A2DP Bluetooth device and media routing APIs could cause the device to become unresponsive, requiring a reboot
  • Showing a slide presentation with screen mirroring no longer causes the device to disconnect from Wi-Fi
  • Media button now properly handles media apps that did not register themselves with setMediaButtonReceiver()
  • TextInputLayout correctly overlays hint and text if text is set by XML (AOSP issue 230171)
  • Corrected a memory leak in MediaControllerCompat (AOSP issue 231441)
  • RecyclerView no longer crashes when recycling view holders (AOSP issue 225762)
Reporting (and fixing) a Bug
The Support Library is developed by the Android Framework and Developer Relations teams, and, just like the Android platform, you can file bugs using the AOSP issue tracker, or submit fixes to our Git repository. Your feedback is critical in helping us to make the Support Library the most productive environment to use for developing Android applications.
Categories: Programming

Stuff The Internet Says On Scalability For February 24th, 2017

Hey, it's HighScalability time:

 

Great example of Latency As A Pseudo-Permanent Network Partition. A slide effectively cleaved Santa Cruz from the North Bay by slowing traffic to a crawl.
If you like this sort of Stuff then please support me on Patreon.
  • 40 TFLOPS: on Lambda; 7: new habitable planets with good beer; dozens: balloons needed in Loon network; 500 TB/sec: rate at which DNA is copied in human body; 1/2: web is encrypted; 34: regions in Azure; $8k: cost of Tesla self-driving hardware; 99.95%: DMCA takedowns are bot BS; 300 nanometers: new microscope; 7%: AMP traffic to publishers; 

  • Quotable Quotes:
    • @jasonlk: Elon Musk: Self-Driving Car Revolution Will Leave 15% of World Population Without Jobs
    • Near death Archimedes: Stand away, fellow, from my diagram!
    • rumpelstilskin21: Angular and React make for popular headlines on reddit but unless you are working for a major, large web site where such things might be deemed useful by management (and no one else) then quit trying to get educated by the amateurs on reddit.
    • StorageMojo: There is a new paradigm about to hit the industry, which will eviscerate large portions of the current storage ecosystem. Like other major shifts, it is powered by a class of users who are poorly served by existing products and technologies. But if our digital civilization is to survive and prosper, it has to happen. And it will, like it or not.
    • ThatMightBePaul: Worst case scenario: you try Go, don't like it, and you head back to Node more confident that it fits you better. That's still a pretty positive outcome, imo. So, invest the time in Go, and then see which feels right :)
    • Russ: it is the job of the application to properly figure out the network’s limits and try to live within them.
    • World's Second-Best Go Player: After humanity spent thousands of years improving our tactics, computers tell us that humans are completely wrong. I would go as far as to say not a single human has touched the edge of the truth of Go.
    • @mjpt777: After fixing a few more false sharing issues we shaved another ~350ns of Aeron's RTT between machines.
    • @thomasfuchs: 1997: Let’s make a website! *fires up vi* 2007: Let’s make a website! *downloads jQuery* *fires up vi* 2017: Let’s make a website! [very long list of tech]
    • Basho: Do not follow the ancient masters, seek what they sought.
    • hellofunk: If many years ago, someone told me that a humongous company named Alphabet was thinking about deploying balloons all over the world, I'd have told you a thing or two about having a charming imagination. 
    • Russ: Sure, the Internet is broken. But anything we invent will, ultimately, be broken in some way or another. Sure the IETF is broken, and so is open source, and so is… whatever we might invent next. We don’t need a new Internet, we need a little less ego, a lot less mud slinging, and a lot more communication. 
    • @sAbakumoff: Analyzed the sentiment of 80000 Github Commit Comments, it seems that Ruby devs tend to be pretty positive, but c++ are angriest ones!
    • Michael Sawyer: The YouTubers' common enemy is YouTube
    • @jannis_r: "Good size for a microservice: if it fits into one engineers head" @adrianco #AWSTechBreakfast
    • packagecloud: setting [TZ] environment variable can save thousands (or in some cases, tens of thousands) of unnecessary system calls that can be generated by glibc over small periods of time. 
    • @istanboolean: "Hardware has stopped getting faster. Software has not stopped getting slower." @rob_pike
    • Greg Meddles: You're out of memory on some particular Amazon instance, so you bump up to the next biggest in size. That is always the naive solution. Whatever you're doing, you'll usually end up doing more of it. Eventually, you'll end up throwing good money after bad.
    • @viktorklang: Replace the use of sequential, concurrent, and parallel with dependent, coordinated, and independent? Thoughts?
    • Coast Guard Vice Adm. Marshall Lytle: Cyberwarfare is like a soccer game with all the fans on the field with you and no one is wearing uniforms
    • CockroachDB: If you’re serious about building a company around open source software, you must walk a narrow path: introduce paid features too soon, and risk curtailing adoption. Introduce paid features too late, and risk encouraging economic free riders. Stray too far in either direction, and your efforts will ultimately continue only as unpaid open source contribution
    • Veratyr: Deployment [of k8s] is just so much harder than it should be. Fundamentally (I discovered far later on in the process), Kubernetes is comprised of roughly the following services: kube-apiserver, kubelet, kube-proxy, kube-scheduler, kube-controller-manager. The other dependencies are: A CA infrastructure for certificate based authentication, etcd, a container runtime (rkt or Docker) and CNI.
    • @jbeda: I want to go on record: the amount of yaml required to do anything in k8s is a tragedy. Something we need to solve. 

  • What do you get for $5? Quite a lot. $5 Showdown: Linode vs. DigitalOcean vs. Amazon Lightsail vs. Vultr: Linode’s new plan is not only offering the consistently better performance...Linode is still a bit behind the curve when it comes to things like block storage volumes, default SSH keys and yeah, their UI.

  • Another wonderful engineering post from Riot Games. Under the hood of the League Client's Hextech UI: Any given build of the League client is expressed as a list of units called plugins... Back-end plugins that deal purely with data are written as C++ REST microservices...front-end plugins that deal with presentation are written as Javascript client applications and run inside Chromium Embedded Framework...The League client update really is a desktop deployment of an entire constellation of microservices...APIs are thoughtfully designed, any arbitrary combination of features can run cooperatively...In the League client, the common pattern is for dependencies to flow upwards...a WebSocket that allows the front-end plugins to observe back-end plugins for changes...To make implementation of complex video-based elements simpler, we created a state machine library based on Web Components...League client is patched out to players’ local drives, it doesn’t have the same immediate bandwidth constraints...we provide a number of purpose-specific audio channels - UI SFX, Notifications, Music, Voiceover, etc. - through a plugin dedicated to managing audio...We use straight-up native Custom Elements with heavy usage of Shadow DOM.

  • Does insurance cover this? The first SHA1 collision.

Don't miss all that the Internet has to say on Scalability, click below and become eventually consistent with all scalability knowledge (which means this post has many more items to read so please keep on reading)...

Categories: Architecture

The Pros for Big Bang Change Implementation

Vinigear Bottles

Not Sweet But Useful!

A big bang adoption of a process or system is an instant changeover, a “one-and-done” type of approach in which everyone associated with a new system or process switches over in mass at a specific point in time.  There are positives and negatives to big bang approaches.  We begin with the positives.

Patrick Holden, Project Portfolio Director – Software Development at SITA, struck a fairly common theme when asked about his preferences between the big bang and incremental approaches.  

While I favour incremental improvement, sometimes we really want to get on with the new, to change the mail system, phone, house, car or even your job you will need to prepare to different extents but you make the switch for one and all, it’s a Big Bang.  

The choice depends on divisibility, scope, and urgency.

The positives:

Big Bangs fit some types of changes.  Not all changes are easily divisible into increments which lead to an all or nothing implementation. As I have noted before, most of the bank mergers I was involved in were big bangs.  On a specific day, all of the branches of one bank would close and overnight (more typically over a weekend) lots of people would change signs on buildings, customer files, and software systems. Perhaps it was a failure in imagination, but due to regulations and the need for notifications, it was easier for everyone to change at once.  Organizational transformations rarely have the same external drivers, regulations and notification rules; however, because of interactions between teams, it might be easier not to take an incremental approach.  Adoptions of large scale Agile methods and frameworks such as SAFe are often approached in a big bang manner. In SAFe many teams and practitioners are indoctrinated, trained and transformed together which by definition is a big bang approach to implementing scaled Agile.

Big Bangs generate a too big to fail focus.  Large, expensive, and risky changes create their own atmosphere.  These types of implementations garner full management sponsorship and attention because they are too big to fail.  Christine Green, IFPUG Board Member, suggests, “it is harder to lose focus on big bang approaches when organizational leadership changes.” Big bangs can be used to address the risk of a loss of focus in some cases.  An example of an organization manufacturing a too big to fail scenario can be found in the often-told story of the early years of Fedex (Federal Express at the time).  It was said that the founder consciously borrowed money from smaller regional banks around Memphis so that he could use the impact of the risk of default to negotiate better service and rates.  Big bang changes are often too big to fail and therefore people ensure they don’t.

Management Expectations.   In many circumstances, management has little patience for the payback of continuous process improvement. As I was framing this theme, Christopher Hurney stated, “I’ve seen leadership expect Big Bang results in Agile adoptions, which is kind of ironic no? Considering that one of the precepts of Agility is an iterative approach.” The expectation is often generated by a sense of urgency.  In this situation, a specific issue needs to be addressed and even though an incremental (or even iterative) approach would deliver bits and pieces sooner, the organization perceives value only when all of the benefits are delivered.  The Healthcare.gov marketplace was delivered as a big bang.

Even if the big bang approach to process improvement feels wrong, however, there are reasons for leveraging the approach. Chris Hurney stated that decision makers “tend to feel as though they’ve reached a point where a process has become unsustainable” which makes the idea of implementing a change all at once worth the risk even though nearly everyone would prefer an incremental or continuous approach to change.

Previous Entries in the Big Bang, Incrementalism, or Somewhere In Between Theme

1. Big Bang, Incrementalism, or Somewhere In Between

Next:  Big Bang, The Cons!

 


Categories: Process Management

The Pros for Big Bang Change Implementation

Vinigear Bottles

Not Sweet But Useful!

A big bang adoption of a process or system is an instant changeover, a “one-and-done” type of approach in which everyone associated with a new system or process switches over in mass at a specific point in time.  There are positives and negatives to big bang approaches.  We begin with the positives.

Patrick Holden, Project Portfolio Director – Software Development at SITA, struck a fairly common theme when asked about his preferences between the big bang and incremental approaches.  

While I favour incremental improvement, sometimes we really want to get on with the new, to change the mail system, phone, house, car or even your job you will need to prepare to different extents but you make the switch for one and all, it’s a Big Bang.  

The choice depends on divisibility, scope, and urgency.

The positives:

Big Bangs fit some types of changes.  Not all changes are easily divisible into increments which lead to an all or nothing implementation. As I have noted before, most of the bank mergers I was involved in were big bangs.  On a specific day, all of the branches of one bank would close and overnight (more typically over a weekend) lots of people would change signs on buildings, customer files, and software systems. Perhaps it was a failure in imagination, but due to regulations and the need for notifications, it was easier for everyone to change at once.  Organizational transformations rarely have the same external drivers, regulations and notification rules; however, because of interactions between teams, it might be easier not to take an incremental approach.  Adoptions of large scale Agile methods and frameworks such as SAFe are often approached in a big bang manner. In SAFe many teams and practitioners are indoctrinated, trained and transformed together which by definition is a big bang approach to implementing scaled Agile.

Big Bangs generate a too big to fail focus.  Large, expensive, and risky changes create their own atmosphere.  These types of implementations garner full management sponsorship and attention because they are too big to fail.  Christine Green, IFPUG Board Member, suggests, “it is harder to lose focus on big bang approaches when organizational leadership changes.” Big bangs can be used to address the risk of a loss of focus in some cases.  An example of an organization manufacturing a too big to fail scenario can be found in the often-told story of the early years of Fedex (Federal Express at the time).  It was said that the founder consciously borrowed money from smaller regional banks around Memphis so that he could use the impact of the risk of default to negotiate better service and rates.  Big bang changes are often too big to fail and therefore people ensure they don’t.

Management Expectations.   In many circumstances, management has little patience for the payback of continuous process improvement. As I was framing this theme, Christopher Hurney stated, “I’ve seen leadership expect Big Bang results in Agile adoptions, which is kind of ironic no? Considering that one of the precepts of Agility is an iterative approach.” The expectation is often generated by a sense of urgency.  In this situation, a specific issue needs to be addressed and even though an incremental (or even iterative) approach would deliver bits and pieces sooner, the organization perceives value only when all of the benefits are delivered.  The Healthcare.gov marketplace was delivered as a big bang.

Even if the big bang approach to process improvement feels wrong, however, there are reasons for leveraging the approach. Chris Hurney stated that decision makers “tend to feel as though they’ve reached a point where a process has become unsustainable” which makes the idea of implementing a change all at once worth the risk even though nearly everyone would prefer an incremental or continuous approach to change.

Previous Entries in the Big Bang, Incrementalism, or Somewhere In Between Theme

1. Big Bang, Incrementalism, or Somewhere In Between

Next:  Big Bang, The Cons!

 


Categories: Process Management

Dunning-Kruger and Modern Software Project Management

Herding Cats - Glen Alleman - Thu, 02/23/2017 - 20:33

In "Unskilled and Unaware of It: How Difficulties in Recognizing One's Own Incompetence Lead to Inflated Self-Assessments," David Dunning and Justin Kruger state that the less skilled or competent you are, the more confident you are that you're actually very good at what you do. Their central finding is not only do such people reach the erroneous conclusion and make unfortunate choices, but their incompetence robs them of the ability to realize it.

This, of course, is true of everyone in some way. We think we have a great sense of humor when we don't. We rate ourselves higher than others in a variety of skills

Lake Wobegon - where all the children are above average

Turns out though that less competent people overestimate themselves more than others. 

The reason is the absence of a quality called metacognition, the ability to step back and see our own cognitive process in perspective. Good singers know when they've hit a sour note, good directors know when a scene in a play isn't working, and intelligently self-aware people know when they're out of their depth. 

When I hear unsubstantiated claims, usually from sole proprietors, working on de minimis projects, I think of Dunning-Kruger. I've vowed to ignore them and move on. If it works in their domain, then any advice they provide is usually limited to their domain and their experiences in that domain. But the continued chant that certain processes, methods, fixing for dysfunction continue. Getting louder when they are asked to show the evidence their idea has a basis in principle.  This is the confirmation bais for their misunderstanding of the principles on which they are making their claims. 

 

 

Related articles Architecture -Center ERP Systems in the Manufacturing Domain IT Risk Management Why Guessing is not Estimating and Estimating is not Guessing Making Conjectures Without Testable Outcomes Deadlines Always Matter
Categories: Project Management

Adding text and shapes with the Google Slides API

Google Code Blog - Thu, 02/23/2017 - 20:26
Originally shared on the G Suite Developers Blog

Posted by Wesley Chun (@wescpy), Developer Advocate, G Suite
When the Google Slidesteam launched their very first API last November, it immediately opened up a whole new class of applications. These applications have the ability to interact with the Slides service, so you can perform operations on presentations programmatically. Since its launch, we've published several videos to help you realize some of those possibilities, showing you how to:
Today, we're releasing the latest Slides API tutorial in our video series. This one goes back to basics a bit: adding text to presentations. But we also discuss shapes—not only adding shapes to slides, but also adding text within shapes. Most importantly, we cover one best practice when using the API: create your own object IDs. By doing this, developers can execute more requests while minimizing API calls.



Developers use insertText requests to tell the API to add text to slides. This is true whether you're adding text to a textbox, a shape or table cell. Similar to the Google Sheets API, all requests are made as JSON payloads sent to the API's batchUpdate() method. Here's the JavaScript for inserting text in some object (objectID) on a slide:
{
"insertText": {
"objectId": objectID,
"text": "Hello World!\n"
}
Adding shapes is a bit more challenging, as you can see from itssample JSON structure:

{
"createShape": {
"shapeType": "SMILEY_FACE",
"elementProperties": {
"pageObjectId": slideID,
"size": {
"height": {
"magnitude": 3000000,
"unit": "EMU"
},
"width": {
"magnitude": 3000000,
"unit": "EMU"
}
},
"transform": {
"unit": "EMU",
"scaleX": 1.3449,
"scaleY": 1.3031,
"translateX": 4671925,
"translateY": 450150
}
}
}
}
Placing or manipulating shapes or images on slides requires more information so the cloud service can properly render these objects. Be aware that it does involve some math, as you can see from the Page Elements page in the docs as well as the Transforms concept guide. In the video, I drop a few hints and good practices so you don't have to start from scratch.

Regardless of how complex your requests are, if you have at least one, say in an array named requests, you'd make an API call with the aforementioned batchUpdate() method, which in Python looks like this (assuming SLIDES is the service endpoint and a presentation ID of deckID):

SLIDES.presentations().batchUpdate(presentationId=deckID,
body=requests).execute()
For a detailed look at the complete code sample featured in the DevByte, check out the deep dive post. As you can see, adding text is fairly straightforward. If you want to learn how to format and style that text, check out the Formatting Text post and video as well as the text concepts guide.
To learn how to perform text search-and-replace, say to replace placeholders in a template deck, check out the Replacing Text & Images post and video as well as the merging data into slides guide. We hope these developer resources help you create that next great app that automates the task of producing presentations for your users!
Categories: Programming

Neo4j: How do null values even work?

Mark Needham - Thu, 02/23/2017 - 00:28

Every now and then I find myself wanting to import a CSV file into Neo4j and I always get confused with how to handle the various null values that can lurk within.

Let’s start with an example that doesn’t have a CSV file in sight. Consider the following list and my attempt to only return null values:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value = null
RETURN value

(no changes, no records)

Hmm that’s weird. I’d have expected that at least keep the first value in the collection. What about if we do the inverse?

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value <> null
RETURN value

(no changes, no records)

Still nothing! Let’s try returning the output of our comparisons rather than filtering rows:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
RETURN value = null AS outcome

╒═══════╤═════════╕
│"value"│"outcome"│
╞═══════╪═════════╡
│null   │null     │
├───────┼─────────┤
│"null" │null     │
├───────┼─────────┤
│""     │null     │
├───────┼─────────┤
│"Mark" │null     │
└───────┴─────────┘

Ok so that isn’t what we expected. Everything has an ‘outcome’ of ‘null’! What about if we want to check whether the value is the string “Mark”?

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
RETURN value = "Mark" AS outcome

╒═══════╤═════════╕
│"value"│"outcome"│
╞═══════╪═════════╡
│null   │null     │
├───────┼─────────┤
│"null" │false    │
├───────┼─────────┤
│""     │false    │
├───────┼─────────┤
│"Mark" │true     │
└───────┴─────────┘

From executing this query we learn that if one side of a comparison is null then the return value is always going to be null.

So how do we exclude a row if it’s null?

It turns out we have to use the ‘is’ keyword rather than using the equality operator. Let’s see what that looks like:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value is null
RETURN value

╒═══════╕
│"value"│
╞═══════╡
│null   │
└───────┘

And the positive case:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value is not null
RETURN value

╒═══════╕
│"value"│
╞═══════╡
│"null" │
├───────┤
│""     │
├───────┤
│"Mark" │
└───────┘

What if we want to get rid of empty strings?

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value <> ""
RETURN value

╒═══════╕
│"value"│
╞═══════╡
│"null" │
├───────┤
│"Mark" │
└───────┘

Interestingly that also gets rid of the null value which I hadn’t expected. But if we look for values matching the empty string:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value = ""
RETURN value

╒═══════╕
│"value"│
╞═══════╡
│""     │
└───────┘

It’s not there either! Hmm what’s going on here:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
RETURN value, value = "" AS isEmpty, value <> "" AS isNotEmpty

╒═══════╤═════════╤════════════╕
│"value"│"isEmpty"│"isNotEmpty"│
╞═══════╪═════════╪════════════╡
│null   │null     │null        │
├───────┼─────────┼────────────┤
│"null" │false    │true        │
├───────┼─────────┼────────────┤
│""     │true     │false       │
├───────┼─────────┼────────────┤
│"Mark" │false    │true        │
└───────┴─────────┴────────────┘

null values seem to get filtered out for every type of equality match unless we explicitly check that a value ‘is null’.

So how do we use this knowledge when we’re parsing CSV files using Neo4j’s LOAD CSV tool?

Let’s say we have a CSV file that looks like this:

$ cat nulls.csv
name,company
"Mark",
"Michael",""
"Will",null
"Ryan","Neo4j"

So none of the first three rows have a value for ‘company’. I don’t have any value at all, Michael has an empty string, and Will has a null value. Let’s see how LOAD CSV interprets this:

load csv with headers from "file:///nulls.csv" AS row
RETURN row

╒═════════════════════════════════╕
│"row"                            │
╞═════════════════════════════════╡
│{"name":"Mark","company":null}   │
├─────────────────────────────────┤
│{"name":"Michael","company":""}  │
├─────────────────────────────────┤
│{"name":"Will","company":"null"} │
├─────────────────────────────────┤
│{"name":"Ryan","company":"Neo4j"}│
└─────────────────────────────────┘

We’ve got the full sweep of all the combinations from above. We’d like to create a Person node for each row but only create a Company node and associated ‘WORKS_FOR’ relationshp if an actual company is defined – we don’t want to create a null company.

So we only want to create a company node and ‘WORKS_FOR’ relationship for the Ryan row.

The following query does the trick:

load csv with headers from "file:///nulls.csv" AS row
MERGE (p:Person {name: row.name})
WITH p, row
WHERE row.company <> "" AND row.company <> "null"
MERGE (c:Company {name: row.company})
MERGE (p)-[:WORKS_FOR]->(c)

Added 5 labels, created 5 nodes, set 5 properties, created 1 relationship, statement completed in 117 ms.

And if we visualise what’s been created:

Graph  15

Perfect. Perhaps this behaviour is obvious but it always trips me up so hopefully it’ll be useful to someone else as well!

There’s also a section on the Neo4j developer pages describing even more null scenarios that’s worth checking out.

The post Neo4j: How do null values even work? appeared first on Mark Needham.

Categories: Programming

14 extensions that can enrich your daily VSTS usage

Xebia Blog - Wed, 02/22/2017 - 22:54

Using VSTS on a daily basis I find that I add a regular list of VSTS Marketplace extensions to my VSTS environment. I find them convenient and helping me to get the most out of VSTS. The list below is primarily focussed on the Work and Code area and not so much on the Build […]

The post 14 extensions that can enrich your daily VSTS usage appeared first on Xebia Blog.

Publish your app with confidence from the Google Play Developer Console

Android Developers Blog - Wed, 02/22/2017 - 19:20
Posted by Kobi Glick, Product Manager, Google Play

Publishing a new app, or app update, is an important and exciting milestone for every developer. In order to make the process smoother and more trackable, we're announcing the launch of a new way to publish apps on Google Play with some new features. The changes will give you the ability to manage your app releases with more confidence via a new manage releases page in the Google Play Developer Console.




Manage your app updates with clarity and control

The new manage releases page is where you upload alpha, beta, and production releases of your app. From here, you can see important information and the status of all your releases across tracks.

The new manage releases page.
Easier access to existing and new publishing features

Publishing an app or update is a big step, and one that every developer wants to have confidence in taking. To help, we've added two new features.
First, we've added a validation step that highlights potential issues before you publish. The new "review and rollout" page will appear before you confirm the roll out of a new app and flag if there are validation errors or warnings. This new flow will make the app release process easier, especially for apps using multi-APK. It also provides new information; for example, in cases where you added new permissions to your app, the system will highlight it.


Second, it's now simpler to perform and track staged roll-outs during the publishing flow. With staged rollouts, you can release your update to a growing % of users, giving you a chance to catch and address any issues before affecting your whole audience.

If you want to review the history of your releases, it is now possible to track them granularly and download previous APKs.

Finally we've added a new artifacts library under manage releases where you can find all the files that help you manage a release.
Start using the new manage releases page today
You can access the new manage releases page in the Developer Console. Visit the Google Play Developer Help Center for more information. With these changes, we're helping you to publish, track and manage your app with confidence on Google Play.


How useful did you find this blogpost?                                                                               
Categories: Programming

New features in Xcode 8.2 Simulator

Xebia Blog - Wed, 02/22/2017 - 14:01
In the release notes of Xcode 8.2, Apple introduced features for their new version of Xcode. In this blog I will explain how to use these new features. Read more

New features in Xcode 8.2 Simulator

Xebia Blog - Wed, 02/22/2017 - 14:01

In the release notes of Xcode 8.2, Apple introduced features for their new version of Xcode. In this blog I will explain how to use these new features. Read more

The post New features in Xcode 8.2 Simulator appeared first on Xebia Blog.

First Steps in gRPC Bindings for React Native

Xebia Blog - Wed, 02/22/2017 - 13:54
When you want to use gRPC in your React Native app there is no official support yet, but that shouldn’t stop you! In this post I’ll show you how we designed an implementation with type safety in mind and successfully called a service remotely from React Native on Android. Read more