In my opinion, yes, morally developers should make software user-friendly.
BUT: What is "user-friendly" ?
If the program is aimed at developers or computer geeks, then a CLI should do just fine.
For example, DOS' "dir" command.
Using "dir /b/s" gives you a listing of all files & folders in this directory and all subdirectories without the extra details dir normally includes (file size, creation / modify dates etc.). This is easy to use as /b means "use B
are format" and /s means "search S
ubdirectories". Had the command been "dir -foo +bar /hooka /pooka" then there'd have been a problem.
Dir was a case of "it's a simple command, so it should have a simple interface".
I've seen worse crap. I'm still awed that the programmer could use the damn thing.
If the program is aimed at uneducated users, then a GUI with as little jargon as really needed is the way to go.
Simple stuff like naming commands after their function (ie "quit") should be used. Help menus that have instructions on how to do stuff. Nothing major is required, but at least make it so that other people stand a chance of using it.
But some ITT morons write their software so that literally only a ITT graduate could understand it. For example there was a mail program I looked at. "Now trafficing MIME data packets on system IO Port !" What the heck was the programmer thinking when they wrote that message instead of "Now sending & recieving messages" ?!
Note: I hate vi. I use Joe. Reason: you need to read a long manual to find out how to just exit vi.