I've been debating where to put this. Maybe the Community Center. Feel free to move if necessary. I'm sticking it in Software Development because it has to deal with Software Development, but it's more of a general topic involving different levels of expertise and familiarity, what one's "lane" is, and dealing with people diplomatically.

I'm currently trying to soothe over some hurt feelings and trying to solve some issues purportedly involving computer expertise, but I think it really has to do with something deeper, ie human dignity.

The specifics aren't too important, but I and some other programmer types taught a few C++ basics and used a few libraries like Allegro, basically creating a wrapper so we could teach some of the basics of programming, give them an API to use, etc., etc. They would be programming in C++, but basically using C++-lite, a subsegment of the language and our API so we could get them off and running quickly and they would not be overwhelmed. As intended, the wrapper has public, private, and protected access, encapsulation.

I recently fielded phone calls from a programmer and a business owner who were very upset with each other. I had made the introduction and they seemed to be getting along well until the business owner was getting frustrated with his program not compiling and asked the programmer why. Apparently he'd been trying to access a private data member/function, so the programmer explained public/private/protected and how he had made that code private "to protect you from yourself so you can't screw anything up. Just don't touch it. You don't need to touch it or know about it or care about it. It's for me, not for you." Then he pointed to the public function and explained that that was the way to do what he wanted.

I think it's partly a lingo problem. "Protect you from yourself" and encapsulation/hiding details arren't insults and aren't intended as such, but to a non-programmer and a BOSS, it rubbed him the wrong way. From the boss's point of view, he's the boss, he's paying for the programmer's time, it's on his computer in his office, he's the guy using it, it's a legitimate question, so why is the guy he is paying to answer questions not answering them? Previously, the people in the office were getting infected with malware because they were poking holes in the firewall not understanding the danger, so he fixed everything up and changed it so they couldn't do that anymore. The next time they tried, they were blocked and couldn't change things around. Only he could. From his point of view, he was doing his job. From their point of view, he's changing around THEIR computers and not telling them how and why. It was a respect thing.

I imagine I can mediate all this and this is actually a miscommunication. I know both of them and I doubt they intended to piss each other off. The business owner is feeling dissed and the programmer is puzzled as to why and that's getting in the way of the actual communication. Like a lot of programmers, he can be blunt and is not that great at explaining things to laymen, so he's probably figuring they're challenging his professionalism and resents it, plus he can't imagine why they care and why they're poking holes in firewalls and messing around with code when they don't know what they're doing. He IS protecting them, plus he's the guy who's stuck fixing whatever they screw up.

Anyway, longer post than I intended (as always), but I'm wondering how often other people run into this problem and how they handle it.

to protect you from yourself so you can't screw anything up. Just don't touch it. You don't need to touch it or know about it or care about it. It's for me, not for you.

Well, yes, that's about as inflamatory answer as anyone can give their boss or client. Something along these lines would have worked better:

It's sometimes necessary for us to update our code to handle new or changed requirements, or to maintain our high level of security. We mark that code as "private" so we know that we can change it without upsetting anyone else's code. The code that we intend for use by other people is marked "public", and we try to avoid changing that unless it's absolutely necessary.

commented: Definitely true. +0

That IS a much better way of putting it. :)

The specifics aren't too important

I should point out that the programmer is not a professional consultant. He's a fantastic programmer and generally associates with other programmers. When he works with non-programmers, he generally is an IT guy or programmer doing a job for them. This is a fairly new environment for both him and the business owner, who in his business doesn't get involved with programming. This all started out with me volunteering to teach autistic kids to program and setting up a system so that the teachers could do it when I wasn't there. The business owner is the uncle of one of the autistic students and got involved. I introduced the programmer to the business owner through this relationship and he hired the guy half as an IT-type guy and half as a programming tutor. He had never programmed at all prior to learning to do so using this programming system with his nephew, decided he liked it, plus now he's branching out/expanding with the idea as sort of a hybrid charity/business idea with the programmer. His current main business doesn't use this software at all and he's not used to working with programmers and the programmer is not used to explaining code to non-programmer bosses. This is the first time any of them have been interested in the details of what he does. This is new territory for both of them. The business owner is used to polished salesmen-types who wear suits, ties, etc. The programmer is used to wearing whatever the heck he wants and getting things done and not explaining how. Rough around the edges, but a nice guy.

I just made the intro, so I'm not responsible for smoothing this over. Don't know if the programmer is autistic or not (not my business, never cared), but given that the environment where I introduced them and the project that it stemmed from involved getting people from different backgrounds to understand and overcome those types of barriers and integrate autistic people into the business world, I'm going to sort of play marriage counselor, at least a little bit, and teach a little diplomacy to the programmer. At the same time, the business owner is getting hung up on words like "private", "public", and "protected" and taking them a little too personally. I'll also remind him that while the programmer's bedside manner might stink, he knows his stuff and if he tells the employees to stop messing with the firewall, they should probably just stop and not take it too personally (they kept logging in as root/Admin and screwing things up, so he logged them all out and changed the password and file privileges without telling them, which annoyed them, sure, but again, he DOES know what he's doing).

Then I'm going to lock them in a room together and they'll have to work it out themselves. They can make some serious money together if they can get past the personality clash.