Jason Gorman @jasongorman@mastodon.cloud Profile Banner
Jason Gorman @jasongorman@mastodon.cloud Profile
Jason Gorman @[email protected]

@jasongorman

Followers
10,739
Following
1,043
Media
3,507
Statuses
103,825

Of @codemanship . I train and mentor software developers in... well... software development, come to think of it.

London, UK
Joined January 2009
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
@jasongorman
Jason Gorman @[email protected]
6 years
1998: "You should build systems out of single-purpose loosely-coupled components 2008: "You should build systems out of single-purpose loosely-coupled components" 2018: "You should build systems out of single-purpose loosely-coupled components" Technology changes so fast!
50
1K
4K
@jasongorman
Jason Gorman @[email protected]
4 years
Universities, stop teaching UML. Take it from me. I've had over 2 million downloads of my UML tutorials. You're wasting your students' time. Teach them unit testing, version control and basic software design principles.
104
874
4K
@jasongorman
Jason Gorman @[email protected]
2 years
After twelvety years in software development, I've come to the conclusion that the fastest way to deliver the right software is to deliver the wrong software sooner.
68
438
3K
@jasongorman
Jason Gorman @[email protected]
2 years
Before you write a null check in your core logic, ask yourself how a null made it that far. And then fix *that*.
108
234
2K
@jasongorman
Jason Gorman @[email protected]
10 years
2 things programmers tend to underestimate: 1. How long things take 2. How long our code will be around 3. How many things we underestimate
39
3K
2K
@jasongorman
Jason Gorman @[email protected]
3 years
Pair programming isn't 2 people doing the work of one. It's 2 people avoiding the rework of 7.
@dmokafa
Daniel Moka⚡
3 years
Pair programming is one of the most underrated practices. Two heads are better than one. By practicing it we end up doing fewer coding mistakes, having better quality, and doing continuous knowledge sharing. It is highly beneficial both for the code and for the team.
28
86
506
11
308
1K
@jasongorman
Jason Gorman @[email protected]
7 years
Don't think of pair programming as 2 people doing the work of one. Think of it as 2 people avoiding the rework of 7.
9
923
1K
@jasongorman
Jason Gorman @[email protected]
2 years
Things that won't reduce delivery cycle times: 1. Daily stand-up meetings 2. Product backlogs 3. Burn-down charts 4. Jira Things that *will* reduce delivery cycle times: 1. Smaller releases 2. Closer customer involvement 3. More frequent check-ins 3. Faster build & test cycles
21
320
1K
@jasongorman
Jason Gorman @[email protected]
2 years
The year is 2023, and I still have to explain to software development managers that when the schedule is slipping, hiring more developers and cutting corners on testing will make the schedule slip even more. This has been development management 101 for nigh-on 50 years.
52
160
976
@jasongorman
Jason Gorman @[email protected]
6 years
One of the hardest things I find to persuade developers about is that they should take their time. They often feel under pressure to rush things and "hustle". The organisational culture often undermines that message. But it's true. Wanna go faster? Take your time.
29
371
883
@jasongorman
Jason Gorman @[email protected]
3 years
For my whole career as a software developer, I've never understood the logic of hiring one group of people to understand your problem, another group of people to solve it, and yet another group of people to check that the people solving the problem actually understood it
53
170
876
@jasongorman
Jason Gorman @[email protected]
5 years
It's quite staggering what 4 good software developers can achieve in a year if you let them, compared to what 400 can achieve in 5 years. Still amazes me when managers choose the latter.
44
253
863
@jasongorman
Jason Gorman @[email protected]
6 years
I rarely use the term "agile" these days. If I mean "responsive to change" or "adaptive", I just say those words. If I mean "self-organising", I say it. If I mean "lightweight", I say that. If I mean "cynically exploiting a trend to sell certifications", I say that
4
283
811
@jasongorman
Jason Gorman @[email protected]
2 years
What was your first real IDE? (Mine was Turbo Pascal).
690
18
777
@jasongorman
Jason Gorman @[email protected]
6 years
When a manager tells me they want 100% utilisation of their dev teams, I ask the "Who's living in your house right now? Who's driving your car while we're talking? Is it okay if my friend uses your idle phone?"
25
304
762
@jasongorman
Jason Gorman @[email protected]
6 years
If all your microservices need all your other microservices to work, I heartily recommend consolidating them all back into a single ball of mud. Because that's what you've got there.
16
388
697
@jasongorman
Jason Gorman @[email protected]
3 years
Software architecture isn't about the boxes, it's about the arrows.
17
116
632
@jasongorman
Jason Gorman @[email protected]
5 years
"We do unit testing with external dependencies" "We do Continuous Integration using feature branches" "We do TDD, but we write the tests after" "We do BDD, but we write the specs ourselves" "We do refactoring... sorry, what does that word mean again?"
26
184
497
@jasongorman
Jason Gorman @[email protected]
11 months
Hot take: some programming languages dating back more than 50 years had pretty much all the ingredients you need to write reliable, testable, readable, modular code. We've just been very good at finding reasons not to, and a new language won't fix that.
27
43
501
@jasongorman
Jason Gorman @[email protected]
5 years
I wish devs would defend things like working directly with their customers as passionately as they defend their favourite programming languages. You'll be working in Java" "Over my dead body!!!" "You won't get to talk to the customer" "Whatevs"
27
153
474
@jasongorman
Jason Gorman @[email protected]
4 years
A. Because we start with the punchline Q. Why can't Test-Driven Developers tell jokes?
8
162
470
@jasongorman
Jason Gorman @[email protected]
5 years
"Our manager won't let us write automated tests. What should we do?" If you need them, write them anyway. And next time, don't ask.
30
124
449
@jasongorman
Jason Gorman @[email protected]
6 years
"I want to be a software architect" Cool, you'll need to learn about design principles, design patterns, ways of visualising design, analysing code, giving feedback, mentoring about design etc. "No, I don't want to learn any of that." Fine. Be one of *those* architects then.
15
153
441
@jasongorman
Jason Gorman @[email protected]
3 years
Software development is easy. Just ask anyone who's never done it.
11
114
432
@jasongorman
Jason Gorman @[email protected]
6 years
Sometimes people complain about the trivial nature of TDD katas. It's not like real production code, they say. Real code is complicated. I reply that if their code was composed out of simple, loosely coupled parts, it would essentially be a sequence of trivial katas:)
16
196
428
@jasongorman
Jason Gorman @[email protected]
11 years
Never underestimate a C programmer's ability to write C code in any language you give them
42
711
415
@jasongorman
Jason Gorman @[email protected]
2 years
Abandon your hopes of getting it right first time. It's a fool's errand. Optimise for rapid, sustained iterations of working software with close and continuous customer collaboration.
10
24
420
@jasongorman
Jason Gorman @[email protected]
2 years
It's depressing how many "agile" teams are effectively trapped in "incremental Waterfall" processes where the UI design's been done up-front - typically without the involvement of them or of end users - and it isn't allowed to change.
31
75
407
@jasongorman
Jason Gorman @[email protected]
2 years
I've learned a lot about using GPT-4 in software development over the last couple of weeks. The way I see it, the irony of LLMs in programming is that developers who can tell if the output's correct probably don't need them, and developers who can't should stay away from them.
33
91
404
@jasongorman
Jason Gorman @[email protected]
3 years
"Your example is too simple. Real code is messy and full of dependencies and very hard to test, and TDD won't work on that." Weirdly, when I TDD it, real code ends up being simple and modular and very easy to test.
18
80
395
@jasongorman
Jason Gorman @[email protected]
3 years
If your code is hard to change, then all your stand-up meetings and sprints and burn-down charts and retrospectives are just Agility Theatre
6
130
370
@jasongorman
Jason Gorman @[email protected]
13 years
We should think ourselves very lucky that Alan Turing didn't patent "a single machine which can be used to compute any computable sequence"
37
2K
366
@jasongorman
Jason Gorman @[email protected]
6 years
8 qualities of maintainable code: 1. Can be (re-)tested quickly 2. Is easy to understand 3. Low duplication 4. Made of simple parts... 5. That do one job... 6. And barely know each other... 7. With swappable dependencies... 8. And client-specific interfaces
9
180
354
@jasongorman
Jason Gorman @[email protected]
6 years
We typically cite "improved code quality" as a ratonale for pair programming, but what I see every week is devs learning from each other when they pair. Teams that pair a lot tend to learn faster. And by that route, maybe, better code happens.
15
148
340
When I was contracting, I learned that some factors in software development are a red flag. These were my deal breakers: 1. Large teams. > 12 people was a harbinger of doom. 2. No direct interaction with biz stakeholders, especially end users. 3. Majority of junior devs
31
37
346
@jasongorman
Jason Gorman @[email protected]
6 years
In the interview: "Can you write a Java implementation of an O(log(n)) binary tree search on that whiteboard?" On the job: "Can you change the font for the shopping basket total?"
7
158
334
@jasongorman
Jason Gorman @[email protected]
2 years
A Scrum Master isn't a manager. A Product Owner isn't a manager. They're not in charge of the development team. How many times do we have to say this?
27
70
341
@jasongorman
Jason Gorman @[email protected]
2 years
You know that developer who joins a team years into the product's lifecycle and automatically assumes every decision made up to that point was bad because he didn't make it...
41
26
326
@jasongorman
Jason Gorman @[email protected]
5 years
Agility is when a programmer can go out and buy a new 40" monitor and they don't have to ask anyone's permission to buy it or to leave the office for an hour. Yeah, I'm looking at you, every single self-proclaimed "agile organisation" ever.
19
85
325
@jasongorman
Jason Gorman @[email protected]
11 months
Here's a handy graphic.
Tweet media one
@jasongorman
Jason Gorman @[email protected]
11 months
"The hard thing about building software is deciding what one wants to say, not saying it. No facilitation of expression can give more than marginal gains." The author of The Mythical Man-Month explains in 1987 why coding isn't the bottleneck.
6
13
70
10
92
329
If your job title is "Senior Software Engineer" and you think testing is someone else's job, I have news for you...
22
50
322
@jasongorman
Jason Gorman @[email protected]
7 months
The problem with Test-Driven Development is that you have to think a little about what you want the code to do before you write it. And that ruins the surprise.
@kettanaito
Artem Zakharchenko
7 months
Here's the truth about TDD (Test Driven Development). It's a broken practice. It's always been broken. It's broken by the definition of it. Its biggest merit is the encouragement of testing but that's about where it ends. TDD implies writing tests before writing the code. So,
163
136
1K
20
29
324
@jasongorman
Jason Gorman @[email protected]
2 years
Why use a team of 8 developers when when you can get half as much done in twice the time with 16?
14
36
307
@jasongorman
Jason Gorman @[email protected]
2 years
Here's my take on what happened to Agile Software Development: to make the medicine more palatable to executives, they took the active ingredients out.
16
57
307
@jasongorman
Jason Gorman @[email protected]
2 years
"But how can we write tests first if we don't know what the code's supposed to do?" isn't the slam-dunk argument against TDD you think it is
28
33
295
@jasongorman
Jason Gorman @[email protected]
3 years
"Ah, but what if the senior developers have been writing code that mostly isn't unit-testable?" Those aren't senior developers. They're just older.
7
51
293
@jasongorman
Jason Gorman @[email protected]
5 years
"We do Continuous Integration, but on feature branches" "We do TDD, but we write the tests after" "We do BDD, but we write the customer tests ourselves" And I'm agreeing with you, even though it looks like I'm actually shaking my head
8
107
289
@jasongorman
Jason Gorman @[email protected]
6 years
Lots of people asking about Evil FizzBuzz. So here are the instructions: (1/)
7
144
288
@jasongorman
Jason Gorman @[email protected]
2 years
Agile isn't faster. It's sooner.
13
64
285
@jasongorman
Jason Gorman @[email protected]
2 years
My reply to someone promoting the use of Copilot and GPT-4 as the cure for all our software engineering bottlenecks. #CodingIsNotTheBottleneck
Tweet media one
22
60
279
@jasongorman
Jason Gorman @[email protected]
3 years
"If I don't do TDD, I can get my code into production faster". And if you don't cook the burgers, you can get your food to the diners sooner.
8
72
274
@jasongorman
Jason Gorman @[email protected]
2 years
Your regular reminder that Agile Software Development doesn't produce working software faster, it produces it SOONER.
10
39
280
@jasongorman
Jason Gorman @[email protected]
4 years
DEPENDENCY INJECTION DOES NOT REQUIRE A FRAMEWORK. (Indeed, your code will likely be better off without one.)
24
38
276
@jasongorman
Jason Gorman @[email protected]
3 years
if(condition) { return true; } else { return false; } You'd be amazed how often I still see this in production code
47
28
270
@jasongorman
Jason Gorman @[email protected]
2 years
"I don't see any need to separate logic from the UI" say teams who are on their fourth JS framework in 10 years.
17
29
266
Devs: "Software development's all about communication" Also devs: "To improve my productivity, I need to block out time when nobody can communicate with me"
29
34
261
@jasongorman
Jason Gorman @[email protected]
6 years
The average cost of hiring a software developer (recruitment costs + productivity loss while searching - not to mention opportunity loss to your business waiting) is so high that it amazes me that training them is so rarely considered as an option
11
118
256
@jasongorman
Jason Gorman @[email protected]
3 years
Addressing 5 common misconceptions about Agile Software Development: 1. It delivers releases faster -> actually, it delivers *sooner* by making releases *smaller* 2. There's an "Agile methodology" -> Agile's a set of values & principles that can be applied to many methodologies
4
97
254
@jasongorman
Jason Gorman @[email protected]
4 years
My three ingredients for successful software development: * Small teams working directly with customers * Working backwards from testable outcomes * Frequent deliveries of working software to end users You can keep the rest, because it makes very little difference
5
63
253
@jasongorman
Jason Gorman @[email protected]
2 years
If someone describes themselves as a "full stack developer", I ask them to design a website using only NAND gates
41
18
250
@jasongorman
Jason Gorman @[email protected]
9 months
The purpose of junior developers is to grow into senior developers. Replacing them with "A.I." is like replacing all your unripened tomatoes with pasta sauce. There'll be a shortage of ripe tomatoes - and pasta sauce - come next season.
12
61
253
We spend ~10x as much time reading code as we do writing it. A tool or technique that makes you twice as "productive" at writing code *at best* makes you 5% more productive over all. Making your code easier to understand will have 10x the impact. But that doesn't sell tools.
11
67
252
@jasongorman
Jason Gorman @[email protected]
2 years
"TDD only works if the requirements are clearly defined." Let's flip that on its head: TDD clearly defines the requirements.
26
48
252
@jasongorman
Jason Gorman @[email protected]
9 months
Before you delete those temporary debugging print statements from your code*, ask yourself what you put them in there to check, and consider whether that should be an automated test. (1/3)
17
35
247
@jasongorman
Jason Gorman @[email protected]
7 years
Far too many making the career transition from "never been a software developer" to "telling software teams how to do their job"
7
129
234
@jasongorman
Jason Gorman @[email protected]
6 years
After decades of studies covering thousands of projects, 2 things we *know* almost certainly won't help you meet that software delivery deadline: 1. Cutting corners on quality 2. Hiring more developers
2
112
232
@jasongorman
Jason Gorman @[email protected]
2 years
I've been in software development for 3 decades and I still have no idea what a "delivery manager" does. And that's after observing them first hand.
52
14
233
@jasongorman
Jason Gorman @[email protected]
5 years
Most orgs greatly under-invest in that side of Agile. I often see armies of Agile coaches brought in, but 70% have never written a line of code, and a further 20% haven't written code for many years. Who's helping teams with the technical side? 9/10 times the answer is: nobody
11
121
223
@jasongorman
Jason Gorman @[email protected]
3 years
The year is 2022, and I still come across managers who respond to slipping schedules by hiring more developers, making teams work longer hours, and throwing testing out of the window. All 3 of those are going to make you deliver even later.
14
59
220
@jasongorman
Jason Gorman @[email protected]
4 years
Contrary to what you may have read in the Agile literature, the key to agility is the ability to change code quickly and safely. And the key to that is the ability to re-test code quickly and effectively. Fast-running automated tests ("unit tests") are the key to agility.
12
111
222
@jasongorman
Jason Gorman @[email protected]
5 years
Things I'd expect *any* software developer to be able to do: * program (Yup. Oh, you'd be amazed!) * use version control * write automated tests * spot basic maintainability issues (readability, complexity, duplication, coupling) * basic refactoring to fix the above
16
63
222
@jasongorman
Jason Gorman @[email protected]
2 years
If I had a database that was handling 90% reads and 10% writes, I'd optimise it for reads. On a totally unrelated note, software developers spend 10x as much time reading code as they do writing it.
9
67
220
@jasongorman
Jason Gorman @[email protected]
5 years
I can type ~30 words per minute. My average line of code is ~10 words. The average developer delivers 10-40 lines of working code a day, depending on which study you look at. At 30 wpm, that's 3-12 minutes of typing code a day. TYPING CODE IS NOT THE BOTTLENECK.
Tweet media one
18
97
219
@jasongorman
Jason Gorman @[email protected]
6 years
"OO design principles don't apply in FP." Really? How many jobs should a function do (Single Responsibiity)? How much should modules know about each other (Encapsulation)? Can we pass functions as parameters (Dependency Inversion), and do they have contracts (Liskov)?
12
71
215
@jasongorman
Jason Gorman @[email protected]
9 years
The 3 things almost every team does to meet deadlines that make things worse: 1. Hire more developers 2. Cut corners 3. Work long hours
21
340
213
@jasongorman
Jason Gorman @[email protected]
2 years
Computer programming's the art of explaining to a computer precisely what you want it to do. In the future, though, we won't need programmers. Instead, we'll just need people to explain to an A.I. precisely what they want it to tell the computer to do.
56
20
205
@jasongorman
Jason Gorman @[email protected]
2 years
Whenever I see commented-out code, it's time to have the talk about version control
16
18
211
@jasongorman
Jason Gorman @[email protected]
2 years
"Our tests take 3 hours to run. So we're only 3 hours from being able to ship." No, you're 3 hours from finding out what will need fixing before you can ship. And then you'll be another 3 hours from finding out how your bug fixes broke other stuff. And then... etc.
9
40
211
@jasongorman
Jason Gorman @[email protected]
5 years
Developers who think you have nothing to learn from devs over 40... well, good luck with that.
9
46
206
@jasongorman
Jason Gorman @[email protected]
3 years
I think perhaps the problem is with Bloomberg, not Java
@altmind
altmind
3 years
My goodness. I hope i will never ever touch java again. The java development practices are cursed.
Tweet media one
17
8
74
17
10
209
@jasongorman
Jason Gorman @[email protected]
6 months
"TDD makes it harder to write complex code." That sounds like a benefit to me.
8
34
208
@jasongorman
Jason Gorman @[email protected]
7 years
When you argue giving equality to someone else infringes your "rights", that's how you know your rights are in fact privileges
4
112
201
@jasongorman
Jason Gorman @[email protected]
3 years
"Things change so fast in tech. It's impossible to keep up." JavaScript is 25 years old. Java is 25 years old. C# is 21 years old. Python is 30 years old. Those are the four most widely-used programming languages in 2021.
17
47
199
@jasongorman
Jason Gorman @[email protected]
2 years
I see Functional Programming and Object-Oriented Programming as complimentary. Anyone claiming that one is superior to the other, in my experience, has failed to understand either.
14
25
196
@jasongorman
Jason Gorman @[email protected]
2 years
"Pair programming's a waste of money. 2 developers doing the work of one?!" I have bad news for you about your team of 50 junior developers...
12
19
192
@jasongorman
Jason Gorman @[email protected]
4 years
Most software architecture discussions these days sound like me asking the estate agent "And what if I want to throw a dinner party for 50,000,000 close friends?"
4
47
190
@jasongorman
Jason Gorman @[email protected]
7 years
"We want to do TDD, but our manager won't let us." Classic dev mistake. You asked for permission.
9
130
190
@jasongorman
Jason Gorman @[email protected]
3 years
Programming is hard. It's also the easiest part of software development.
4
46
189
Liberal arts majors: "A.I. will make science and engineering degrees obsolete" STEM majors: "A.I. Will make liberal arts degrees obsolete" Plumbers: "First hour is £150, then every hour after that is £90"
12
34
188
@jasongorman
Jason Gorman @[email protected]
4 years
Failed before it even started. 160 developers is easily 10x too many (probably 20x), and pretty much guaranteed to fail because of the massive team size. This was an exercise in maximising billable hours, and nothing more. The managers who commissioned this are incompetent.
@faisalislam
Faisal Islam
4 years
Detailed FT investigation into failed UK attempt to develop homegrown track/trace app, using 160 coders & £11m one nugget about a British territory that did launch its app this month, having spent £0.1m, after using Ireland’s open source code - Gibraltar
23
287
427
10
75
178
@jasongorman
Jason Gorman @[email protected]
4 years
By far the the most valuable lesson I've learned in 3 decades as a software developer is to walk away from a problem that I just can't seem to crack. Take a stroll, watch a movie, have a glass of wine, sleep on it. I'm much smarter when I'm not thinking, it turns out.
9
35
176
@jasongorman
Jason Gorman @[email protected]
2 years
Managers: the software teams you applaud for putting out fires usually started them in the first place
20
34
177
@jasongorman
Jason Gorman @[email protected]
7 years
You might think, as our profession expands exponentially, that the highest priority would be to keep the most experienced devs at the code face to mentor the ever-growing numbers of people entering the industry...
10
116
178
@jasongorman
Jason Gorman @[email protected]
3 years
My new software development methodology is called Actually Doing The Thing. Not "Getting A Certification In The Thing" or "Talking About The Thing In Meetings". Actually. Doing. The. Thing. Teams who practice Actually Doing The Thing at the very least know if The Thing works.
15
35
172
@jasongorman
Jason Gorman @[email protected]
2 years
I see a lot of orgs where the most senior developers are considered too valuable to "waste" mentoring junior developers. IMO, that's the most value a senior developer can bring.
13
20
172
Founder: "I'm going to get ChatGPT to write the software and save $millions" Me, a software developer: "Good for you! Here's my card, just in case anything goes wrong. What's that? Yes, it is a very high daily rate, isn't it."
7
21
165
@jasongorman
Jason Gorman @[email protected]
6 months
I keep hearing that working remotely will ruin a junior dev's career because they'll miss important learning without those "water cooler moments" and I can't help feeling that any profession which relies on random social interactions to instill the foundations has bigger problems
26
25
169
@jasongorman
Jason Gorman @[email protected]
2 years
Software architecture happens whether you like it or not
13
16
166
@jasongorman
Jason Gorman @[email protected]
2 years
Fun fact: every time someone told me "This is going to completely transform the software industry", it didn't.
22
29
167
@jasongorman
Jason Gorman @[email protected]
7 years
Always amazes me how few businesses see high-performing dev teams as assets. "Thanks John, Paul, George, Ringo. That 1st album sold gangbusters. Time to split you up."
7
113
168