Showing posts with label software engineering. Show all posts
Showing posts with label software engineering. Show all posts

Wednesday, June 27, 2007

side effect as goal

you know, its funny. i find myself thinking and saying this a lot. i wonder when in the course of history did writing software become a way to make money. people started out writing good software for other reasons, whether to scratch an itch or to impress the ladies, they didnt start writing it to make money. now they discovered that along the way, they ended up making some serious fuck-you money, which is great of course. now all these gold digging son-of-bitch posers jump on the bandwagon to try to create the same side effect, but fail miserably and they wonder why. i dont blame them one bit. you see people getting rich doing something that you think you can do, you're going to fuck over anyone to get there first.

what they fail to realize is that to make money on software, it has to be good software, and you dont go about creating good software because you want to make money. i swear to christ that these people have on their requirements doc "make money" as the number one item. in order to make money, you have to not want to make any in the first place. that's funny. unfortunately, these people do stay alive and do well in the economy that has been created from good software. they tag along inside big companies or just get money from other people who think they will eventually get some fuck-you money from their efforts. few of these things rarely work out.

and yes. there are piles of books on the subject of how to write good software and all that junk. its not going to matter to most of the people i speak of. they're so lost in the forest that they just keep hacking away (pun definitely intended) and miss the big picture. no amount of schooling is going to set these people straight.

so i guess my advice to people who want to make money. DONT TRY. just try to do something good. the money will come as a side effect, or it wont. either way, it is your best shot.

a new appreciation for managers

we've all said countless times how useless our managers are, or how our productivity would increase 10-fold if we didnt have to report back to those pesky overseers. i still think that's all pretty true, but the reason isnt because managers are unnecessary, but rather, managers arent doing their jobs well. i dont really blame them, because its really really hard.

one of the major misconceptions that hackers turned software engineers have is that when they're at work, they're building a product. somehow, people get a notion in their head that when they're at work, they get to do things that are "fun". since everyone expects this, the industry has in turned responded with telling its engineers that they are suppose to be having fun. this is just not true.

the first distinction to draw is that when at making a product, you start with a requirements document that you implement and go from there. if you are just hacking on something yourself or even on an open source project, you can do any number of "cool" things that you want. in a corporate environment, you have a deadline, a feature set, and the quality of your product. managers fail to juggle their resources sufficiently to meet all of those things. an effective manager has to know what he has and make it work for the product. they have to make tough decisions about the number of features to be included, while measuring intangibles like code quality. most importantly, technical managers need to coordinate his team, and that means having people skills. they need to read people, recognize the type of people they have, and make them work effectively together. there is often an inverse proportion between the amount of social skill someone has, and their technical ability. while many of you may be outraged at this point, i maintain that its true.

with all the managers floating around, there are bound to be some pretty crap ones. that's when deadlines slip, people get overworked and assigned to tasks they are not suited for. crucial features may be left out and corners may be cut. in the end, you end up with some piece of shit software that the developer then say, mmm, when i wrote something similar to this myself, it was so much better. well, there are reasons for that. this goes into the whole cathedral and the bazaar shit and software engineering theory that i wont go into and assume you are familiar with.

my point is just that, i recognize now, more than ever that managing a software project is hard. if its not some architecture decision, then its some high-school-like personality dispute. its a wonder how any good software gets shipped.