UNIX Socket FAQ

A forum for questions and answers about network programming on Linux and all other Unix-like systems

You are not logged in.

#1 2003-10-10 12:10 PM

vikasgp
Member
Registered: 2003-05-03
Posts: 10

Re: Who'll use your software ?

Hi,

Does anyone else ever feel this ? You learn to write all kinds of programs, you read about user interfaces, the importance of documentation, "the importance of having users"... but what if you are just a college programmer sitting alone in your room and coding neat things which probably no one except yourself will use ? How do you motivate yourself to add another feature or fix a bug when you know no one will ever use it ? Oh well, in the name of good craftsmanship you can rewrite something more elegantly or write something fun to implement, but can you bring yourself to polish a program upto production quality ?

I keep telling myself, "Oh sure, if this was to be production quality, I would do it much better", but I don't really know. I've never done that. So I'm not even sure if I can do that.

"Open Source!", I hear everyone say. Surely, you can't get a better audience than thousands of people around the globe and lots of programmers looking at your code. But that's fine if you're Linus Torvalds and everybody will get your source minutes after you release it. It's fine if you can hack the kernel and speed up TCP/IP by 2%.

But what if you are just a little kid (in programming ability) who has just  written his first network client or his first editor ? Who'll use that ? All the easy problems have been solved a thousand times over.

Well, I think I *do* know the answer. It is to contribute small patches to big projects, and work your way up to writing big ones. So why the hell did I have to rant so much ? Well, that's what this section's for, right ;) ?

Offline

#2 2003-10-10 02:55 PM

RobSeace
Administrator
From: Boston, MA
Registered: 2002-06-12
Posts: 3,839
Website

Re: Who'll use your software ?

I always think that software written for your own use, as opposed
to being targeted at other people to use, is always the best kind
of software, and inevitably ends up being far better in quality and
usefulness...  Because, the user and maker are one and the same,
so that makes you highly motivated to make it work well, because
doing so will benefit you directly...  Writing software that's only
going to be used by some mindless office drones, and shit you'd
never even think of using for anything at all, tends to produce
utter crap...  (Look at Microsoft for an obvious example, there... ;-)
Then, look at Linux for the counter-example: it was coded for use
by Linus himself, and for the use of all of the other kernel hackers
who joined in...  It was in their own best interests to make it the best
OS possible, because THEY personally use it and benefit from it...
And, hence, it fucking rocks... ;-)  But, MS software only has to be
good enough to sell to people...  These days, it doesn't even really
need to be even that, since they can pretty much force it on
everyone, and people don't have a whole lot of choice in the
matter...)

Of course, in the real world of professional programming, you'll
likely have to write a LOT of programs you'd never be caught
dead actually using... ;-)  But, I guarantee you those programs will
all be pure crap in comparison to any program you actually care
about and are yourself a user of...  For instance, I think some of
my own personal best programs, which I'm most proud of, are
ones that none of my company's users will ever see at all...  They
are internal development/debugging/support tools...  Things that
*I* have to use, and so I make sure they're damn cool... ;-)  Of
course, they don't have fancy GUIs or any silly nonsense like
that, because none of that junk matters to me; but, their function
is cool, and they do many impressive tasks that would otherwise
be completely impossible, or at least extremely difficult and
time-consuming...  It's just no contest comparing an 'unpolished'
developers tool like that against any random 'polished' user app
that I've written: the dev tool wins hands down as the best code,
as far as I'm concerned...  The user app may LOOK cooler or
prettier, but it's nowhere near as cool, in reality...  And, it's almost
guaranteed that there are far fewer bugs in the dev tool, since
when developers are using it, you can be sure the bugs will be
found and fixed a hell of a lot faster than for user apps... ;-)

Now, ideally what you'd like to have is that magical piece of
software which is BOTH used by you, the developer, AND by
tons of regular users...  That's fairly rare, but it happens...  (Again,
look at Linux, and many other open source projects...)  Of course,
these tend to be the absolute best of both worlds...  However, if
given only a choice between coding 'polished' user apps and
'unpolished' dev tools, I'd take the dev tools any day of the wek! ;-)

Offline

#3 2003-10-11 01:18 PM

Anonymous
Member
Registered: 2002-04-16
Posts: 24

Re: Who'll use your software ?

All your points are valid ofcourse. What you are saying is in essence what has been described by esr as "scratching the itch", to wit, every successful open source project starts off as something to scratch the developer's itch. Those are as you say, Linux, and as esr says, fetchmail, etc.

Fine. What I have is a dilemna of choosing between:
1) Writing a relaively basic tool for something you want to be done.
2) Either using an existing tool to do it or trivially hook up a couple of programs to do it.

Now, what everyone really wants to do is (1) ;). But you've been told a thousand times: "Reuse!", "Don't re-invent the wheel!", that is, do (2).
So what do I do ?

Let me give an example.  I need an editor. A moderately featured editor is a sizable program and would teach me a lot if I tried to write it. But there's EMACS, more featured and better than anything I could possibly write. So I keep feeling that I should not waste my effort doing the same thing again and should look for other things to do. But I never find those  other things.

Offline

#4 2003-10-11 01:23 PM

vikasgp
Member
Registered: 2003-05-03
Posts: 10

Re: Who'll use your software ?

Ach, the previous post is by me, not "Guest"

Offline

#5 2003-10-11 07:51 PM

RobSeace
Administrator
From: Boston, MA
Registered: 2002-06-12
Posts: 3,839
Website

Re: Who'll use your software ?

Emacs isn't an editor: it's its own separate OS, or at least operating
environment, anyway... ;-)  I, personally, can't stand emacs, and
think any child could write a better "editor" than it is...  But, its true
fans don't think of it as just an editor, so for whatever it is, I suppose
it's an ok one...  But, whatever it is, it's not an "editor"... ;-)  (Yes, I
am a vi lover, so I'm completely biased, and I'm sure many others
will object to the above... ;-)  But, probably not, because most
emacs fans I've heard from DON'T consider it a simple "editor"...
And, really, that's all I'm looking for: a simple editor, not a bloated
do-it-all program, which I can live inside of full time, in lieu of a
real shell, or something... ;-))

Anyway, back on topic... ;-)  There are many reasons for writing
programs...  If you just want something to use out of pure practical
reasons, to get something done, then yes it makes a lot of sense
to look for pre-existing programs that already do what you want,
and use one of those, if they're appropriate...  But, if none of them
are quite right for what you need them for, or you need some
particular feature none of them have, or you just think you could
come up with something better, there's nothing wrong with
reinventing the wheel, either...  The trick is to just recognize when
you ARE reinventing the wheel, and accept it, and go into it with
full knowledge of the pre-existing wheels; it's the people who
don't even know they're reinventing the wheel, and then are
surprised to find other people have already designed far better
wheels than theirs, which you don't want to be... ;-)  Also, another
perfectly valid reason for writing code is purely for the sake of
learning...  In that case, it doesn't matter at all whether or not
there are already far better solutions out there which you could
use instead...  It's always worth it to write your own from scratch
in that case, if it teaches you something...  Even if it ultimately
means you don't actually use the end product itself, but instead
use one of the existing better ones...  At least you will have gained
some knowledge along the way, and really that's the most
important thing, IMHO...

Offline

#6 2003-10-13 03:30 PM

Anonymous
Member
Registered: 2002-04-16
Posts: 24

Re: Who'll use your software ?

Thanks for replying patiently with my rant :). Yeah, you're right. Just code for the sake of it. I've done it a few times. Hey, wait a minute, what was I complaining of then :) ?

Another thing I've found interesting is to write a program that is intetntionally pretty useless. So if I'd be writing an editor, I would put in the most wierd/horrible interface I can imagine. Or if designing a language,  I'd make it have the most unimaginable syntax, and yet make it possible to write programs. That way, I never have to think of nobody using it (it's not meant to), and get kicks out of showing off my perverse creation :)

End Of Rant :)

Offline

Board footer

Powered by FluxBB