When people start talking about the cloud, they quickly start dropping in jargon terms. Sometimes they use multiple terms in the same sentence and it quickly becomes hard to understand when you aren’t familiar with the cloud providers. Even if you are familiar with one particular provider, other providers use different terms for their equivalent service. I think AWS is particularly bad for their naming which often aren’t intuitive. So when people start talking about Elastic Beanstalk, Route 53 and Redshift; it’s hard to grasp what the hell they are talking about.
Here’s an example of equivalent services by four different cloud providers.
One of the latest buzzwords to be thrown around is “Customer experience”. My understanding is that it’s a focus on customer interactions, from awareness of the product to purchase. This covers brand perception, sales process, and customer service.
Customer Experience is shortened to the acronym CX, because using the letter X is always cooler. For some reason, we went a bit further and put a hyphen in there for good measure; “C-X Experience Centre”.
The weird thing is that it kinda looks like a letter is missing like you are supposed to pronounce it like SEX; and a Sex Experience Centre is a different thing entirely. Does it even make sense, or sound sensible to call it the Customer Experience Experience Centre?
“The Customer-Xcellence Programme is all about putting our customers and users at the heart of everything we do. It directly supports our strategic priority of delighting our customers and partners. But we can only do that if we really put ourselves in their shoes and truly understand what day-to-day working life is like for them. By doing so, we can ensure the products and solutions we design, enhance and implement are directly informed by their experiences.”
We lost even more office space to create this C-X Experience Centre. Since we worked at home, they made the desk space more spacious for those that did go into the office, then over time have reassigned meeting rooms to nonsense like this.
To make it more pretentious, we invited a local politician for the grand opening
“The C-X experience Centre is a real gamechanger in how we immerse ourselves in the experiences of our customers and users.”
I think all it is is a few computers in a room decorated to look like a customer’s office.
“This will help everyone learn about the challenges our customers and users face, and how our solutions help them provide a better service.”
As well as showcasing our solutions to customers and key stakeholders, it will be used for:
onboarding new starters
supporting sales enablement training
launching and testing new solutions and products
“Thank you to the whole Customer-Xcellence team for turning this vision into reality – it will make such a difference in how we understand our customer’s and user’s challenges.”
When you work in the Software Industry, it’s obvious there’s going to be a lot of technical terms and abbreviations/initialisations. However, I think in many cases, you could easily write/say something in a way that more people could understand. I think sometimes people want to appear more technical, or maybe even “gatekeep” by trying to outnerd their peers. Over a long period of time, I have collected various written and spoken quotes. So here is a nice and varied collection. I don’t understand what many of these mean.
“I believe this to could be because of the contiguous memory necessary to rasterise an image of this scope.”
“I think if you are migrating the symbol server, then you need to consume the symbols”
.Net Nerd
“That’s why I use a View that bakes the invariants in so I don’t need to re-check them a number of times.
Adding this index could improve performance of the query by 47% and avoid using hash matches and parallelism operators.
DB Nerd
You have a couple of options here. 1. If the data is small then you might consider xcom as an intermediary to share data between two operators. Preferably this is up to hundreds of records and no further (without using custom xcom backends). 2. Sounds like you probably want something like a TrinoToCloudWatchMetricsOperator, it’s the sort of thing that would need to be implemented as it’s quite niche but could likely be re-used across teams. I tend to treat Python Operator as a fallback option now. If it really doesn’t make sense to write your own operator because it’s so specific and couldn’t be re-used.
This code will need to be changed at some point in the future to detect the Evergreen Runtime as a prerequisite – removing the need for this Visual C++ runtime check.
For anyone interested in learning about Node.js and the MEAN stack to produce a quick REST API, this is a pretty good tutorial which dockerises the app too and deploys it to aws: https://blog.codeship.com/running-mean-web-application-doc…/
Incorporating a CI system like Travis, Jenkins or Circle, testing with Supertest or Postman and adding in aws clusters and load balancers means in a very short time you can create a CD system for the API too with a time to live of 3 to 4 minutes.
Using all free tools like VS Code, Github and the AWS free tier means it can all be done without paying a single penny too.
too much
Me 13:27:
can you tell me how a minimal deterministic acyclic finite state automaton would use less space than a trie?
Lucy 13:29:
7
Me 13:30:
This is because a DAFSA can compress identical branches from the trie which correspond to the same suffixes (or parts) of different words being stored.
what kind of nerd do you have to be to understand all this jargon?
The user account is in a different forest than the computer account. The processing of Group Policy from another forest is not allowed. Group Policy will be processed using Loopback Replace mode. The scope of the user policy settings will be determined by the location of the computer object in Active Directory. The settings will be acquired from the User Configuration of these policies.
Windows Event Viewer. now that is a good bit of jargon. What the hell is a forest?
This is from some jargon from FutureShop for some crazily expensive headphones.
The LCD-4, Audeze’s new reference headphone, is the result of dedicated research and development and advancements in materials science. It features Their amazingly thin nano-grade diaphragms and unique Double Fluxor magnet arrays for the most powerful magnetic flux density in existence, an incredible 1.5 Tesla! It also features a new comfortable suspension-type carbon fiber and leather headband and delivers breathtaking high resolution sound, imaging and transparency, with exciting dynamics.
We are pleased to offer a free cable burn-in service for this cable when purchased through us. The Nordost VIDAR cable burn-in machine combines three different functions all in one operation:
It neutralises charges that build up around the cables and the insulation
It provides a very wide band and deep conditioning into the conductor core, which produces changes in the way signals pass through the metal.
It ultrasonically conditions the surface of the conductors.
So, we’ve now got a requirement to orchestrate some containers with Kubernetes and patch some MS SQL databases. Now we can bring Octopus in because we no longer have 180,000 machines to deal with, just the 300 or so database boxes with Kubernetes managing the rest of the servers running the containers. Throw in your CI/CD tool of choice to pipe directly in to Octopus and your container registry and you’ve got a pretty sweet setup going!
Me 16:30:
Enablers support the activities needed to extend the Architectural Runway
have you tried extending the Architectural Runway ?
Andrew 16:32:
i think there were protests about them doing that
Append blobs are made up of blocks like the block blobs, but are optimized for append operations. These are used for things like logging information to the same blob from multiple VMs.
Suppress OrganisationLookup Index queries from the ambient transaction so that upstream callers can run their own transactions without escalating to a distributed transaction.
DB Nerd
The transaction log for database ‘tempdb’ is full due to ‘NOTHING’.
SQL Server error
Ongoing issues with L drive, so it has been recommended that we change the 10% buffer to 20% buffer. so the job stops earlier, but has less impact to live service and easier to support the job and provides more headroom if necessary. Will have an impact on how long the job to run.
“The StringFormat::GenericTypographic method creates a generic, typographic StringFormat object.”
Microsoft docs. I wanted to know what StringFormat.GenericTypographic actually does. Still non-the-wiser
It comes bundled with a few really interesting tools developed by the CoreOS team, such as etcd, fleet, and flannel.
most organizations seem to be quite attached to an antediluvian model of testing all components in unison. We had two services on the backend — a gevent based API server and some asynchronous Python background workers which had a tangle of gnarly native dependencies including the C++ boost library which, if memory serves me right, was compiled from scratch every time a new Vagrant box got spun up
If you’re an Erlangista, you’re probably familiar with Fred Hébert’s manual on using the Erlang VM’s primitives to debug production systems while they are running. Languages like Go come with built in support for obtaining the heap, mutex, CPU and goroutine profiles of any running Go process Unit testing such service-critical I/O with mocks inherently embodies a sellout since it not just sacrifices accuracy at the altar of speed, but also ends up shaping our mental model in a way that’s almost entirely dissonant with the actual characteristics of the system we’re building.
Me 11:35:
have you heard of a kibibyte
Daniel 11:35:
nope
Me 11:35:
any serious programer know the difference between kilo and kibi... – Florian Peschka
apparently its 1024 bytes whereas a kilobyte is 1000
In computing, a nibble (often nybble or nyble to match the vowels of byte) is a four-bit aggregation,[1] or half an octet. It is also known as half-byte[2] or tetrade.[3]
Moreover, 1982 documentation for the Integrated Woz Machine refers consistently to an “8 bit nibble”
Wikipedia
Me 15:41:
one day I'm gonna work out what Memoize() does and use it
Andrew 15:42:
What is memoization and how can I use it in Python?
if you don't know what it is then don't bother trying to use it
end of
Me 15:42:
it sounds like a great word
"such as in simple mutually recursive descent parsing[1] in a general top-down parsing algorithm[2][3] that accommodates ambiguity and left recursion in polynomial time and space"
Andrew 15:43:
haha that's gotta be some sort of joke
Me 15:43:
It says "simple" so it must be. You just aren't smart enough"Me 15:41:
one day I'm gonna work out what Memoize() does and use it
I’d like to use NodeJS NPM package manager to setup a small gatling/postma/newman box for REST API testing. However NPM seems to have a problem with the corporate proxy. Does anyone have any tips for making the installation process easier?
Developer
“Before you can deploy Helm in an RBAC-enabled AKS cluster, you need a service account and role binding for the Tiller service.”
“making it volatile means it chucks out the thread-cached value for the variable each time it’s read. Therefore getting the actual value each time”
Developer
The KeyStore Web Services 8.1 uses a contract first approach to web service development. This approach defines the message contract for each web method requests and responses up front using xsd schemas and WSDL. This allows KeyStore to establish a suite of fixed web service methods that can be managed and versioned between releases.
Hierarchical xml messages are constructed using xsd type definitions in order to establish a request and response message for each web method. When referenced using tools such as visual studio .Net, this will create a client side proxy classes that developers can use to call the web methods. These proxy classes represent a strongly-typed client side object class model for each method request and its response. This removes the need for web service clients to work with raw xml. It also has the added advantage of ensuring type-safety for many input parameters (e.g. Dates/Integers etc).
“STAThreadAttribute indicates that the COM threading model for the application is single-threaded apartment.”
Available now: Single-threaded apartment (fully-furnished)
Andrew with a joke
For Gafana those who want to use the dashboard I created the JSON attached just needs to copied into import for your local Gafana ,Can someone try this I am interested to see how ‘intelligent’ Gafana is and if it exports the Data Sources it should be looking for as well or if the user importing needs to get them up as well
We have a CIS hardened ubuntu image with ssm access as a base image. I have installed all my software dependency and then made it as an ami release image. When i use this new ami image as launch template and create ec2 instance i can’t able to connect ssm. I have enabled ssh connection and check the status of ssm it is enabled & running.
Developer question. Can you help him?
I’m trying to create an Alias and a CMK key and trying to associate the alias with a secret. I was getting the following error during deployment using CDK “The operation failed because of an invalid KMS key: Alias arn:aws:kms:eu-west-2:xxxx:alias/rejs-alias-int-secret is not found”. I tried to directly associate the CMK key instead of the alias with the secret and it is working fine. I have also tried associating the alias of the same CMK key with other resources like s3 and it is working fine in that case too. I’m facing issue only with the secret and CMK alias combination. Am I missing out anything here? TIA
Developer question. Can you help him?
I’ve added some instrumentation to the FireInternal method on the EventBroker class to include the eventid in the exception message so we can try and identify where the null event is originating from. Going forward, maybe we should replace the .net 2 lock, queue approach with the ConcurrentQueue class in .net 4 to try and prevent any possible cross threaded operations / race conditions on the eventbroker. It looks like this issue isn’t just occurring on the quick access toolbar select patient operation but also on SessionControllers._messageReceivedWorker_DoWork method.
Developer
Kafka™ is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companies. This can be done in a round-robin fashion simply to balance load or it can be done according to some semantic partition function
Likewise for streaming data pipelines the combination of subscription to real-time events make it possible to use Kafka for very low-latency pipelines; but the ability to store data reliably make it possible to use it for critical data where the delivery of data must be guaranteed or for integration with offline systems that load data only periodically or may go down for extended periods of time for maintenance. The stream processing facilities make it possible to transform data as it arrives.
Similar to –stream, but completely disregards concurrency and topological sorting, running a given command or script immediately in all matching packages with prefixed streaming output. This is the preferred flag for long-running processes such as npm run watch run over many packages.
$ lerna run watch –parallel
Note: It is advised to constrain the scope of this command when using the –parallel flag, as spawning dozens of subprocesses may be harmful to your shell’s equanimity (or maximum file descriptor limit, for example).
Lerna
In parallel computing, an embarrassingly parallel workload or problem (also called embarrassingly parallelizable, perfectly parallel, delightfully parallel or pleasingly parallel) is one where little or no effort is needed to separate the problem into a number of parallel tasks.[1] This is often the case where there is little or no dependency or need for communication between those parallel tasks, or for results between them.[2]
Thus, these are different from distributed computing problems that need communication between tasks, especially communication of intermediate results. They are easy to perform on server farms which lack the special infrastructure used in a true supercomputer cluster. They are thus well suited to large, Internet-based volunteer computing platforms such as BOINC, and do not suffer from parallel slowdown. The opposite of embarrassingly parallel problems are inherently serial problems, which cannot be parallelized at all.
A common example of an embarrassingly parallel problem is 3D video rendering handled by a graphics processing unit, where each frame (forward method) or pixel (ray tracing method) can be handled with no interdependency.[3] Some forms of password cracking are another embarrassingly parallel task that is easily distributed on central processing units, CPU cores, or clusters.
Recently, I came across a new jargon term, the T-Shaped Engineer. I think the general idea is that you used to have a “specialist” or a “generalist”. Now the perception is that it is good to have a compromise between them.
A generalist is like the adage, “A jack of all trades, but a master of none”. You learn new technologies but not achieve a deeper understanding – since mastering anything requires you to dedicate massive amounts of time to the craft. When challenging work needs to be done, engineers with deeper knowledge are needed; aka the specialist.
Specialists devote their time to a narrow set of technologies. They probably don’t learn the newest technology unless it falls into their specialist domain.
Work was often prioritised based on what resources were available. If a feature required more developers with a certain skill-set, and they weren’t available, then the development had to be postponed. If the company hires more developers with the required skill, when priorities shift, you can end up with spare/unassigned developers. This was a hard balancing act for the Product Managers. Sometimes, the developers could end up being asked to take tasks they wouldn’t normally do.
This has led to a new kind of engineer – the “T-Shaped” engineer. This describes a person whose knowledge distribution looks like the letter T. The horizontal line represents a broad knowledge in multiple areas, and the vertical one represents a specialisation of a topic.
Theoretically, having a full team of T-Shaped engineers with their own specialisation means that work can be prioritised. Whilst they may have a broad general knowledge, managers need to remember they can’t perform exceptionally everywhere. The concept isn’t a silver-bullet.
If “Pi-shaped” and “comb-shaped” developers exist, then you would think those would be the developers to hire. I suppose if you do find them, then they will be rare and demand large wages.
In the last blog, I discussed a survey my employer sent out to all employees. If they use the results, then they should address highlighted issues (if any), and aim to keep positive aspects unchanged. This blog is about the results.
The findings were presented to us by some of the Directors. It was full of hype as expected.
“We will provide an update on our journey to become an Employer of Choice and outline the key work-streams that underpin this business-wide programme; many of which will be supported and informed by the feedback captured as part of the Glint survey.”
Director
Firstly was a sales pitch of why Glint is good (some good business jargon and hype here):
“Strategic approach to measuring engagement”,
“ownership for engagement is enabled”,
“Improved effectiveness and efficiency of surveying”,
“Improved understanding of how we compare externally”,
“Employer of Choice programme enabler.”
87% participation, standard participation for Glint is in the 70-80% range. Our Group-wide Engagement Index score is 70 (100-point rating).
The score is calculated from the first 2 questions of the survey, which were:
I would recommend The Company as a great place to work
How happy are you working at The Company?
The other questions in the survey are basically to drill-down deeper. Or in their words:
“to improve engagement, we need to focus on improving the more tactical areas included in the survey”
The questions were responded to on a 1-5 scale. The Rating breakdown was as follows:
67% positive (4,5)
23% neutral (3)
10% negative (1,2)
As a side-note, one department leader discussed his department’s score:
“our department engagement index is 55 which is a little bit lower than the company at 70”.
Departmental Manager
That kinda looks significant to me. 55 sounds very poor in isolation, and lagging behind the 70 as a whole.
There were around 2,000 total comments, left by 37% of respondents. They determined 58% of the comments were negative, 34% positive, 8% neutral. I assume this was judged by an AI, categorising the sentiment. Unclear if Glint provides this but it is a great feature if they do.
“It’s in the comments where the richest data is available to us”
Director
Why wasn’t it mandatory then? I felt it was way too easy to not think about the question and just give a random score without justification. I discussed this in the previous blog.
We were shown a tag cloud which is quite meaningless in isolation. Included words like:
Development
Action
Knowledge
Pressure
Raise
Barrier
Manage
Team member
Deliver
Workload
Responsibility
Request
Software
update
Remote working
We seemed to score particularly high on “Camaraderie” (Question: I have a good working relationship with members of my team); and “Work-life Balance“: (Question: I am able to successfully balance my work and personal life). I personally scored these high.
“These particular results show that The Company, on a personal level, is a welcoming, fulfilling and supportive place to work where colleagues feel safe and cared for, in particular by their immediate teams, and can enjoy a role which does not infringe on their personal lives. This is a reassuring picture, reflecting the nature of our business, the quality of our people, and the importance of our values.”
Director
We were really bad at “Barriers to Execution“: (Question: We do a good job removing barriers that slow down our work); “Collaboration“: (Question: Teams collaborate effectively to get things done); and “Culture“: (Question: has a great culture). Personally I was unsure about Barriers To Execution and Collaboration, and I feel Culture is too vague without examples of what it actually means. I would have thought Barriers and Collaboration would vary drastically between departments, so amalgamating the score as a whole seems a bit random to me.
“Our opportunities reflect a picture that shows colleagues are most frustrated when it comes to being able to effectively do their job to a high standard, especially when this involves working with wider teams or departments – either due to internal processes and tools or a lack of effective cross-departmental collaboration, communication, appreciation or awareness.”
Director
The HR director was appalled that we also scored low in “I believe meaningful action will be taken as a result of this survey.”. Despite hyping up our focus for this Employee of Choice thing, our employees don’t believe the Senior Management will improve things! 😀
“We know from the survey that many colleagues are sceptical as to whether this new approach to measuring employee engagement and responding to employee feedback will result in any meaningful action being taken.”
HR Director
One comment they picked out suggested that people complain about things but don’t actually raise these issues with management, so suggested we need more “Director Q&A” Sessions, or an “Employee Forum” where we can ask questions or raise issues. Maybe we really do need a culture change.
The thing is, we once created a Slack channel where we could contact the Software Development department managers (so that was specific to my department only). The Managers did respond to some concerns and one issue I remember we complained about was communication, where the Head of Development sends an email to 3 managers below him, and then those 3 managers forward the email on to their line reports, who then have to forward the email on to their line reports; but someone will be on leave, or just didn’t forward it on – then people miss out on info. After promising they would put an end to the madness, I think 6 months later it just started again. Then after a few more months, the Slack channel was completely dead. I think another issue is that it seems so obvious when there are issues, it seems crazy to think that managers don’t know about them. I mean, that communication example is an obvious problem! So then people may feel like they don’t need to raise it, or think managers won’t change their ways. It also doesn’t help that the HR Director keeps dismissing people’s rants on Glassdoor. She is always like “this doesn’t reflect my experience“. Well yeah, you are on a high paid job sat in a fancy office, of course you don’t know what it’s like on the ground.
“I want to reassure you that we are committed to learning from these results and will dedicate time to identify what actions are needed or where further exploration is required, at a Group-wide level. By providing line managers with rich and actionable data via personalised dashboards, we are empowering you all to drive change within your areas too. This is not a top-down approach but a collective one where we all have a role to play.”
Director
Group-wide Objectives
Improve cross-team collaboration
Improve understanding of cross-team priorities including wider strategic clarity
Ensure better communications between teams and business areas
Equip colleagues to have honest conversations
Create a mind-set change
Personally, I have no idea how you implement these. Surely some departments have these problems and others don’t. Only the individual departments would know if they can be fixed.
Q&A
Then in the Q&A section at the end, there was one complaint from Development, highlighting the increase in attrition and the general problem of us replacing Seniors with Juniors which was affecting the ability to complete projects on time.
Another complaint was how we posted record profits, boasted about the generous pay rises they dished out…but was still below the rate of inflation.
Another staff member challenged how someone had a correction to their pay due to the “gender pay gap”, but then excluded from the pay review because they already had a pay-rise that year. A similar thing happened to me actually where I was underpaid for my role and level of experience. It shouldn’t matter why you had a pay-rise before, you should get it adjusted for inflation as standard, and not be told you’ve already had a rise. All the current mindset does is re-introduce the pay disparity they were trying to address.
Another person made the point that sometimes Directors respond to questions on these Q&A sessions by saying they will “take it offline” and answer the person one-on-one. This means others in the company never see the answer to these tough questions – which then breeds a bad culture and then the feedback is only given via channels such as this Glint survey.
Closing Thoughts
You can easily understand why people doubt meaningful action will be taken from the results of the survey. We often highlight problems and then they just get shrugged off. I understand people always seem to moan about pay, so it is easy to shrug that off as “not an issue”.
I’ll be intrigued what they actually do to meet these objectives, and to become this “Employer of Choice” they keep stating.
At the start of the year, we were presented the “Technology Vision Statement” for 2022 by our CTO. Since we are around half-way through the year, I thought I’d revisit and critique it.
“The year 2022 will be the year of delivering cloud-ready, higher quality software at a faster pace. Our data will be integrated across products and be accessible via standard interfaces and we will begin a common user experience across our settings. Our business transformation will continue with SAFe, nurturing our talent management and the introduction of DevOps.“
Technology Vision Statement
So picking out keywords from this statement – are we on target for achieving this?
Cloud: Some teams are on projects involving “the cloud” but some of the projects are very basic and not exciting to the users. One project involves migrating a single column from a single database table into cloud storage. That’s right, one single column. The user won’t see any difference, it’s just some internal benefits but I think it has been a few months work.
Faster Pace: I completed a project back in January and I think we are planning on releasing it at the start of July. We are releasing software at the slowest we have ever done.
Data accessible via standard interfaces: I don’t know what this refers to. It sounds like we are implementing some amazing API that can work across all of our products.
SAFe: This is the Scaled Agile Framework for Enterprise. Most teams are working in this way, but my team isn’t.
Nurturing Our Talent Management: I think recruitment has been minimal and I think we have lost more than we have recruited.
Introduction of DevOps: We already had “DevOps”. I suppose we have improved the test environment pipelines so this might be the closest we have got to achieving this vision statement.
“Our people are valued, empowered and trusted. We are inclusive, authentic and thrive on our shared success.”
We were then shown a “hype cycle“. There wasn’t much explanation on this and I’d never come across this terminology before.
It looked pretty identical to this graph that I stole from the internet.
It had loads of products/features along a graph but the labels don’t exactly give a positive view on them. Are you hyped for a product that releases during the “Peak of Inflated Expectations“, or the “Trough of Disillusionment“. Maybe I need to read more into what this means.
Another similarity was that our graph had a lot of similar jargon-based features. Many that I didn’t think we would release, and I haven’t heard anything about these projects either such as: “Assisted Robots”, “Application Marketplace”, “Consumer Wearables”. Given the labels have products that are up to 10 years, I suppose they could just be conceptual ideas of where we want to be headed.
We then were shown a list of objectives under different categories which aim to “deliver the strategic vision“. Many are repeats from the vision statement, but then there’s added buzzwords and ideas like “innovation“, “increase efficiency“, “control costs“, “implement tech strategy“, and “implement agile coaching team“.
I often find that managers end up writing jargon-fueled posts that don’t mean anything to me. It’s often just hype, or a slight change which makes no difference in the grand-scheme of things. So it just frustrates me or makes me laugh. I was talking to a friend about this topic and he said he loves it when they get the word “synergy” in there, so I was glad to read in in this post:
One thing is certain in life, and that is that change is inevitable. But change doesn’t mean it’s a bad thing; it means new beginnings, new opportunities, new ways to improve. Over the coming weeks we will see some change come to our Product Team. A new structure to bring synergy with our SAFe implementation so that we are better aligned than ever to deliver our hugely important product roadmaps over 2022.
Most notably, Product Owners will move to report directly into the appropriate value-oriented structure (Vertical Markets or Horizontal values).This change will reflect the need to provide autonomy to the relevant specialist areas enabling them to;
make clear decisions on their respective priorities.
bring the Product Owner and Programme Management teams closer together supporting their knowledge of the ‘Why’ and the customers that we are focusing upon.
provide greater consistency of resources working on specific areas based on the technology/product/market in which they specialise
Certainly sounds brilliant doesn’t it? The next bit made me laugh though.
As a result of these changes, the role of Head of Product Owners no longer fits into the product structure and so, unfortunately, George will be leaving the business. He’s been heavily involved in designing the new structure…
Wait…what? He came up with this new team structure and forgot to put himself in it?
When colleagues were talking about improving “accessibility” of our software, I saw them write “a11y” and wondered what crazy thing this was. It turns out it is a “numeronym” which is like an abbreviation, but really dumb.
What you do is keep the first and last letter, then any letter you remove between those, you count them, and put the number there instead. So there are 11 letters removed from the word “accessibility” so it becomes “a11y”. I also came across i18n (internationalisation), and K8s (Kubernetes).
I’d never really thought about what the W3 in “W3Schools” meant. Seems these stupid abbreviations have been around for years but haven’t really took off until recently.
A bit of a rarity on this blog; time for something positive.
I have been reading the book “Shape Up” by Ryan Singer which can be downloaded free from https://basecamp.com/shapeup
Book Summary
Shape Up defines the Agile Process that Basecamp utilises. The summary at the end of the book lists their ideas as follows:
Shaped versus unshaped work
Setting appetites instead of estimates
Designing at the right level of abstraction
Concepting with breadboards and fat marker sketches (a sketch made with such broad strokes that adding detail is difficult or impossible)
Making bets with a capped downside (the circuit breaker) and honoring them with uninterrupted time
Choosing the right cycle length (six weeks)
A cool-down period between cycles
Breaking projects apart into scopes
Downhill versus uphill work and communicating about unknowns
Scope hammering to separate must-haves from nice-to-haves
There’s quite a bit of Basecamp jargon in there. Some of the sections I didn’t care that much about, but there’s plenty of aspects that seem like they counter many of the problems I have witnessed when it comes to Agile development. So I think this book does provide answers.
Notes From The Book
Some key points that I liked or found interesting (this is basically me copy and pasting from the PDF):
Instead of a traditional two week sprint, they work in six weeks. This time is “long enough to build something meaningful start-to-finish and short enough that everyone can feel the deadline looming from the start”.
They “focus less on estimates and more on our appetite. Instead of asking how much time it will take to do some work, we ask: How much time do we want to spend?”
Small Batch : This is a project that a team of one designer and one or two programmers can build in one or two weeks. We batch these together into a six week cycle.
Big Batch : This project takes the same-size team a full six-weeks.
They “give full responsibility to a small integrated team of designers and programmers. They define their own tasks, make adjustments to the scope, and work together to build vertical slices of the product one at a time”.
“Pitches” are posted as Messages in Basecamp software. There are five parts to include in a pitch:
1. Problem — The raw idea, a use case, or something we’ve seen that motivates us to work on this
2. Appetite — How much time we want to spend and how that constrains the solution
3. Solution — The core elements we came up with, presented in a form that’s easy for people to immediately understand
4. Rabbit holes — Details about the solution worth calling out to avoid problems
5. No-gos — Anything specifically excluded from the concept: functionality or use cases we intentionally aren’t covering to fit the appetite or make the problem tractable
“Before each six-week cycle, we hold a betting table where stakeholders decide what to do in the next cycle. At the betting table, they look at pitches from the last six weeks or any pitches that somebody purposefully revived and lobbied for again.”
Backlogs are big time wasters. “The time spent constantly reviewing, grooming and organising old ideas prevents everyone from moving forward on the timely projects that really matter right now”. Pitches therefore, do not go on backlogs. “If we decide to bet on a pitch, it goes into the next cycle to build. If we don’t, we let it go. There’s nothing we need to track or hold on to. What if the pitch was great, but the time just wasn’t right? Anyone who wants to advocate for it again simply tracks it independently—their own way—and then lobbies for it six weeks later.”
“It’s not really a bet if we say we’re dedicating six weeks but then allow a team to get pulled away to work on something else. When you make a bet, you honor it. We do not allow the team to be interrupted or pulled away to do other things.”
The “Circuit Breaker”: “We combine this uninterrupted time with a tough but extremely powerful policy. Teams have to ship the work within the amount of time that we bet. If they don’t finish, by default the project doesn’t get an extension. We intentionally create a risk that the project, as pitched, won’t happen. This sounds severe but it’s extremely helpful for everyone involved.”
it eliminates the risk of runaway projects
it means we did something wrong in the shaping
Dealing with bugs
Use cool-down – the two week gap between the six week cycles
Bring it to the betting table – plan it into the next cycle
Schedule a bug smash – dedicated time usually around downtime like Christmas
Personal Comments From My Experience
So some discussion on why their approach is good:
I found with 2 week sprints there’s a lot of meetings involved for only 10 days work. You end up spending half a day planning, then there are 1 hour meetings like the “Retrospective” that happen at the end of the 2 weeks. With all these meetings, it cuts into the 2 weeks. 6 weeks makes it seem like the planning is less frequent and more worthwhile. You have more to praise/criticise when you reflect on your team’s progress during the retrospective.
Sometimes important bugs become the priority then you end up shelving your work. It would be nice to have the intense focus to ensure you finish what you start.
When we get to the end of the sprint, it is too easy just to move the work into the next sprint, so it makes the 2 week block seem meaningless. Knowing the timing is stricter will put more focus on actually delivering.
Often, bugs that you think are annoying are deemed low priority so they get shoved on the backlog and never fixed. First of all, it would be good to have the freedom to fix bugs that personally annoy you. Secondly, what is the point of having a backlog if it’s just a list of work you know no one will ever address.
A former colleague left to set up some kind of business to do with public speaking. He did have a fairly short-lived video channel where he posted up vlogs about software.
He was a terrible speaker.
There was one video where I thought his dialogue was so funny, I typed up the transcript, so I can laugh about it in the future. Well, I have found the notes. Here it is:
The reason for that is that a good friend of mine, erm, erm Neil, who I went to university with, erm, commented on Facebook, er and said, you know ‘what do you mean by “Digital Service”, surely it is just software?’.
Erm, oh erm and, I…yes it is just software, erm… but I…I’m trying to make a distinction, erm, erm, trying to make a point about, erm, er the nature of software and the nature of delivering software and that to me, erm software IS a digital service.
Erm, erm… you know… erm, there’s there’s, you’ll not have come across a software project that erm… simply, erm… you deliver the software and you walk away, erm that never usually happens, you you, you are actually delivering a service, because erm when you deliver software erm you sort of committed to support that software, you committed to provide a service, erm, for me, software engineering is actually all about, erm, taking a service and transforming that service, such that you are providing new features, new functionality, maybe you are joining things up.
Maybe you’re, erm, erm, you are seeking to refresh that service, you are seeking to, erm… ensure that service is continuing to deliver the value it’s meant to deliver. You are maybe looking to make sure the service is more efficient. You, you’re using, you’re developing some software, delivering some software to transform a service.
“Software” vs “Digital Service”
I hope you understood that, because I certainly didn’t.
People often add filler sounds like “erm” when they are nervous, but he had all the time in the world to write a script, record it, and edit it. It’s not a great promotion of his “skills” that he is selling.