Principal Engineer in London, speaker, tabletop gamer, geek. Tattooed, pierced, and bearded. The 'guv' on
@BrighterCommand
. Also
@ICooper
@hachyderm
.io He/him.
I have been a little bit remiss in advertising the next dates that you can join my Practical Messaging course. So here they are:
Craft Conf 28-29 MAY
NDC Oslo 10-11 JUN
GOTO Copenhagen 30 SEP- 1 OCT
Day 1: Messaging Patterns Day 2: Conversation Patterns
Hope to see you there.
@pritipatel
It insults those who have given their lives for us during this pandemic. Never have I been more ashamed to be British than on this day of ingratitude.
I hope that no one having the temerity to support this believes they have a right to clap for carers
#ImmigrationBill
@bitfield
Job market says that is not true: learn Python, JavaScript/TypeScript, C#, Java and C++.
Go and Rust are great languages, but there is no evidence for the claim that the industry is converging on them.
Don't do this.
In TDD you write tests first. By writing tests that exhibit the simplest behavior, writing only enough code to pass that behavior, and then adding more tests, you get scope control and lower complexity (as well as a better api)
1/
The software development I knew is now gone forever.
I spent around 10 years convincing everyone that writing unit tests was critical to developing software.
Unfortunately, people like unit tests until they have to write them. "We didn't have time," they'd tell you.
And I get
Just to re-iterate no one in the UK should use the
#ContactTracingApp
* Reports to central server
* GCHQ have access to de-anonymised data after Hancock passed law to allow this
* Data will be used beyond crisis
* Faculty and Palantir who have poor ethics records will gain data
I’m always slightly embarrassed by noting my Microsoft MVP award. I’m British and we don’t do self-promotion well. This will be 16 years, and I still suffer from imposter syndrome over the whole thing. Grateful as ever.
#MVPBuzz
Software Engineering continues to suffer from a binary, context free perspective on practices, patterns and tools. Any practice is either "excellent" or "awful" in all scenarios.
Engineering needs to mature to understanding there is a box of tools which may help in your context.
“Those who cannot remember the past are condemned to repeat it.” - George Santayana
CASE Tools, UML 2.0, 4GLs, Software Factories, DSLs…
Writing code has been “dead” quite a lot of times in my career. Consistently a 3GL has remained the right abstraction.
Jensen Huang, CEO of Nvidia, argues that we should stop saying kids should learn to code.
He argues the rise of AI means we can replace programming languages with human language prompts thus enabling everyone to be a programmer.
AI will kill coding.
Be yourself at interviews. If they don't hire you because you were yourself, you probably didn't want to work there. You would be miserable every day going in to work.
@trisha_gee
at
#ProgNET
DDD's biggest adoption problem is 'six blind men and an elephant'. Many developers encounter parts of DDD, often the patterns, and find it confusing because they can't see the whole. This becomes worse when developers form cargo cults around the parts of the DDD 'elephant'.
Contemplating writing a LeanPub book on TDD, Ports and Adapters, CQRS (without ES), and 12-Factor. In other words an opinionated view of how to development.
Likely a first version in C# as it’s my most comfortable language but possibly translatable.
So that AWS piece tells more about failure to understand what a microservice is, than anything else.
There is one microservice in play here: Audio/Video Monitoring Service.
That is the sub-domain being automated (and the bounded context)
1/
Yesterday I became fed up with someone’s perpetual griefing of the C# community. I don’t regret that. If your main shtick in tech has become mockery of a group, to try and win popularity, then you add nothing to the world. You just contribute toward the toxicity of online culture
This is a sad day for the London Tech Community. The crew behind
@skillsmatter
have been at the heart of our community for many years.
When someone writes the history of the East London tech scene, then
@skillsmatter
and its founder
@wendydevolder
deserve their place
ReSolve was appointed Administrators of
@skillsmatter
on 31st October 2019. If you are interested in this opportunity please contact us for further information:
@robconery
@jonskeet
There is a toxic culture in software development of 'proving you are better than someone else' which discourages admitting ignorance, asking questions etc.
Sadly its probably just more toxic masculinity.
:-(
@d_stepanovic
Writing code that does not account for:
- Someone else will need to understand it
- Someone else will need to change it
- Someone else will need to own it
You will move on, your code will remain.
Sadly a lot of the ‘thought leader’ comments on microservices vs. monoliths seem pretty dumb.
Both microservices and monoliths are architectural styles. You obey some constraints and in return you obtain some properties.
The properties let you reason about the best fit for you
My canonical answer for any C# interview, where a prospective employer asks you do to a quicksort on the whiteboard.
var myList = new List<string>{"foo", "bar",...} ;
list .Sort();
For extra credit point out this is adjacent sort, quick or heap depending on list length.
I used to believe that Architect was a distinct job from engineer. I argued against Fowler’s position on that.
I don’t any more. I think that we are just referring to experience. As you progress as an engineer you learn more.
Hopefully European engineers would have avoided a version number in the URI and used a header to version their API instead though. Especially if their plan was to publish a URI on a billboard…
One benefit of mobbing/pairing that is less talked about is that it can be a useful antidote to imposter syndrome. Because you see everyone else using StackOverflow, iterating until it works etc. alongside you, you realize that is the bar, not one you imagine from completed work.
For those that don't know, today was my last day
@huddle
. From next week I will be joining the team at
@justeat_tech
.
It has been a fantastic eight years. Thanks to
@alimitchell
@Bandrew
and
@jonathanhowell
who put their faith in me all those year ago.
New horizons await.
Dear front-end developers, the whole thing where you display a list of results progressively is annoying.
8 times out of 10, when I go to click on the item I want, the list refreshes and I get something else.
It's annoying, please stop it.
Thanks
DDD is simply: we should emphasize modelling the business problem - the domain - not technology. Here are some techniques that help us model, model at scale, diagnose model issues, focus on the model by isolating it from technology, respond to changes of the model
Top 8 Shakespeare sonnets, written in Elizabethan English.
Sonnet 98.
Sonnet 29.
Sonnet 24.
Sonnet 134.
Sonnet 18.
Sonnet 116.
Sonnet 130.
Sonnet 104.
Shakespeare didn’t use Go to write any of these.
No one in the sonnet community considers Go for writing sonnets.
BTW as recruitment has come up in the last couple of tweets.
Please stop demanding that engineers have a degree, or a degree from a specific university.
This will help you increase the diversity of your hiring pool.
@copyconstruct
Please be careful about your words as they can lead to age discrimination. The software engineering community does not need to promote tired tropes and prejudices against older developers.
When you begin a career in software development your first focus is going to be on the tech stack that you are using.
That’s a good choice for your early career as it helps you get new work and climb the early steps of the ladder.
1/
@RichardBenyonMP
Someone decides to seize power from Parliament, and you want to 'cut him some slack'?
Your complicity with the overturning of our democracy beggars belief. What else will you happily sell out?
Home schooling with 6 so far:
* 6 is refusing to file JIRA tickets for issues, help requests. Seems to feel JIRA is confusing.
* Stand up meetings are chaos, filled with rambling anecdotes about dolls
* She doesn't focus when pairing, doodling on paper or sharpening pencil
We need to re-think the .NET Foundation. It ought to be a PSF, CNCF or Apache for the .NET ecosystem. The tendency toward
#dotnet
monoculture may be due to the failure of the Foundation to encourage usage of non-M OSS
After careful consideration, we're leaving the .NET Foundation.
Our commitment to building an amazing cross-platform UI framework remains firm.
You can learn more on GitHub:
If, as a software engineer, you agree to perform work related to this, you share the burden of guilt for this inhumane and monstrous decision. Please refuse to consent to work on it. Quit the Home Office and look for new work if circumstances allow.
#Rwandaconcentrationcamp
NEW: UK to send asylum seekers to Rwanda, Boris Johnson announces
Plan to ‘offshore’ people seeking refuge in Britain in African nation 4K+ miles away condemned as ‘unworkable & nasty’
This is actually happening. Financial & human cost likely to be huge
@KentBeck
Business value comes from: Increasing Revenue, Protecting Revenue or Reducing Costs. I tend to find its best to sell design improvements as one of those.
This will make it quicker to add new features. [Reduce Cost]
This will prevent us going down at peak [Protect Revenue]
This YouTube playlist should contain most of my talks, if you are looking for one.
Subjects include: TDD, Software Architecture, Microservices, Event Driven Architectures, and various Artisanship talks.
Daily stand up meetings are for teams practicing whole team working - everyone taking tasks on the same story - and it is a way for them to communicate about shared work. If you don't have that context, don't do stand ups.
I can honestly say, after 15 years and during projects with tiny teams and gargantuan teams, I think I’ve been in only 2 standup meetings that provided any value whatsoever.
All the rest? Complete waste of everyone’s time and usually, a momentum slashing daily ritual.
@david_whitney
I actually quite like it. Perhaps I just like explicitness as a way to draw my eye to the right parts of the code; to me it’s no different to XUnit’s opinionated constructor/method/deconstructor.
I see the prevalent wisdom against evident architecture; I’m not sure I agree.
So agile never intended there to be “design by code review”. If you are doing design by PRs then STOP.
NOW!
Agile does not use the PR for a design step.
So what you should do instead follows:
I gave the follow up, with rules, to TDD Where Did It All Go Wrong, during the pandemic, so folks missed it.
As it has come up again today, I'll re-share.
Key Takeaway: Write Programmer Tests, not Unit Tests.
Slides:
Video:
Maybe it's just my 'echo chamber', but post .NET Core, I am seeing a lot more low-level programming discussions in my feeds.
I think that is a good thing btw, people asking important questions.
I guess it made no sense when folks could not impact these choices in the past.
Rather than try to argue 'complexity of a clean architecture' on Twitter, if you are really interested, go and watch my talk here:
The refactoring takes place from about 41 mins, if that is all you want to see.
“I felt a great disturbance in the Force, as if millions of voices suddenly cried out in terror and were suddenly silenced. I fear something terrible has happened.”
That moment when you hit a bug sending to RMQ, google the error message, find your own response to someone in a GitHub issue, and solve the problem from your own advice to someone else.
Thanks past-self, you are awesome.
(In other news we look at ideas of personal identity...)
I see a lot of folks, like
@GergelyOrosz
wondering how things change for Tech post-ZIPR. My broad rule of thumb is this:
* When resources are scarce expect greater conflict
* When resources are abundant expect greater co-operation.
This manifests at all levels.
@GergelyOrosz
I wrote about this here:
My hot take version is: AI won’t allow you to do something you don’t know how to do; it will remove toil from things you do know how to do.
3. 10x engineers laptop screen background color is typically black (they always change defaults). Their keyboard keys such as i, f, x are usually worn out than of a, s, and e (email senders).
I think that I may have forgotten how I used to learn new C# language features before I began to rely on JetBrains Rider just prompting me with suggestions.
Would you like to convert to a using declaration? Well, yes, that looks neat, yes, I would.
@DexBarton
What makes you think that coding is not a creative profession?
Writing code is similar to writing a story or a song. It demands creativity, the need and will to make, and a sense of quality
#dotnet
has the richest choice of messaging frameworks of any language, today; competition amongst those projects has created innovation that offers dotnet developers choices others don't have.
MS entering the space will crush competition, and reduce innovation.
Catching up on comments in this one:
Just coincidentally, I strongly recommended to a client this week to eliminate the usage of SimpleInjector because it didn't play well w/ the .NET DI abstractions in new-ish .NET as they upgrade
1: I have joined in a few threads on this, but wanted to provide some clarity on my thoughts here. The Repository pattern seems to come up a lot as anti-pattern for some, and pattern for others.
The key is DDD is not 'this set of techniques'. It's how do we focus on the domain as the core of our design activities. That is why it is domain **driven** design.
Techniques that help with that are valid parts of practice. Some will go, some will stay, as we learn.
This is truth. I now learn new language features by letting
@JetBrainsRider
hint to me that there is a better way to do this now.
I secretly want Rider to have a clippy
@jonskeet
that pops up and says: "Looks like you could use a Record type here, can I refactor that for you..."
IMO in .NET OSS we should just accept:
* The largest contributor to .NET OSS is Microsoft.
* Some OSS frameworks on .NET dominate: , EFCore, etc.
* Much of .NET OSS is libs/frameworks, which are difficult to monetize
Before the end of 2021, I'll try to put together a LeanPub for C# developers on modules, and layers. I may well cover off TDD in that context. I think it may be the simplest way to explain where our current apps go wrong with their focus on DI, mocks, IoC, feature folders etc
The problem is that if you don't understand microservices as essentially SOA 3.0, and align with business capabilities, then what you actually built were nanoservices.
There is no need to rename microservices - just to have understood what they actually were.
For the record, at Uber, we're moving many of our microservices to what
@copyconstruct
calls macroservices (wells-sized services).
Exactly b/c testing and maintaining thousands of microservices is not only hard - it can cause more trouble long-term than it solves the short-term.
@JamesMelville
James doesn't understand choice.
The unvaccinated, those with compromised immune systems, those who produced no antibodies from the vaccine - will all have choice taken away from them today - the choice to leave their homes and meet with others - if you choose not to wear a mask
I'm not really sure why this is has become a 🌶️ take. This is just a method call using async/await that takes a lambda expression that returns a new record based on an old record. Nothing here has not been in the language for a while.
Woman in supermarket to cashier; “So because everyone in my house tested positive, I thought I better come out shopping before I tested positive too”.
Cashier nods at this wisdom.
Neither are wearing masks.
People are doomed, aren’t we.
There is a special place in hell for whichever one of you works at and decided to disable cut&paste on fields like email address for registering coronavirus tests and makes you enter it manually, twice...
It's worth noting JetBrains decision to cut ties with Russia. A choice that will have a real cost for them, but the right choice due to Russia's aggression. There can be no normal relationship with Russia now.
@NHSMillion
The entire
#UKCabinetMustResign
over their defense of law-breaking, which undermines our national effort against this disease.
The AG has effectively excused every person with CV-19 from isolating and permitted them to travel. No fine should be paid by anyone.
Part of the problem is that team’s tend to allocate a story to an individual, work alone, and then review at the end.
Teams should work on a story together. Pairing (and mobbing) helps get more people working together (unless there are rote tasks).
@itasyurt
Pair programming is a better code review, than other mechanisms and it doesn't add delays by making the review concurrent with doing the work.
The "review" is more in-depth and more timely, because we spot the mistakes as we make them rather than some time later.
“A staggering 65% were propositioned for sex. Another 50% said they were told they’d get more money if they were a man.”
My fellow men, we have a real problem. Are you not ashamed at that?
We just don't seem to be moving the needle.
I set up
#WomenOfDotNet
and all it seemed to do was deplete me.
If tech keeps losing the brilliant women we have we have no chance.
I'm just so tired of the fight, like so many.
#WomenInTech
I've released version 0.27.0 of Spectre.Console, which should be available on NuGet shortly. 🎉
In this version, I've added support for table footers, table alignment, and table captions. There is also a new widget to render horizontal rules.
If .NET folks want to tackle real challenges, rather than waster our time with the red herring of complexity, recognize the issue is:
- self-contained, small executables, with fast start-up time and low memory footprint
That matters in containers or serverless
This is why MPs in the House of Commons are not fit to pass laws on internet security issues; such fundamental ignorance of how to be safe exposes their incompetence in these matters.
My staff log onto my computer on my desk with my login everyday. Including interns on exchange programmes. For the officer on
@BBCNews
just now to claim that the computer on Greens desk was accessed and therefore it was Green is utterly preposterous !!
In case you wondered this is what ageism looks like. Age is a protected characteristic. Be better than this. If you think like this, you are part of the problem. Do the work to be better.
@sleepyfox
@davenicolette
@Adam_Karpiak
Older more expensive juniors = terrible developers.
All jokes aside.
In some countries, after 30 y/o, it's unlikely you will be considered for a dev job, which is good. The issue is that some devs want to be a software engineer forever. Career choice fail. After 30, manager.
So mask wearing is to be 'recommended in some contexts but not legally enforceable'.
People's masks protect each other. So the selfish are to be offered protection by the selfless and not the return. Clear Tory message to the UK: fuck everyone else, it's all about you.
I believe the problem is that when we compress ideas for onward transmission, that compression is lossy and when folks decompress the idea to use it, they fill the gaps with their knowledge, which radically changes the idea in transmission.
@searls
I’m a principal engineer. Partially I think the title gained currency to replace architect as as the next ladder step for IC as opposed to management track, when we decided architecture should belong to everyone.
@davidfowl
I commented: "I don't think this has good usability. We should not be adding language statements to variable names. The name ought not to indicate anything about the type, the type should."
A note that whilst many of you have seen "TDD Where Did it All Go Wrong"
during the pandemic more of you missed the follow up TDD Revisited, which tries to establish fallacies and principles
142 days into the Russian invasion of Ukraine it is easy to let it fade from our consciousness. Putin is relying on that, on our resolve weakening, our shock at the horror of his actions numbing us as the war drags on.
Ukraine fights on, we must stand with them.
@HSCORPI0
@cbeebies
How lovely for you. My kids are mixed race. They don’t enjoy the privilege of not knowing about racism.
Teach your kids about racism.
Following the discussion on Developer vs Unit Tests in TDD, a lot of this explained in the deck I use for talking about this at conferences. It has my fallacies and principles of TDD:
(All my decks are online, but I made a PDF of this one, just for you.)
@Grady_Booch
Elinor Ostrom has literally won a Nobel prize in economics for outlining patterns of success for de-centralized organizations: DAO is just casual erasure of people's work.
“But the trouble with this is that Boris Johnson’s Government has been lying to the public – and the BBC has helped it to do so.”
Excellent comment on why public service broadcasters can’t remain ‘impartial’ when governments gaslight the public.
“BBC journalists hold a wide variety of political views and, in my experience, they mostly do an excellent job of stopping their personal views from influencing their output. Gibb is an exception.”
@Baghdaddi
Normally on an election day I encourage you to vote regardless of your political persuasion.
Today though my wife can’t vote due to not having id that matches with the requirements of the
@Conservatives
voter suppression measures in the U.K.
So fuck you if you vote Tory.
Every time you let the locker room discourse of the tech bros pass without calling it out, you just end up enabling it.
2020 has been a tough year. Enough of the tech bro shit already.
If you are interested in the blockchain and web3 debate, I would suggest reading Mark Burgess's application of Promise Theory to reviewing the promises made by the technology (and by comparison of other distsys alternatives).
Broadly, TDD, like any agile practice is *one* answer to the following problem:
- I have made a decision, what is the most immediate, useful feedback I can get on that decision before I build on it.
TDD has certain properties: it's fast and binary. It validates code designs.
It feels like Twitter is the bar we all used to hang out in, where we had “times” together. Then the manager changed, they redecorated and took out that old jukebox with “our” tunes and a new crowd started showing up.
There were no “times” there any more.
For clarity, I cancelled over the weekend too, both my talk and workshop.
I’m sorry for anyone who is inconvenienced by that; I hope we will have the chance to be together somewhere else soon.
It seems DevTernity Conference (
@devternity
) is fraudulently still advertising me as a speaker. I have withdrawn, along with several others still being advertised, due to the organisers listing fake women speakers.
I don't know if you can get a refund.