Comments by "Mentat" (@_Mentat) on "Continuous Delivery"
channel.
-
32
-
13
-
13
-
7
-
7
-
6
-
6
-
5
-
5
-
5
-
4
-
4
-
4
-
4
-
3
-
3
-
3
-
3
-
3
-
2
-
2
-
2
-
2
-
2
-
2
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
The best methodology I ever used had a non-branch, locking, real time update, code management system. The instant you edited a file it was locked on every other developer's PC. The instant you pushed your changes every other PC was updated. You could make any change at any time without asking anyone. There were no merges obviously. You could hit build twice, a second apart, and the first time it would build and the next fail to build, because a developer had made a boo boo. You might try to edit a file and it would say "File locked by Fred."
This system compelled all the behaviours Agile gurus try to instill, without ever calling itself agile. You had to negotiate to get a file; you were unpopular if you broke the build; you need to push working software only, but in little increments. There was complete freedom but also a lot of responsibility.
Possibly the best bit was what Wikipedia calls the "good fairy". You could browse through the code base fixing tiny things, rewording an error message, tweaking logic. It was like working on a personal project. It made the software very good and was fast and friction-less to write.
1
-
1
-
1
-
1
-
1
-
1
-
I have lots, I'll give you a few...
1) Free your inner Nazi: eg, don't let the user get away with errors and just ignore them. When I was young I'd ignore things that didn't make sense thinking I was being nice to the user; now I'm a Nazi and the users must get it right. The reason is that the user wanted something when they entered what they entered, and it's better to force the user to take 1 hr to get it right than have your software do the wrong thing for months on end. (I had a user, a large organisation, which had a primary data centre and a backup data centre a few miles away. For several months the backup data centre never received a single byte of data and they never realised, because they misconfigured it and the software let them get away with it. It should have refused to do anything at all until the BDC was online - that would have made them get it right.)
2) Report every error unabiguously: if a user shows you an error out of your software you must be able go straight to the line of code which generated it. Anything less is embarassing. So never use the same message twice. Also report the underlying error for every error you generate, eg O/S errors. It's also embarassing if you can't say why the error happened, eg file creation failed, don't know why - as opposed to out of disk space.
3) Bundle diagnostic tools with your kit: when a site installs your software they take it all and don't seem to care what ends up on-prem. But if they later report a problem, you may need to get a diag tool onto their site, at which point they will tell you the committee which decides if software can be installed meets on the 1st Thursday of every month and you've already missed this month. So get the diag tool in at install time or just build the diag features into the main code.
1
-
1
-
1
-
1
-
1