azurelunatic: "#dw (yes, we can)" and a clenched fist (#dw)
Azure Jane Lunatic (Azz) 🌺 ([personal profile] azurelunatic) wrote2012-02-21 02:45 am

#dreamwidth developer pep talk

(this is long.)


[09:51] <[personal profile] ursamajor> it helps that we have others around here who have been marinating in this stuff for years if not decades to help supplement
[09:52] <[personal profile] ursamajor> but it takes awhile to *get* to that deep understanding, and there's a whole bunch of intermediate understandings to go through in between.

[09:52] <[personal profile] ursamajor> plus it's often easier to communicate to a layman's understanding while you're not too far past layman yourself :)
[09:53] <[personal profile] shadowspar> believe me, when you feel like you have a good grip, on, say, perl, there's nothing like going to a conference with all the Lords Of The Perl Planet to make you feel like a dumbass again.
[09:53] <[staff profile] denise> yeah, i never know what i know until i try to teach it
[09:53] <[personal profile] shadowspar> I speak from personal experience.
[09:53] <[staff profile] denise> (or to brainstorm something with it)

[09:53] <[staff profile] denise> like, i keep startling myself because i make what i think are stupid suggestions to mark and he says "hey, that'd work!"
[09:54] <[personal profile] ursamajor> because you remember most easily and identify most easily then. I'm not saying that we don't have good teaching and information provided by people with more experience - but that teaching and learning in all levels are important :)
[09:54] <[staff profile] denise> HELLO IMPOSTOR SYNDROME

[09:55] <[personal profile] ursamajor> rah: hee *G* i so identify with this. To a probably unhealthy point, because honestly I have no idea what my actual professional abilities and strengths are
[09:55] <[personal profile] randomling> lol yeah I don't feel like a real programmer. but that's because I'm not one. apparently I know next to nothing about what's going on behind the scenes :P and I've only been doing this for 6 months and I *still* can't figure out how to test my stupid patch
[09:56] <[personal profile] ursamajor> I mean, i'm like, "Um. I like reading and finding out about things a lot and organizing them so that when it comes up in conversation I have relevant info and feel like less of a dumbass!"
[09:56] <[personal profile] stormerider> [staff profile] denise: just remember, the most non-technical member of SG-1 (Jack) was often the one suggesting life-saving solutions to problems :) not that I'm saying you're non-technical (far from it!), but my point is sometimes it just takes taking a step back and trying a different logical approach rather than getting bogged down in the details.

[10:02] <[staff profile] denise> [personal profile] randomling: with testing, you want to generally test at least one positive case (does it do what you want it to do) and as many negative cases as you can think of (does it not do what you don't want it to do)
[10:02] <[staff profile] denise> but you don't have to get them all!

[10:03] <[staff profile] mark> testing gives you confidence in your code. but that confidence is asymptotic. it approaches 100% but never reaches it.
[10:03] <[staff profile] denise> generally you just sit and go, okay, can i think of how people are going to try to use this? and then do what you think people will do to it
[10:03] <[staff profile] denise> exactly.
[10:03] <[staff profile] denise> you can never *guarantee* something is bugfree. at most you can say with confidence that you've tested lots of use cases.
[10:03] <[staff profile] denise> when you upload a patch, just include information on what use cases you've tested
[10:04] * [personal profile] randomling nods
[10:04] <[staff profile] denise> and if the committer thinks of anything major that should be tested that you haven't, they'll test it then
[10:04] <[personal profile] randomling> okay that feels a lot better!
[10:04] <[staff profile] mark> (the above logic is why writing 'some' tests is better than 'none', and why you shouldn't worry about 'WRITE ALL THE TESTS')
[10:04] <[personal profile] randomling> I was feeling all "but it's ALL MY RESPONSIBLITY" and panicking
[10:04] <[staff profile] denise> and if you *both* miss something and a bug gets onto the site: OH WELL
[10:04] <[staff profile] denise> IT HAPPENS

[10:04] <[personal profile] kaberett> also no no code should ever be entirely one person's responsibility
[10:04] <[personal profile] kaberett> if it is, the org's fucked up
[10:04] <[staff profile] mark> yes
[10:04] <[staff profile] denise> yes
[10:05] <[personal profile] ursamajor> yes to the yes.
[10:05] <[staff profile] denise> bugs are the respsonsiblity of the coder *and* the committer
[10:05] <[staff profile] denise> *and* anybody who read the code afterwards adn said "hrm, I wonder if that's a bug" and didn't say anything
[10:05] <[personal profile] kaberett> there's a *reason* that quite a lot of places use agile programming, i.e. every bit of code gets two eyes on it talking it over before it's committed
[10:05] <[personal profile] kaberett> yep!
[10:05] <[staff profile] denise> and anyone who reviewed the code

[10:06] <[staff profile] denise> anyway, you haven't arrived until you've made at least one mistake that brings the site to its knees ;)

[10:06] <[staff profile] mark> [staff profile] denise: dammit, I need to stop arriving.

[10:07] <[staff profile] denise> i think i got the pony last time i was writing code

[10:07] <[staff profile] mark> [staff profile] denise: I neglected to mention that the other day I oopsed a database and had to rebuild it. while debugging the slow page load thing, I installed something, that uninstalled MySQL :P
[10:07] <[staff profile] denise> ("the pony" = "the commit-and-ditch pony", aka the "you broke the site award", given equally and goodnaturedly to whomever wrote the code that broke shit and whomever reviewed and committed it)

[10:08] <[personal profile] idonotlikepeas> At work, I actually wrote code like seven years ago that caused a system to lock up last year due to weird database locking issues. That kind of thing just happens sometimes.
[10:08] <[staff profile] denise> I EARN THE PONY A LOT
[10:08] <[personal profile] kaberett> heh, at my ex's work it's a monkey :-)
[10:08] <[staff profile] denise> [staff profile] mark: you ... uninstalled MySQL?
[10:08] <[staff profile] denise> that's a good one :)
[10:08] <[personal profile] allen> i've earned the pony a few times, too.
[10:08] <[personal profile] idonotlikepeas> Yeah, that's pretty impressive.

[10:09] <[staff profile] denise> my most embarrassing sysadmin disaster was just your typical "rm -rf *.txt" vs "rm -rf * .txt" disaster
[10:09] <[personal profile] kaberett> [personal profile] randomling: also, if at some point you fancy holding my hand through learning to do a tiny fix I would love you forever <3

[10:10] <[staff profile] mark> to be fair, it was because we user Percona MySQL which is manually installed. so when I installed the webserver packages on db04, it includes mysql-client. which detected a conflict with percona-mysql-server and uninstalled it. I was not fast enough on the Ctrl+C

[10:11] <[staff profile] mark> but still, that meant the database was down for a while :P

[10:10] <[staff profile] denise> hell, writee a bug walkthrough for dw-dev-training
[10:11] <[staff profile] mark> but still, that meant the database was down for a while :P
[10:11] <[personal profile] randomling> hm, I might do that!
[10:11] <[staff profile] denise> i love it when people do those
[10:11] <[staff profile] denise> [staff profile] mark: you didn't mention that to me at the time. *G*
[10:11] <[personal profile] randomling> not sure I can remember everything I did
[10:11] <[personal profile] allen> [personal profile] ursamajor: i think now it will, and directories like '.config'.
[10:11] <[personal profile] randomling> also, a lot of it will be, "so then Sophie told me how to...."
[10:11] <[personal profile] ursamajor> that's okay, just start writing one for the bug you're doing now, then :)
[10:11] <[staff profile] denise> anyway, everybody makes mistakes.
[10:12] <[profile] sporkyrat> [personal profile] randomling: I think that's how a lot of tutorials go!
[10:12] <[personal profile] ursamajor> and yeah, [personal profile] randomling, that's part of the process :)
[10:12] <[personal profile] allen> (the directories are from the -r option - recursive)
[10:12] <[staff profile] denise> like, to the point where, if nothing breaks after a code push we get NERVOUS
[10:12] <[personal profile] kaberett> because clearly something major is going to go wrong very, very soon :D
[10:12] <[personal profile] idonotlikepeas> Yeah, everyone does that.
[10:12] <[staff profile] mark> [personal profile] allen: I have grown the habit of using '.??*' when I want dot files
[10:12] <[personal profile] ursamajor> "i did x! got stuck! asked for help. got help from soph! did x+! got stuck! soph helped again! got to x++! soph was asleep so geekosaur helped!"
[10:12] <[personal profile] ursamajor> etc.
[10:12] <[staff profile] denise> "fuck. nothing's wrong. this means we're going to have some lurking shambling bug that's going to turn out to explode in two weeks."
[10:12] <[personal profile] idonotlikepeas> Bug-free projects don't exist. It just means you haven't found it yet.
[10:12] <[personal profile] kaberett> [personal profile] randomling: also, d'you know what
[10:12] <[personal profile] kaberett> writing "and then I got stuck and asked Sophie for help"
[10:13] <[personal profile] ursamajor> but if that's how the coding process goes, then it's a good idea to portray it that way to newbs :)
[10:13] <[personal profile] kaberett> is gonna be SO HELPFUL to people like me
[10:13] <[personal profile] kaberett> who would othewrise go "CRI CRI CRI I SAID I WOULD DO THIS MUST FACE THE GAZEBO ALONE NO ASKING FOR HELP EVAR"
[10:13] <[personal profile] ursamajor> it helps illustrate to newbs that they don't have to KNOW ALL THE CODE right away
[10:13] <[personal profile] kaberett> which
[10:13] <[personal profile] kaberett> obvs ridic?
[10:13] <[personal profile] ursamajor> or even remember all the code they knew last week!
[10:13] <[personal profile] idonotlikepeas> Oh, a little programming joke. Some principles: 1. Every program can be optimized to reduce it by one line. 2. Every program contains at least one bug. Conclusion: Every program can be reduced to one line that doesn't work.
[10:13] * [personal profile] ursamajor giggles at peas.

[10:14] <[staff profile] denise> oh god if i had to do it all alone without asking for help i'd never get ANYTHING done
[10:14] <[personal profile] kaberett> [personal profile] randomling: well then :-p
[10:14] <[staff profile] denise> i mean, ask mark
[10:14] <[staff profile] denise> how often do i yell "mark, i'm stuck"
[10:14] <[profile] sporkyrat> [personal profile] ursamajor: YES.
[10:14] <[profile] sporkyrat> Oh my gosh, can we like, make little graphic medals for geekosaur and sophie?
[10:14] <[staff profile] denise> like the time he helped me troubleshoot my broken email for like three hours, only for me to discover the reason it wasn't working was because i'd let the domain registration lapse
[10:15] <[staff profile] denise> (he was very good. he hasn't teased me about it at all.)

[10:18] <[staff profile] denise> also, going back to the whole "people make mistakes" thing
[10:18] <[staff profile] denise> i can guarantee you
[10:19] <[staff profile] denise> no matter what
[10:19] <[staff profile] denise> no matter how bad your code is
[10:19] <[staff profile] denise> no matter how many bugs it contains
[10:19] <[staff profile] denise> it will *never* be worse than some of the things bradfitz got up to in the early days ;)
[10:19] <[personal profile] randomling> hee
[10:19] * [personal profile] randomling hits up the wiki to remember how to grep ffs
[10:19] <[personal profile] ursamajor> oh god grep
[10:20] <[staff profile] denise> "hey, so, i accidentally fucked up while trying to upgrade this one db cluster. we'll play back the backups later this week, okay?"
[10:20] <[staff profile] denise> six months later
[10:20] <[personal profile] ursamajor> i use it just infrequently enough that i can never remember the syntax
[10:20] <[staff profile] denise> "oh yeah, we were going to play the backups weren't we"
[10:20] <[personal profile] idonotlikepeas> oh god Brad
[10:20] * [profile] sporkyrat blesses brad's heart, the dear soul.
[10:22] <[staff profile] denise> and let's not even *think* about the UTF-8 conversion

[10:23] <[staff profile] denise> oh god i'm looking at 2002-era lj news posts and they're making me twitch, heh
[10:23] <[personal profile] kaberett> oh?

[10:24] <[staff profile] denise> [personal profile] kaberett: in 2002 i was sort of slowly taking over lj support by dint of simply showing up and doing shit
[10:24] <[staff profile] denise> so like
[10:24] <[personal profile] kaberett> lol, right
[10:24] <[staff profile] denise> brad would code something, push it live without testing
[10:24] <[staff profile] denise> support would get eight billion bug reports
[10:24] <[staff profile] denise> i would nag brad about it
[10:24] <[staff profile] denise> brad would ignore it
[10:25] <[personal profile] kaberett> ...
[10:25] <[staff profile] denise> i'd go to jesse or sherm or somebody and go "hey, nag brad about this"
[10:25] <[staff profile] denise> brad would ignore it
[10:25] <[personal profile] foxfirefey> Oh dear
[10:25] <[staff profile] denise> three months later somebody would contact brad directly about the prblem
[10:25] <[staff profile] denise> brad would be all "why didn't anybody tell me about this?"
floatboth: (Default)

[personal profile] floatboth 2012-02-21 06:34 pm (UTC)(link)
re: "rm -rf *.txt" vs "rm -rf * .txt" disaster
that's why zsh-syntax-highlighting rocks :-)
silveradept: A kodama with a trombone. The trombone is playing music, even though it is held in a rest position (Default)

[personal profile] silveradept 2012-02-22 03:28 am (UTC)(link)
This is the kind of dev environment, were I to get involved, that I would like seeing. Mostly because nobody is putting so much pressure on you to roll out corporate's code by the end of the week...and they understand that mistakes happen.
jeshyr: Programming dreamsheep (Dreamwidth - Development)

[personal profile] jeshyr 2012-02-22 09:05 am (UTC)(link)
This makes me want to work on my Epic List for posting in [site community profile] dw_dev_training, the one entitled "Things Real Dreamwidth Programmers Do" and containing entries like:

  • Ask others for help

  • Forget how they did the same thing yesterday

  • Find themselves looking up that syntax for the 37th time

  • Ask for help again...

  • Break Dreamwidth

... etc.

aedifica: Silhouette of a girl sitting at a computer (Girl at computer)

[personal profile] aedifica 2012-02-23 09:56 pm (UTC)(link)
I would like that so much! And Azz, thanks for the post. :-)
exor674: Computer Science is my girlfriend (Default)

[personal profile] exor674 2012-02-24 12:13 am (UTC)(link)
That some people maaaaaay, just maybe, sorta, uh still have to look at the template toolkit manual every damn time, even when they're the project head for TT conversion? [ And I mean the "here's the syntax" docs, not the obscure API ones ]