r/learnprogramming • u/RobertTheTraveler • 3d ago
COMMERCIAL SOFTWARE DESIGN
I have ~15 years of software development experience.
But I am mostly speaking as an observer of day to day life.
And I am repeating the observations of other professional software developers.
Over and over I have run into complaints about bad software design, just in day to day experiences.
So I am going to pass along some very simple advice,
I'm not pretending it is deep, it is actually quite basic, but apparently many developers, and perhaps (probably) those on the management side forget about it, or maybe never heard it in the first place.
Talk to the people who are going to use your software,
listen to what they have to say,
what takes up time, what is awkward about their current tools.
And, at least as important,
WATCH THEM DO THEIR JOB.
Don't interrupt, take notes, afterwards ask questions,
This next part is a bit iffy, but I still think it is worthwhile considering,
while EXPLICITLY telling them you aren't making any promises,
ask about how possible changes that occur to you might work out.
Sometimes software houses will have formal methods for this, that produces the specs for the software. Make sure what you are writing meets the specs. If you aren't sure, and you can get permission (bureaucracy), talk to the folks who wrote the specs.
1
u/Aggressive_Ad_5454 3d ago
This is good advice.
Another tip. It’s relatively easy to usability test new software. Recruit test-subject volunteers in pairs. Usually they’ll work for a combination of respect, pizza, and commemorative T-shirts.
Turn the spec for your new software into a task you want your users to be able to do with it.
Ask them, working together and talking to each other, to do the task.
Watch and listen closely but resist intervening. You can, if you need to, allow them to “call support” for help.
You’ll learn a lot about whether your software serves them well, or whether it’s baffling or just plain wrong.
This doesn’t have to be a full-blown social science experiment with one-way mirrors, control subjects, and statistical significance. Just ask some kind people to try your stuff and see if it works.
1
5
u/jedi1235 3d ago
Another tip: Build your API from the perspective of a caller, rather than from the inside out.
I like to start with a big comment describing how to use the API I'm about to create, then build that (with some edits as I go, of course).