Years ago when we did websites for people, it would go something like this:
Them: 'Hey! I need a website'
Me: 'Ok, cool, what content do you have?'
Them: 'I dunno, can you make something up?'
Things haven't changed much.
Agile
Lets keep things dynamic so we don't have to plan anything, or code anything that we have to go back and refactor. Result: client is still unsure what they want, the code has become a mish mash of fast iterations leaving the code base in need of refactoring anyway. No documentation. Reverse engineered design documents.
Agile does not say NO DOCUMENTATION. Documentation is only as useful as it is useful hahaha. Get it? Is there ONE SENTENCE that could clear up a lot of confusion? Write the fucker down.
Has shitty project management pretended to be Scrum and Agile just because they've read a Scrum Master book? They ask 'when will it be done?', 'are we fucking there yet?'. You estimate, but fuck the estimate, you better get these tasks done because we have a deadline. Fuck testing then!
UX Research and Design
Did you conduct user research into exactly what your target audience needs? 'Oh no, we don't rate UX research'. Or 'oh, we'll get to that during usability testing.' Or maybe they won't do usability testing at all. Yeah isn't UX like new age political correctness wank? Well, no, it is probably the most important part of a project - SHOULD YOU DO THIS PROJECT IN THE FIRST PLACE and IS THIS ACTUALLY USEFUL and CAN PEOPLE ACTUALLY USE THIS? Seriously underrated.
Use Your Head
So many times a developer does something 'because the specification asked for it'. Yet, the actual spec was total nonsense. I've seen people deliberately add a typo because 'thats what the acceptance criteria said'. Seriously, can people not think for themselves? Do they really accept everything that life puts in front of them? They must have really sore arse holes.
The Power of Simplicity
There's an anecdote of a truck too tall for a tunnel and getting stuck. Engineers come and are standing around figuring out the best way to cut part of the roof off so that the truck can be extracted. Then a little girl comes along and says 'why don't you let the tyres down?'. The problem is, you get given a problem which has with it a proposed solution. 'The truck's roof is too tall for the tunnel so part of it needs to be removed so that the truck can be removed'. Do not give the developer a solution; they are the ones who come up with the solution. And developers, think for yourselves please?
System and Code Design
Design has pretty much died out these days. Why waste time with 'pretty pictures' and old ideas when you can jump straight in and start coding! Look! We have some code! Look how complicated it is! I'm using all the latest libraries. Look, we are fully FP, we don't use Array.push because that is a side effect! All our objects are destructured (even though it is still passed by reference).
I learned programming using Flow Schemas, JSP (Jackson Structured Programming), UML, and obviously flow charts. Beautiful and fun things.
After 20 years I still can't comprehend why a group of people sit around talking about abstract ideas and struggle through confusion. I remember once doing an architecture diagram because the 20 or so servers, ports, DBs et al were just so annoying to keep in your head. A simple 'THAT THING THERE' (point to diagram). 20 hours of meandering and non-comprehension averted.
Technology
I've made something cool, but 90% useless, 10% cool code. People jump on board with enthusiasm, either because of the person who wrote it, or the potential to be the first to like it.
For example, instead of taking 3 steps to build a form 1. html, 2. add styles, and 3. add an endpoint to take the POST values, we install an entire framework, install a tonne of dependancies, some boilerplate shite, linters, parsers, transpilers, then componentise the shit out of the form, 21 files, couple of hundred lines of code, css in js, update the version of the framework as it has upgraded since you started writing this, the transpiler is not compatable with the new version of the framework so you revert, state management, type checking, build scripts, and a nice shiny turd. Oh, my tests fail.
To be continued ...