Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Education Software

PhD Research On Software Design Principles? 541

cconnell writes "I am working on a PhD in software engineering at Tufts University. My interest are the general principles of good software design, and I am looking for links/references on this topic. The question is: What design/architecture qualities are shared by all good software? Good software means lacking in bugs, maintainable, modifiable, scalable, etc... Please don't tell me 'use object oriented methods' or 'try extreme programming.' These answers are too narrow, since there is good software written in COBOL, and by 1000-person teams for DoD projects. I am looking for general design principles. If it helps, I am trying to build on the ideas in this article from some years back."
This discussion has been archived. No new comments can be posted.

PhD Research On Software Design Principles?

Comments Filter:
  • Simple. (Score:0, Insightful)

    by Anonymous Coward on Tuesday June 17, 2008 @04:13PM (#23829137)
    Download the latest OpenBSD [openbsd.org] source code and read up. It's well written, well maintained and very well documented.

  • by 140Mandak262Jamuna ( 970587 ) on Tuesday June 17, 2008 @04:16PM (#23829157) Journal
    I mean what percentage of your PhD will be mine? Is it your PhD or our PhD. You want the degree, son? Earn it.
  • by CastrTroy ( 595695 ) on Tuesday June 17, 2008 @04:17PM (#23829187)
    From what I can see, the real answer, process. Having a documented process that you follow to ensure that code is free of bugs, and that code is readable. How you accomplish those things isn't exactly important. For making sure code is readable and maintainable, you can have formalized code walkthroughs, or you could just have another coder read it over before it is accepted into the project. Ensuring that the software doesn't have any bugs is another issue. You should have a repeatable test environment, whether it be unit tests, or even just a list of actions peformed by an actual person, in order to check that everything is working correctly. Some approaches work better than others. But the real important thing in the end, is to have a defined process, and ensure that it is being followed.
  • weak (Score:2, Insightful)

    by Anonymous Coward on Tuesday June 17, 2008 @04:17PM (#23829197)
    Dear Mister PhD,
    do your own damn homework.

    Love,
    the management
  • my 2 cents (Score:5, Insightful)

    by trybywrench ( 584843 ) on Tuesday June 17, 2008 @04:19PM (#23829227)
    In my experience the single most important part to a software project is good requirement gathering and analysis. As for development, every program that i know uses some concept of divide and conquer. Breaking up a large problem in to a set of connected smaller problems simplifies writing good code. It's easier to write small bug-free modules then it is to write a large program all at once.

    It would be interesting to find the cutoff point where a problem should be further divided and when it is discreet enough. Also, it would be interesting to know when a developer begins to introduce bugs or less optimized code. Like after x many lines or like y many hours.

    It would be interesting to try and quantify code elegance. I forget who said it but there's a saying "code that looks good is good"
  • Good software (Score:5, Insightful)

    by kevin_conaway ( 585204 ) on Tuesday June 17, 2008 @04:20PM (#23829239) Homepage

    Good software has:

    1. Continuous integration
    2. A large and useful suite of tests that are run during #1
    3. A paying customer who cares about the future of the software and is active in its development
    4. A manager who understands the full software development life cycle
    5. Developers who understand the business domain and problem the software is designed to solve
  • by this great guy ( 922511 ) on Tuesday June 17, 2008 @04:22PM (#23829293)
    Good software is written by good people. There is no general rules you can follow to automagically make your software good.

    Sure some rules will tend to make your software a little bit better: KISS design principle, release early release often, unit tests, etc. But fundamentally it's all about people.

    Then you might ask "what makes a good developer good". Well's that's not so easy to answer.
  • by Anonymous Coward on Tuesday June 17, 2008 @04:23PM (#23829309)

    You could always read a text book on Software Engineering.
    Let me guess-- you've probably also read a textbook on Software Engineering, and complained that the author never bothered to research the experience of people outside Acadamia, thereby limiting the book's usefulness?
  • Re:Modularity (Score:5, Insightful)

    by SatanicPuppy ( 611928 ) * <Satanicpuppy@OPENBSDgmail.com minus bsd> on Tuesday June 17, 2008 @04:25PM (#23829345) Journal
    You can also end up with weird, inefficient code, because the specs are poorly written and no one is allowed to have enough oversight to realize it.

    That's more of a management problem, I suppose, but I've all too often seen "glue" methods that were expanded beyond their scope due to the fact that the designers of Method A and Method C were never allowed to meet, and the people who came up with glue Method B were forced to all sorts of unholy kludge make them work with each other.

  • KISS (Score:4, Insightful)

    by Todd Knarr ( 15451 ) on Tuesday June 17, 2008 @04:26PM (#23829363) Homepage

    Most good software I've seen follows the KISS principle internally: Keep It Simple, Stupid. Pieces of it know what they're supposed to do and they do just that. They don't mix in functionality for several things. They don't have embedded knowledge of how they relate to the rest of the system. They've got clean, modular interfaces that let you test just that one part to make sure it's doing what it should and not doing what it shouldn't, without having to haul in large parts of the rest of the system. They either don't make assumptions about what the rest of the system will hand them or they've got those assumptions clearly documented in the interface and they test that their input conforms to those assumptions and produce a clear error if it doesn't. Eventually some pieces will have to embody the design and logic, understand how all the individual pieces fit together to make the system work, but that's their job: to orchestrate the work being done, not to actually do it.

    Another indicator is that good software is designed with the certainty that it will change, that it will be extended and altered over time. Good software has that assumption built in. Bad software, by comparison, is often flagged by statements like "Don't worry, we're never going to change that." or "We don't need to worry about doing that.". Software designed not to change or be extended is either bad software or rapidly becomes bad software once it hits production.

    And no, nothing particularly new there. It's been this way for about 50 years.

  • I strongly suggest you see if you can get a few weeks of academic internship with these [lockheedmartin.com] people. Also know as 'Those who write the right stuff [fastcompany.com]. They actually do know how to write software.

    Other places to look for: Linux Kernel team. Donald Knuths Tex/Latex.
    Or, believe it or not, Blizzard Entertainment. They actually are the only entertainment software company I know of with a proven track record of extremely high quality software compared to others in the field.

    But any core team of non-trivial low-level open source software technology will do actually. Python core team, PHP core team, your favourite Linux IO crew, Apache, OpenLaszlo, KDE, Haxe, Blender, ... whatever. And while people will start bickering that Apache or Blender code is oh so crappy in this or that area, rest asured that all projects of that kind, *incuding* the aforementioned *all* have core team members who are very well aware of the downsides of their software. And thus can help you out in your pursuit for details on professional software developement, because they also know the pitfalls.

    Bottom line: Join some tight crew of people that build stuff everybody uses or many people rely on to work. Hang with them for a month or two, then you'll have a better idea how exactly to approach your topic.
  • Management (Score:3, Insightful)

    by mollog ( 841386 ) on Tuesday June 17, 2008 @04:29PM (#23829437)
    The maturity of the management and its ability to insulate the coders from the noise from corporate is important to good code development.

    Having an experienced architect is vital. Enforcement of the values of the team, especially with respect to interface specifications, is important.
  • by microTodd ( 240390 ) on Tuesday June 17, 2008 @04:29PM (#23829441) Homepage Journal
    I'm intrigued by this question, because I would assume that by the time you've reached this level (i.e. have a Master's in CS or something related) you would already have an idea as a starting point. Furthermore, I thought that the first part of any PhD-level research was an intensive Literature Review [wikipedia.org].

    So, in other words, you should search LexisNexis, EBSCO, etc., and find some journal articles that talk about this. Read some books like Gang of Four or Mythical Man Month. Lastly, do your own data gathering. Find a bunch of Post-Mortems and start to put your own patterns together.

    Oh, wait, all that would require work.

    Seriously...I teach college-level courses and have multiple graduate degrees...and I'm continuously amazed at the quality that schools put out nowadays.
  • Tardy question... (Score:3, Insightful)

    by glgraca ( 105308 ) on Tuesday June 17, 2008 @04:30PM (#23829449)
    In some countries you have to submit a project in order to enroll into a doctorate programme, in others you become part of an ongoing project and your work will be a spinoff from that. Either way, I can't see how you are already working on your PhD and still making these sorts of questions.
  • by rd1101 ( 1306033 ) on Tuesday June 17, 2008 @04:31PM (#23829481)
    Seriously. Is this what constitutes 'research' today? Undergrads copy from Wikipedia, and graduate students ask Slashdot?

    Holy hell. Find your own damn 'links' (or Spaghedeity forbid, some other books/papers).

    In all seriousness, good luck to you though.

    PS. Get off my lawn.
  • by Sir_Real ( 179104 ) on Tuesday June 17, 2008 @04:32PM (#23829491)
    What? So... you can't ask for help in getting your PhD? My my... There are QUITE a large number of doctors out there that are apparently sharing their degrees with colleagues, friends, family, and... strangers on the internet....

    I suggest you stop using the services of anyone accreditted with such a degree.
  • by eln ( 21727 ) on Tuesday June 17, 2008 @04:33PM (#23829519)
    I was sort of thinking this, but I was also wondering what possible value the information he got from this site could be in what should be a well-referenced work. Writing a thesis and backing it up with quotes from random people on the Internet doesn't seem like the wisest decision.

    Perhaps he should spend his time interviewing acknowledged experts in the field or at least studying papers written by them. Hell, even interviewing students in his local CS department would be better than basing an argument on what some random Slashdot user posted.

    Mostly, though, I'm appalled at the quality of post-secondary education that this guy has supposedly received (and paid for!) if he believes Ask Slashdot is a good way to conduct academic research for a PhD thesis. If I were him, I'd ask for a refund.
  • Re:Modularity (Score:5, Insightful)

    by Anonymous Coward on Tuesday June 17, 2008 @04:35PM (#23829553)
    You're a PhD student and you don't know this?

    And you apparently don't know how to find it?

    Hint: google for "Software Engineering graduate" to find grad classes in software engineering. Read their reading list. If that's too much effort, just read Parnas and Boehm to start.

    It makes me sad that I can't get into a PhD program, with thesis topics already lined up to go, and you have apparently never taken a Software Engineering grad class.
  • Re:Good software (Score:4, Insightful)

    by kevin_conaway ( 585204 ) on Tuesday June 17, 2008 @04:35PM (#23829563) Homepage

    So you are saying that open source software that isn't written for a paying customer is not good?

    No, I'm not saying that. I should have worded that sentence as: A principal or group of principals who care about the future of the software and is active in its development

    There must be some end user or group of users who will continue to drive the needs of a given piece of software and help it evolve.

  • Translation: (Score:1, Insightful)

    by Anonymous Coward on Tuesday June 17, 2008 @04:37PM (#23829599)
    Dear Slashdot,

    I thought getting my PhD would make me uber 1337. Well, I finally got accepted into a PhD program, and now I find myself completely over my head. I don't even have a topic for my thesis!

    Could someone do my homework for me? Also, could you supply your name, address and phone number? I'm going to need someone to go in and defend my dissertation for me. kthxbai.
  • by lpcustom ( 579886 ) on Tuesday June 17, 2008 @04:40PM (#23829665)
    Sit down because what I'm about to say is very profound and could make you tear up.

    I've heard that the key to good programs is.......GOOD PROGRAMMERS
  • Hmmm (Score:1, Insightful)

    by Anonymous Coward on Tuesday June 17, 2008 @04:40PM (#23829667)
    If researching your Ph.D. thesis involves an "Ask Slashdot", change topics or drop out now. This is akin to asking the undergraduate Math club for ideas on your thesis, is it not? We are not (and should not) be anywhere near the level of knowledge you already have on this topic...
  • by RatCommander ( 212548 ) on Tuesday June 17, 2008 @04:45PM (#23829755)
    How is polling the opinions of a diverse group of people with expertise in the field not "research"?

    Sure, if he uses your ideas you will get referenced. Reading the ideas of others is an extremely important part of what research is. Just because I used Maxwell's equations in my PhD thesis, doesn't mean that it's his work and not mine. I cited the sources, and was entirely honest about which bits were mine and which were from somebody else. Then, in a seperate section, I discussed the importance of my contributions.

    The work of others typically contributes the majority of the volume (and some of the value) of any PhD thesis or research paper.
  • by Ichoran ( 106539 ) on Tuesday June 17, 2008 @04:56PM (#23829971)
    One of the most useful principles I've found for making "good" software is to design very clean, very powerful interfaces. Focusing on "modularity" often puts the focus in the wrong spot, namely on the center of the module. The point is that the details there *shouldn't matter* because you can abstract away all sorts of fiddly detailed functionality.

    It is difficult to make clean and powerful interfaces, however. You really have to understand the nature of the problem you're trying to solve in order to pick the most natural groups of functionality. Very often, if you're trying to get something done in a reasonable amount of time and don't need to maintain the code for that long (though beware--you'll find yourself using, a decade later, programs that you thought you'd rewrite "next month"), it's better to code something quick and specific.

    The cleanliness of an interface basically boils down to how little information you can pass to it, and how little information you need from it, in order for it to do what you want; and to what extent all information and data goes through explicitly defined interface elements (e.g. an interface in Java). (Here I'm drawing a distinction between data, e.g. the content of a character stream, and information, which is "hey, there's a character stream here, go work on it".)

    The power of an interface basically boils down to how many different high-level operations can be constructed from mixing and matching components of the interface. For example, compositing operations tend to be powerful (e.g. take A, take B of the same type, perform some operation to produce C of the same type from A and B).

    There are lots of other generally useful strategies, but I find this one of the most overlooked, especially by otherwise really talented coders (who can tend to make interfaces more complex because they are talented enough to work with something that complicated).
  • What the Heck? (Score:4, Insightful)

    by ZonkerWilliam ( 953437 ) * on Tuesday June 17, 2008 @04:58PM (#23830005) Journal
    Why would a PhD student solicit for information on a social website? Shouldn't you be doing the research yourself??
  • by sbeckstead ( 555647 ) on Tuesday June 17, 2008 @05:10PM (#23830295) Homepage Journal
    Excuse me, how do you find links? Asking people who are most likely to know seems a perfectly natural way to do research. Get off your high horses people. He didn't ask you to spoon feed it to him, he just asked for pointers. Obviously you have nothing to offer so why did you bother to post! I've never seen so many asshats in my life complaining about how he does his research.
  • by Anonymous Coward on Tuesday June 17, 2008 @05:20PM (#23830517)
    Agree with RatCommander and completely disagree with eln. Software Engineering is a different discipline from most in that anyone with access to a book store/library and time on their hands can jump in.

    Even for those who go to school, most practitioners jump straight into industry after getting their bachelor's. This means that the academic research done at most universities is at least partially disjoint from what's going on in the "real world" ("Ivory Tower syndrome", blah blah blah), and a wide assortment of "best practices" and "general patterns" don't make it into academic literature.

    If one actually stops and considers the medium that he's asking the question in, which is rife with tech enthusiasts (many of us who also happen to be software engineers), one can easily see that it is a great place to get people talking and hear a lot of different ideas and concepts about how things are.

    This is obviously not the best source for expert data, but it's a great way of brainstorming and perhaps networking with experts who can provide more concrete sources later. Anyone who can't see that should be appalled by the quality of their own education.
  • Re:Management (Score:5, Insightful)

    by RingDev ( 879105 ) on Tuesday June 17, 2008 @05:21PM (#23830543) Homepage Journal
    I would disagree about insulating coders from the "noise from corporate" in many situations.

    If you are doing development for a small organization say, 1-500 employees, you as a programmer, are not likely to have a whole lot of insight into the business rules of some department on the other side of the building. Playing opperator for specs having management relaying messages from the accountant isn't going to help your situation.

    IT has a great place as a strategic process improvement center for most companies. Everyone uses IT resources now. Accounting, shipping, sales, collections, lease/loan departments, etc... You, as a programmer, have a chance to see into the life of every department in your organization. You have the oppertunity to see process inefficiencies and recommend improvements. People as a whole, like the path of least resistance. If Jim in sales is used to entering his deals into the company's sales system, then Jill from Accounting prints out the sales report and types it into the accounting software, and finally Sally gets a copy of the bill and packages up the order in the ware house where she enters the information into the inventory system... All of these people will keep doing the exact same dual entry because that's the way they are used to doing it. But being in IT and getting to see these processes, you can see the obvious problems, the likelihood of error, and the wasted time.

    But you need to get out of the IT cave and get into action with the other departments.

    On the other hand, if you like coding and hate people, you can always get into a code ware house where an absurd number of programmers do naught but code off of specs with no input, no chance to design, no chance to see the larger picture...

    -Rick
  • by discontinuity ( 792010 ) on Tuesday June 17, 2008 @05:24PM (#23830605)

    I was sort of thinking this, but I was also wondering what possible value the information he got from this site could be in what should be a well-referenced work. Writing a thesis and backing it up with quotes from random people on the Internet doesn't seem like the wisest decision.

    This isn't necessarily his/her intention. The OP could just be looking for some general ideas to get going (or to rule out bad ones before proceeding). I see this as a hypothesis-generating activity, not one in which he/she'd expect to get hypothesis-validating information.

  • by KermodeBear ( 738243 ) on Tuesday June 17, 2008 @05:24PM (#23830623) Homepage
    He isn't asking that you write his paper for him. He is looking for information and hoping that a colleague will point him to something interesting. I don't see anything wrong with that. Someone here might know of some research or project that would be very helpful that the OP could use.

    Sorry to see that you're so jaded. No idea why you were modded up as 'insightful'. More like troll.
  • by Anonymous Coward on Tuesday June 17, 2008 @05:35PM (#23830821)
    You assume a lot of things, "Professor". I just started my first year of a PhD in CS last year, and it turns out that taking Senior level classes in Electrical Networks, Operating Systems, Databases/what have you *doesn't* actually prepare you for the task of writing research papers or performing literature reviews.

    Many departments are now offering direct-to-PhD programs from Bachelor's degrees, without having any required courses in Research Methods or anything close to what graduate academic life is actually like, and for some there's a major adjustment period involved.

    If you don't have an advisor or someone familiar with the process helping you (and most departments don't exactly facilitate that process either), it can be quite a daunting task.

    Say what you will about self-direction and "figure stuff out on your own" /what have you, but at least he's showing the proper attributes that any truly educated person needs to have: the fundamental thirst for knowledge to ask questions and the desire to elicit feedback from various sources...

    Say what you will about the "quality that schools put out these days", but it looks like academic arrogance is something that has stuck around since your day as well.
  • by Daniel Dvorkin ( 106857 ) * on Tuesday June 17, 2008 @06:28PM (#23831465) Homepage Journal
    Oh, FFS. Whenever you're doing any serious research, talking to your colleagues -- and yes, damn it, when you're doing software engineering, a lot of /.ers are your colleagues -- is how you form good ideas and organize your thoughts. This is true in any field. I've noticed that a lot of hotshot geeks like to imagine themselves as Lone Geniuses Bringing Great Ideas Into The World Through Sheer Brilliance And Force Of Will. Guess what? The LGBGIITWTSBAFOW approach works reasonably well for small software projects and one-off research papers. For anything bigger, such as a PhD thesis, it's a recipe for failure. Every computational tool you use in your daily work started through collaborative research.

    The submitter is clearly not asking anyone to write his thesis for him. He's gathering ideas, that's all. If you have something useful to contribute, speak up. The fact that you choose to snipe at him instead ("I'm appalled at the quality of post-secondary education that this guy has supposedly received") pretty clearly indicates that you have neither the experience to understand what he's doing nor the expertise to contribute to or comment on his work.
  • by Anonymous Brave Guy ( 457657 ) on Tuesday June 17, 2008 @06:39PM (#23831581)

    It's been my experience that big software development companies almost invariably spend so much of their time worrying about those horrible real world conditions that it rarely occurs to them that those conditions didn't just happen by coincidence and that they could take steps to avoid the problems in the first place. Smaller shops tend to be much better at this.

    Before anybody dives in and lectures me on scalability, let me say that IME the difference has a lot more to do with the kind of unprofessional, unproductive culture that can only thrive at mid-levels of large companies than anything to do with the scale of the project or the absolute size of the development team. Indeed, if you read the Bruce Webster article on a runaway project that was linked earlier today, it's pretty obvious that parts of the project code base were becoming unmanageably large because of incompetence and not because the project requirements actually necessitated that much code.

    If you want to learn real world lessons, go watch a small- to medium-sized software shop, where there isn't space for the lazy and/or dictatorial idiots to hide, preferably one where everyone is a partner or there is some sort of profit-related pay so people have an incentive to really follow practices they think are helpful. Plenty of difficulties still arise in such environments, but they are much less likely to be own goals by the development team, and the team are much more likely to have effective ways to deal with them that would be of interest to others.

  • by camperdave ( 969942 ) on Tuesday June 17, 2008 @07:26PM (#23832179) Journal
    What's wrong with getting the opinions of a group of people in the field? Last I checked, gathering opinions was research.
  • Re:Good software (Score:2, Insightful)

    by zenplanner ( 1309513 ) on Tuesday June 17, 2008 @08:27PM (#23832885)
    This is a good list, and a great starting point for a PhD. thesis. It's the first really useful post I've seen in this thread. Too often we underestimate the "non-technology" factors (like supportive management, and a market for the end product) that go in to creating good software. I'd like to add one more item: Making the informed decisions about what to optimize. Every technology optimized for *something* -- execution speed, compiled/downloaded code size, source code elegance, system flexibility, portability, developer efficiency, shiny user interface goodness... the list goes on forever. I've seen too many projects created by otherwise smart developers (with supportive management) that have failed because they optimize for the wrong things -- for execution speed instead of portability, or for portability instead of developer efficiency. To cannibalize Sun Tzu: Every bit of software is meant to operate within a specific domain. If we don't understand that domain then the software has little chance of being successful. Best of luck figuring out how to MEASURE these things.
  • by JimToo ( 1304315 ) on Tuesday June 17, 2008 @08:48PM (#23833111)
    Actually, when you realise what sort of horrors are present in a house you realise that the author of the linked document is drawing a false analogy. Both in houses, and in software, various shortcuts are taken for pragmatic reasons, and these are often because the shortcuts do not undermine what is the primary function of the "house" or the "software". For example, the concrete floor in my house is lousy rubbishy stuff. Probably doesn't meet the codes, yet except when the carpet layer has a hard time laying I never notice, nor really am I too concerned, about the failure to meet some "ideal" standard. So in doing research in this area, a reality check is required and the article you have chosen to refer to starts out with a poor example to prove a point ... I am not convinced.
  • by Anonymous Coward on Tuesday June 17, 2008 @09:41PM (#23833537)
    You teach college-level courses and yet don't understand research? The so-called "academic silo" is a negative thing and that's for a reason. I personally can't imagine anything useful coming from Slashdot, but I'm in a PhD program and the most useful lesson I've learned is that people are the primary resource.

    Sure, you cite the papers and the literature, but you talk to people to find out what papers and literature you should be looking at.

    Again, Slashdot is probably all but useless - people are not. When I'm starting a new research problem, I ask myself - who would know about this. Then I go talk to that person. Saves a TON of trouble.
  • Re:Management (Score:4, Insightful)

    by try_anything ( 880404 ) on Tuesday June 17, 2008 @11:33PM (#23834371)
    I agree with what you're saying but would put a more pessimistic slant on it. A programmer shouldn't take a personal, face-to-face, cube-to-cube interest in what goes on in other departments hoping to make improvements on business processes. A programmer should do that because otherwise the specs will be wrong, the design will be flawed, and the tests will be lacking.

    You will be told, "There are people whose job it is to talk to all the stakeholders, understand their disparate needs, and assemble the requirements." This is correct. There are also people whose job it is to design the system, other people who are supposed to implement parts of the system, and other people who are supposed to test the system. Odds are that many of these jobs will be assigned to incompetent, clueless, and/or underworked people. Odds are that even the competent people will miss things that might cripple the design later. It improves your odds immensely if you do some reconnaissance work on your own.

    Don't duplicate the work done by others (unless you figure out that a particular person is useless.) If somebody talked to the manager in group X, then you should talk to the second in charge. If someone talked to a supervisor, talk to the grunts. Read their requirements first, then go casually chat with them as if the requirements were correct. Observe their looks of panic and horror. Then start taking notes. Requirements are often collected manager-to-manager and leave out vast swaths of essential functionality.

    After you feel good about the requirements, review the test plan. If anything is obviously missing, mention it. If anything looks suspiciously underspecified, chat innocently with the testers about it. "I bet testing internationalization is gonna be a bitch. How the hell do you even type right-to-left text in Windows, anyway?"

    This is your job as a coder -- to have the backs of the people you work with and save them from themselves. If you're lucky, someone is doing the same thing for you. The guy who wrote the test plan might look at your issue tracker to see what features you plan on implementing. Maybe you missed something. The guy who wrote the high-level specs might look over your design docs to see if you've made any obvious mistakes with respect to deployment requirements.

    A lot of people see this kind of behavior as being absolutely contrary to fundamental engineering principles. On the contrary; it is sound human engineering. It shouldn't even be a political problem. The only people who won't appreciate the feedback and correction are the ones who are consistently shown to be incompetent.
  • by plover ( 150551 ) * on Wednesday June 18, 2008 @12:18AM (#23834715) Homepage Journal
    You mock it, but not only does this pass for research, but it's business advice on innovation: seek outside your boundaries for answers. Businesses frequently ask outside experts to participate in design and innovation activities, and only for a stipend. Proctor and Gamble and 3M are both renowned for this type of activity.

    It's certainly not the only strategy to create or discover new ideas, but who knows when a post by J. Random Luser might contain that cool spark that sends you down a new path of thinking?

    So if you don't want to participate, don't. If you want to lie to him and tell him something like "procedural code is on the ascendancy again", that's also funny. If you just want to post goatse links; well, this is Slashdot, and nobody's stopping you from that either. But you shouldn't necessarily discount the value of what he might be gaining from this little exercise. It could provide insight into the leading edge of future software design.

  • Re:Modularity (Score:3, Insightful)

    by mabhatter654 ( 561290 ) on Wednesday June 18, 2008 @12:41AM (#23834865)
    I think the parent would be better contacting slashdot admins to mine the postings rather than an article thrown out there.

    He's asking the wrong question the wrong way for the level of work he should be doing. Probably because he's got "book" experience, and not 10 years of work experience. That said, you won't find many people teaching at university that would do any good answering his questions either. They may be good at their jobs, but not at multiple project managements... the ones that are really good don't teach.

    I think that shows the problems with computer degrees in general. They don't really teach long-term project management in university (it's beneath them). They want to teach you lots of great theory, but just expect you to learn how to USE it thru osmosis. Something like a PhD for software engineering really shouldn't be offered to anybody with less than 5-7 years working at programming and managing programmers.
  • Made with love (Score:3, Insightful)

    by joto ( 134244 ) on Wednesday June 18, 2008 @04:56PM (#23845199)

    Most bad software is rushed, created by bored programmers, in a corporate decision to create another boring and faulty-by-design software system.

    Most good software is written by a small team of very excited developers who love what they do, are given the resources to do so, and who couldn't even think of a more exciting system to build.

    You can add all the modularity or simplicity or readability or whatever you need, but unless it is made with love, it won't be beautiful.

In less than a century, computers will be making substantial progress on ... the overriding problem of war and peace. -- James Slagle

Working...