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!
Software Development Blogs: Programming, Software Testing, Agile Project Management
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!
Social Intelligence is hot.
I added a new category at Sources of Insight to put the power of Social Intelligence at your fingertips:
(Note that you can get to Social Intelligence from the menu under ‚ÄúMore Topics ‚Ä¶‚ÄĚ)
I wanted a simple category to capture and consolidate the wealth of insights around interpersonal communication, relationships, conflict, influence, negotiation, and more. There are 95 articles in this category, and growing, and it includes everything from forging friendships to dealing with people you can‚Äôt stand, to building better relationships with your boss.
According to Wikipedia, ‚ÄúSocial intelligence is the capacity to effectively negotiate complex social relationships and environments.‚ÄĚ
There's a great book on Social Intelligence by Daniel Goleman:
According to Goleman, ‚ÄúWe are constantly engaged in a ‚Äėneural ballet‚Äô that connects our brain to the brains with those around us.‚ÄĚ
‚ÄúOur reactions to others, and theirs to us, have a far-reaching biological impact, sending out cascades of hormones that regulate everything from our hearts to our immune systems, making good relationships act like vitamins‚ÄĒand bad relationships like poisons. We can ‚Äėcatch‚Äô other people‚Äôs emotions the way we catch a cold, and the consequences of isolation or relentless social stress can be life-shortening. Goleman explains the surprising accuracy of first impressions, the basis of charisma and emotional power, the complexity of sexual attraction, and how we detect lies. He describes the ‚Äėdark side‚Äô of social intelligence, from narcissism to Machiavellianism and psychopathy. He also reveals our astonishing capacity for ‚Äėmindsight,‚Äô as well as the tragedy of those, like autistic children, whose mindsight is impaired.‚ÄĚ
According to the Leadership Lab for Corporate Social Innovation, by Dr. Claus Otto Scharmer (MIT OpenCourseware), there is a relational shift:
The Rise of the Network Society
And, of course, Social is taking off as a hot technology in the Enterprise arena. It‚Äôs changing the game, and changing how people innovate, communicate, and collaborate in a comprehensive collaboration sort of way.
Here is a sampling of some of my Social Intelligence articles to get you started:
5 Conversations to Have with Your Boss
6 Styles Under Stress
10 Types of Difficult People
Ask, Mirror, Paraphrase and Prime
Cooperative Controversy Over Competitive Controversy
Coping with Power-Clutchers, Paranoids and Perfectionists
Dealing with People You Can't Stand
How To Consistently Build a Winning Team
How To Deal With Criticism
How Do You Choose a Friend?
How To Repair a Broken Work Relationship
The Lens of Human Understanding
The Politically Competent Leader, The Political Analyst, and the Consensus Builder
Work on Me First
If you really want to dive in here, you can brows the full collection at:
Enjoy, and may the power of Social Intelligence be with you.
In my home it is traditional every spring to thoroughly clean our house, yard and even our office.¬† Spring cleaning is different than a normal cleaning.¬† Everything gets touched, sorted and perhaps even thrown away. When we are done it always amazes me to step back and see the stuff that has accumulated since our last spring cleaning that is no longer needed. The same spring-cleaning concept can be applied to the processes that you use at work.
Spring cleaning is a tradition in many of the colder climates. When the days grow warmer and longer all the extra stuff that has accumulated over the winter becomes obvious and a bit oppressive. Cleaning out what isn‚Äôt needed lifts the spirits; process spring cleaning serves the same purpose. Get rid of steps that don‚Äôt add value and simplify how you work.¬† A process spring cleaning will lift your team‚Äôs spirits and help them deliver more value. Spring cleaning is part of a virtuous cycle.
When I hear the phrase¬†we're exploring I'm reminded that in fact many who explore without a plan, measures of their progress progress against this plan, a risk management Plan-B for getting home when things go wrong, and without insufficient resources to survive the trip - come home empty handed or many time don't come home at all. Exploring without these items is called¬†wandering around in the wilderness looking for something to eat.¬†
Here's a simple¬†tale about an actual explorer, Ernest Shackleton, who experienced failure and near death on their first expedition¬†to the South Pole (ADM Scott), that informed his attempt the reach the Pole a second time, only to experience failure again. In the first example prepartion was weak, management inconsistent, and lacking an actual strategy, no Plan-B. The second attempt, without Scott, was well planned, well provisioned, well staffed. When trouble started, Plan-B and then Plan-C were put in place and executed.¬†
¬† What's the Point About Managing Projects? So when we hear¬†we're exploring and there is no destination in mind, or named problem to be solved, or even a description of possible root causes of the un-named problem, remember Shackleton's first trip and Scott's mismanagement of that exploration. On the second trip Shackleton had estimated what he would need, what route he would take, what skills his crew needed, what Plan-B would be, and even Plan-C when that didn't work, and most of all he estimated the probability of success to be high enough it was worth the risk to reach the South Pole and return to tell about it. The Polar expedition for Shackleton was a¬†project, planned and executed with credible estimates of every step along the way, including the possibilities hat everything could go wrong and it did. Through is leadership, they lived to tell about it. Related articles Performance-Based Project Management(sm) Released Agile as a Systems Engineering Paradigm 1909 - Ernest Shackleton, leading the Nimrod Expedition to the South Pole, plants the British flag 97 miles (156 km) from the South Pole, the furthest anyone had ever reached at that time. Black Swans and "They Never Saw It Coming" 3 Impediments To Actual Improvement in the Presence of Dysfunction
I‚Äôm a fan of simple models that help you see things you might otherwise miss, or that help explain how things work, or that simply show you a good lens for looking at the world around you.
Here‚Äôs a simple Industry Life Cycle model that I found in Professor Jason Davis‚Äô class, Technology Strategy (MIT‚Äôs OpenCourseWare.)
It‚Äôs a simple backdrop and that‚Äôs good. It‚Äôs good because there is a lot of complexity in the transitions, and there are may big ideas that all build on top of this simple frame.
Sometimes the most important thing to do with a model is to use it as a map.
What stage is your industry in?
Failure is not something to be feared. Instead, you should fully embrace it and recognize it as the only way to reach long term success. In this episode, I talk about failure and why you need to learn to overcome it. Full transcript below: show John:¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬† Hey, everyone. ¬†Welcome back to Get Up and CODE.¬† […]
The post Get Up And Code 049: Overcoming Your Fear of Failure appeared first on Simple Programmer.
Like many in the Microsoft dev community, I’m a heavy user of Visual Studio and Powershell. And so, of course, I’ve been a heavy¬†user Chris Tavares’ vsvars32.ps1 script. However, recently I needed the ability to specify my desired processor architecture when setting up a VS command line session. Unfortunately, Chris’s script¬†wraps¬†vsvars32.bat¬†which only supports generating 32-bit apps. Luckily, VC++ includes a vcvarsall.bat script that let’s you specify processor architecture. So I updated my local copy of vsvars.ps1¬†to use vcvarsall.bat under the hood and added an -x64 switch to enable setting up a 64-bit command line environment. Vcvarsall.bat supports a variety of additional options, but 64-bit support is all I needed so that’s all I added. I didn’t change the name of the script because there’s WAY too much muscle memory associated with typing “vsvars” to bother changing that now.
If you want it, you can get my architecture aware version of vsvars.ps1 from my OneDrive here: http://1drv.ms/1kf8g9I.
Over the past few weeks I have been asking friends and colleagues to formally answer the following question:
What are the top reasons you think an organization succeeds in implementing¬†Agile?
We have already covered the top six reasons organizations succeed with Agile.
The folks that participated in this survey are from a highly experienced cohort of process improvement personnel, testers or developers.¬†Completing the top eleven success factors in the survey are the areas of process discipline, team size, capable people and appropriate training.
Process discipline reflects the team‚Äôs capability to follow and improve the organization‚Äôs standard processes. For example, if Scrum were the standard Agile project management process you would expect that the team would follow standard practices of Scrum. The team would use retrospectives to tailor that process based on data gathered through experience within the limits the organization established. Process discipline is required for a group of people to work together to solve a common problem without tripping over themselves. Without process discipline it will be difficult for team members to predict how other team members will behave requiring a need to built in contingency.
Team size influences efficiency and effectiveness of Agile techniques. Agile teams typically have five to nine members. Team size is the sum of the entire core team; product owner, Scrum Master and the development members. Many of the collaborative techniques typically used in Agile don‚Äôt work well when team sizes expand.¬† For example, large teams tend to have difficulty completing standup meetings in a reasonable period of time, which causes participants to become bored and inattentive. When team members start to checkout, command and control management techniques are generally substituted for Agile techniques and principles.
Capable people are required to apply Agile processes. This was the most obvious success factor and probably the one that is least specific to Agile. Capable people are a requirement for any type of work. The combination of personal capability and engagement, an earlier success factor, both are required for Agile to prosper in an organization.
Appropriate training is required to apply Agile. Training should be provided not only to the core team, but to all of the stakeholders that will be impacted by the team‚Äôs new behavior. Training generally needs to be nuanced. Business stakeholders will have different training and knowledge needs than IT support teams. On a cautionary note, many organizations confuse presentations with training. Training for Agile needs to embrace the adult learning concepts that include an explanation and hands on practice before trainees are asked to use the material. In order to be most effective, training should be deployed just prior to time of need (just-in-time training).
Success implementing and using Agile requires that teams keep their eye on the ball both in terms of using the process as well as on delivering value. Process discipline, team size, capable people and training are all revolve around people and it bears repeating that people are center of Agile world.
As you might imagine, I had a pretty amazing time @ Build. The only thing that went wrong all week was when one of my demos in my session failed. It’s was¬†pretty cool demo – the brokered WinRT component fires an event which wakes up a suspended WinRT app for a few seconds to process the event. However, I had shut off toast notifications on my machine, which messed up the demo. So here, for your enjoyment, is a short 3 minute video of the working demo.
Hey, it's HighScalability time:
Don't miss all that the Internet has to say on Scalability, click below and become eventually consistent with all scalability knowledge...
In the discussions around #NoEstimates, it's finally dawned on me - after walking the book shelf in the office - the conversation is split across a chasm. Governance based organizations and non-governance based organizations.¬†
Same is the case for product development organizaitons. Those producing a software product for sale or providing a service in exchange for money. There are governance based product organizations and non-governance based product organizations.¬†
I can't say how those are differentiated, but there is broad research on the top of governance and business success using IT. The book on the left is a start. In this book there is a study of 300 enterprises around the world, with the following...
Companies with effective IT governance have profits that are 20% higher than other companies¬†pursuing similar strategies. One viable explanation for this differential is that IT governance¬†specifies accountabilities for IT-related business outcomes and helps companies align their IT¬†investments with their business priorities. But IT governance is a mystery to key decision makers¬†at most companies. Our research indicates that, on average, only 38% of senior managers in a¬†company know how IT is governed. Ignorance is not bliss. In our research senior management¬†awareness of IT governance processes proved to be the single best indicator of governance¬†effectiveness with top performing firms having 60, 70 or 80% of senior executives aware of how¬†IT is governed. Taking the time at senior management levels to design, implement, and¬†communicate IT governance processes is worth the trouble‚ÄĒit pays off.
IT Governance is a¬†decision rights and accountability framework for encouraging desirable behaviours in the use of IT. And I'd add the creation of IT, IT products, and IT services. Since IT is a broad domain, let's exclude development effort for things like games, phone apps, plugins. and in general items that have low¬†value at risk. This doesn't mean they don't have high revenue, but the investment value is low. So when they don't produce their desired beneficial outcome, the degree of loss is low as well.
Asessment of IT Governance focuses on four objectives:
In all four, Weill and Ross provide guidance for assessing the capabilities of IT. In all four¬†Cost is considered a critical success factor.
Without knowing the cost of a decision, the choices presented by that decision cannot be assessed. So when we hear #NoEstimates is about making decisions, ask of those decisions are being made in a governance based organization?
Then ask the question¬†who has the decision rights to make those decisions?¬†Who has the need to know the cost of the value produced by the firm in exchange for that cost. The developers, the management of the development team, the business management of the firm, the customers of the firm?
The three dependent variables of all projects are schedule, cost, and technical perfomance of produced capabilities (this is a wrapper word for everything NOT time and cost).¬†The¬†value at risk is a good starting point for¬†deciding¬†to apply governance processes or not. If you fix one of these variables - say¬†budget (which is a place holder for cost until the actuals arrive), then the other two (time and technical) are now free to¬†vary. Estimating their behaviour will be needed to assure the ROI meets the business goals. In the governance paradigm, these three dependent variables are part of the decision making process. Not knowing one of more puts at risk the¬†value produced by the project or work effort. It's this¬†value at risk that is the key to determining why, how, and when to estimate.¬†
What are you willing to loose (risk) if you don't need to know when you'll be done, or what you'll be able to produce on a planned day, or what that will cost, or determine if the ROI (return on investment), ROA (return on asset value), or ROE (return on equity) to some level of confidence to support your decision making - then estimating is a waste of time.
If on the other hand, the firm or customers you work for writing software in exchange for money have an interest in knowing any or all of those answers to support their decision making, you'll likley going to have to estimate, time, cost, produced capabilities to answer their questions.
It's not about you (the consumer of money). To find out who, follow the money, they'll tell you if they need an estimate or not.Related articles Back To The Future Why Johnny Can't Estimate or the Dystopia of Poor Estimating Practices Danger Will Robinson Some more answers to the estimating questions Capabilties Based Planning, Use Cases, and Agile The Value of Making An Estimate
I Could not sleep‚Ä¶ 3am and this idea‚Ä¶
Event sourcing is about fold but there is no monoid around !
¬†What‚Äôs a monoid ?
We need a set.
Let‚Äôs take a simple one, positive integers.
And an operation, let say + which takes two positive integers.
It returns‚Ä¶ a positive integer. The operation is said to be closed on the set.
Something interesting is that 3 + 8 + 2 = 13 = (3 + 8) + 2 = 3 + (8 + 2).
This is associativity: (x + y) + z = x + (y + z)
Le last interesting thing is 0, the neutral element:
x + 0 = 0 + x = x
(N,+,0) is a monoid.
Let say it again:
(S, *, √ł) is a monoid if
warning: it doesn‚Äôt need to be commutative so x * y can be different from y * x !
Some famous monoids:
(int, +, 0)
(int, *, 1)
(lists, concat, empty list)
(strings, concat, empty string)
¬†The link with Event Sourcing
Event sourcing is based on an application function apply : State ‚Äď> Event ‚Äď> State, which returns the new state based on previous state and an event.
Current state is then:
fold apply emptyState events
(for those using C# Linq, fold is the same as .Aggregate)
Which is great because higher level functions and all‚Ä¶
But fold is event more powerful with monoids ! For integers, fold is called sum, and the cool thing is that it‚Äôs associative !
With a monoid you can fold subsets, then combine them together after (still in the right order). This is what give the full power of map reduce: move code to the data. Combine in place, then combine results. As long as you have monoids, it works.
But apply will not be part of a monoid. It‚Äôs not closed on a set.
To make it closed on a set it should have the following signature:
apply: State ‚Äď> State ‚Äď> State, so we should maybe rename the function combine.
Let‚Äôs imagine we have a combine operation closed on State.
Now, event sourcing goes from:
decide: Command ‚Äď> State ‚Äď> Event list
apply: State ‚Äď> Event ‚Äď> State
decide: Command ‚Äď> State ‚Äď> Event list
convert: Event ‚Äď> State
combine: State ‚Äď> State ‚Äď> State
the previous apply function is then just:
apply state event = combine state (convert event)
and fold distribution gives:
fold apply emptyState events = fold combine emptyState (map convert events)¬†
(where map applies the convert fonction to each item of the events list, as does .Select in Linq)
The great advantage here is that we map then fold which is another name for reduce !
Application of events can be done in parallel by chuncks and then combined !
¬†Is it just a dream ?
Most of the tricky decisions have been taken in the decide function which didn‚Äôt change. The apply function usually just set state members to values present in the event, or increment/decrement values, or add items to a list‚Ä¶ No business decision is taken in the apply function, and most of the primitive types in state members are already monoids under there usual operations‚Ä¶
And a group (tuple, list..) of monoid is also a monoid under a simple composition:
if (N1,*,n1) and (N2,¬§,n2) are monoids then N1 * N2 is a monoid with an operator <*> ( (x1,x2) <*> (y1,y2) = (x1*y1, x2¬§y2)) and a neutral element (n1,n2)‚Ä¶
To view it more easily, the convert fonction converts an event to a Delta, a difference of the State.
Those delta can then be aggregated/folded to make a bigger delta.
It can then be applied to a initial value to get the result !
The idea seams quite interesting and I never read anything about this.. If anyone knows prior study of the subject, I‚Äôm interested.
Next time we‚Äôll see how to make monoids for some common patterns we can find in the apply function, to use them in the convert function.
I get around.¬†¬†Once upon a time in my life that might have been an epithet but now reflects a wide exposure to what works, doesn’t work and what is clearly a cop out.¬†¬†I suggest that there are five requirements for a successful process improvement program or five attributes that give a program a chance of success.¬†¬†They are:
We are not yet at the End of History for database theory as Peter Bailis and the Database Group at UC Berkeley continue to prove with a great companion blog post to their new paper: Scalable Atomic Visibility with RAMP Transactions. I like the approach of pairing a blog post with a paper. A paper almost by definition is formal, but a blog post can help put a paper in context and give it some heart.
From the abstract:
Databases can provide scalability by partitioning data across several servers. However, multi-partition, multi-operation transactional access is often expensive, employing coordination-intensive locking, validation, or scheduling mechanisms. Accordingly, many real-world systems avoid mechanisms that provide useful semantics for multi-partition operations. This leads to incorrect behavior for a large class of applications including secondary indexing, foreign key enforcement, and materialized view maintenance. In this work, we identify a new isolation model—Read Atomic (RA) isolation—that matches the requirements of these use cases by ensuring atomic visibility: either all or none of each transaction’s updates are observed by other transactions. We present algorithms for Read Atomic Multi-Partition (RAMP) transactions that enforce atomic visibility while offering excellent scalability, guaranteed commit despite partial failures (via synchronization independence), and minimized communication between servers (via partition independence). These RAMP transactions correctly mediate atomic visibility of updates and provide readers with snapshot access to database state by using limited multi-versioning and by allowing clients to independently resolve non-atomic reads. We demonstrate that, in contrast with existing algorithms, RAMP transactions incur limited overhead—even under high contention—and scale linearly to 100 servers.
What is RAMP?
These 5 questions need credible answers in units of measure meanigful to the decision makers.
What Does All This Mean?
With these top level questions, many approaches are available, not matter what the domain or technology. But in the end if we don't have answers the probability of success will be reduced.
I used to hate writing. It always felt like such a strain to put my ideas on paper or in a document. Why not just say what I thought? In this video, I’ll tell you why I changed my mind about writing and why I think writing is one of the best things you can […]
I don‚Äôt decide which countries I go to.¬†You¬†do.
My new one-day workshop follows an important principle:
I go where people send me.
Selecting countries and cities
Every week I get questions such as ‚ÄúWill your book tour come to Argentina?‚ÄĚ ‚ÄúWhen will you visit China?‚ÄĚ and ‚ÄúWhy are you not planning for Norway?‚ÄĚ
And every time my answer is the same: I go where people send me. The backlog of countries is based on the readers of my mailing list
So far we have discussed three of the top factors for successful Agile implementations:
Tied for fourth place in the list of success factors are trust, adaptable culture and coaching.
Trust was one of surprises on the list. Trust, in this situation, means that all of the players needed to deliver value including the team, stakeholders and management should exhibit predictable behavior. From the team‚Äôs perspective there needs to be trust that they won‚Äôt be held to other process standards to judge how they deliver if they adopt Agile processes. From a stakeholder and management perspective there needs to be trust that a team will live up to the commitments they make.
An adaptable culture reflects an organization‚Äôs ability to make and accept change.¬† I had expected this to be higher on the list.¬† Implementing Agile generally requires that an organization makes a substantial change to how people are managed and how work is delivered.¬† Those changes typically impact not only the project team, but also the business departments served by the project. Organizations that do not adopt to change well rarely make a jump into Agile painlessly. Organizations that have problems adapting will need to spend significantly more effort on organizational change management.
Coaches help teams, stakeholders and other leaders within an organization learn how to be Agile. Being Agile requires some combination of knowing specific techniques and embracing a set of organizational principles. Even in more mature Agile organizations, coaches bring new ideas to the table, different perspectives and a shot of energy. That shot of energy is important to implementing Agile and then for holding on to those new behaviors until they become muscle memory.
Change in organizations is rarely easy. Those being asked to change very rarely perceive change being for the better, which makes trust very difficult. Adopting Agile requires building trust between teams, the business and IT management and vice versa. Coaching is a powerful tool to help even adaptable organizations build trust and embrace Agile as a mechanism to deliver value and as a set of principles for managing work.