Slashdot Mirror


User: lars

lars's activity in the archive.

Stories
0
Comments
123
First seen
Last seen
Profile
(view on slashdot.org)

Comments · 123

  1. Re:templates on Microsoft Releases C# Language Reference · · Score: 1
    (BTW: why is double dispatch esoteric? Perhaps, in a language like C++ where even single dispatch is the exception, rather than the rule, it must seem esoteric...)

    Because it's something I've found I rarely need to use.

    As for your other points, could you elaborate on why you think C++'s solutions are not good? Are you saying that C++ DOESN'T have generics or strong type checking? I think that all depends on your point of view.

    I will probably agree with you. I don't consider C++ a panacea, but I do think it's much less limiting than Java, which imposes far more constraints than C++. I don't think Java offers the tools I need for a large-scale OO project. I have not worked on such a project using Java, but I suspect that many of the small things I dislike about the language would become more pronounced with the size of the project.

  2. Re:templates on Microsoft Releases C# Language Reference · · Score: 1

    No. Templates in C++ offer way more power than inheritance does. First of all, they're type safe, as TummyX pointed out. Secondly, they provide compile-time polymorphism, whereas inheritance only provides runtime polymorphism. Thirdly, C++ has features like specialization and function templates, which can be quite useful. The real power of templates in C++ is seen when you combine them with the other features of the language like operator overloading, but even still, Java would be a better language with C++-like function and class templates I think.

    In Java, the extent of the "generic programming" that you can do is writing container classes for Object's. This is nothing special, and really no different from being able to write containers for void*'s in C or C++. You still have to use casts all over the place, which is one thing I find disgusting about Java. I've only ever needed to use a cast in a real C++ program (that excludes CS assignments, and other crappy code that I mostly just hack together) about once in a blue moon, like when using the double dispatch pattern, or some other exotic design pattern.

    It is so much better to be able to pass, say, a comparison function as a template argument, and have it be type safe and allows you to pass in anything that operator() can be applied to. But in Java, you would have to define an interface that declares a comparison functions - and if there's no standard comparison function, multiple pieces of code may all define their own interfaces - and implement it. Then the objects to be compared have to be cast to Object, passed to the function, and cast back to their original types. Not only can this be unsafe, but it's extremely tedious, and not even what I would consider a reusable design. The fact that Java doesn't provide a compile-time code reuse mechanism like templates is one of the reasons I really dislike it as a language.

    I can appreciate the logic behind a language that's simpler and cleaner than C++, but if you're going to eliminate features like templates and operator overloading, you should provide some other way to allow programmers to achieve the same level of reusability, and I don't think Java does that. If I wanted a more simple and pure OO language than C++, I'd choose Smalltalk long before I'd choose Java. Back to the topic at hand though, I find C# to be a lot like Object Pascal/Delphi as well as Java. Maybe it's just the syntactic sugar like properties that's making me think that (but you can see Anders Hejlsberg's influence right away in that feature). I think, like Java, it will be a decent language for someone to use as their first OO language - I first learned Object Pascal myself - and for programmers who are likely to get bogged down by the complexity of C++ or want the features like type safety that Smalltalk lacks. But like Java, I don't really consider it a multi-purpose OO language, or at least not a very complete one because of the lack of features for facilitating code reuse.

  3. Borland C++ Builder on Microsoft's New Language · · Score: 1

    Keep in mind that Anders Hejlsberg, the architect behind Turbo Pascal and Delphi is now working for MS, and is the chief architect of WFC and C#. He likely has had a big influence on this. That's why I have much better hopes for it than I usually do with Microsoft's products.

  4. No. on Microsoft's New Language · · Score: 1

    The Intentional Programming stuff, though pretty cool, won't be a part of VS7. It's still several years away from being an actual product.

  5. Re:Oh yeah. on Who's Afraid Of C++? · · Score: 1
    So you're saying is:

    good_programmer != good_computer_scientist

    *and*

    good_programmer == good_computer_scientist

    With that logic, I'd suggest you aren't either. :)

    If you're a computer scientist that works exclusively in pseudocode and chalkboard drawings, then you are indeed a scientist, and a mathemetician, but the word computer doesn't even belong in your major.

    Huh? Once again I don't understand where you are coming from. No computer scientist works without a computer. However, a computer scientist may work with a model of computing such as a Turing machine or a pushdown automaton rather than a physical computer. These models are every bit as powerful as the real thing, so why do you say that one needs to use a physical computer for their work in order to call themselves a computer scientist?

  6. Re: What? on Who's Afraid Of C++? · · Score: 1

    I guess we have different philosophies on what higher education is about, then. In my opinion, an institution that makes a priority of teaching people marketable skills is essentially a trade school, not a University. The minute you focus on making the education marketable, you begin to compromise the education. At my university (Waterloo), which has a good reputation for CS, this is very noticable. It seems to me that one really needs to get a Master's degree before one can claim the same level of education in CS as a person majoring in a more pure subject like Mathematics or Physics would attain with their Bachelor's. I think in the old days, in the 70's, or even the 80's, the quality of education one would get as part of a Bachelor's degree here was likely substantially higher, although I could be wrong on that. Now, there's so much pressure from the university's funding sources to produce marketable grads that I think a lot of compromising occurs.

    I don't see why knowing about complexity analysis (big-O) is "pretentious" if one doesn't know anything about the real world. The real world is completely irrelevant as far as such topics go, because computation, including anything that can be accomplished in the real world, can be modelled mathematically. Need I remind you that computer science existed LONG before physical computers (by which I mean anything even remotely resembling what we have today) even existed? Had the transistor never been invented, most of the theory of computation, algorithms, etc. we have now would have been developed anyway, although perhaps more slowly. Einstein certainly didn't need to see real world examples to come up with most of his physics.

    Besides, if a person really wants to obtain marketable skills while studying at university, they should simply look for summer or co-op jobs relevant to what they're interested in. That's the best way to get useful experience.

  7. Re:Can someone give 1 good reason to use C++ over on Who's Afraid Of C++? · · Score: 1

    If that's his point, I definitely can't understand it. The ability to create types that have the same semantics as built-in types increases your ability to re-use code. It also makes some powerful design paradigms more amenable. By combining generics and operator overloading, you can do some pretty powerful things.

  8. Re:C++ as a teaching language/programming obscure? on Who's Afraid Of C++? · · Score: 1

    I'm a huge proponent of OO technology, and I generally think the treatment given to it at most universities (certainly not at mine) is very poor, and in general the power and importance of OO technology is vastly underestimated and underappreciated. However, I disagree with you on this. Perhaps it is not hard to learn the OO concepts and apply them without knowing anything about complexity analysis, algorithms, etc. but why would you want to do that? Then a lot of your job becomes trial and error. To me that seems like learning to be an automechanic without knowing what any of the parts actually DO, or without knowing how to actually drive a car. Of course being able to actually fix a car is more useful than knowing the theory, but what happens when you encounter a type of car you haven't seen before?

  9. Re:Oh yeah. on Who's Afraid Of C++? · · Score: 1
    Treating the subject as something so cut and dry (good_programmer = math + bigO_notation + algorithms + theory;) does a disservice to the occupation.

    He didn't say that. He said that a good computer scientist knows about analyzing efficiency, algorithms, and theory. These things are what computer science is all about, I don't understand how you can possibly dispute what he's saying, unless you're equating programming and computer science. You don't GO to a University to learn to be a computer programmer. If that's what you want, you should be at a community college or trade school of some sort.

    Secondly, writing computer programs well is only part of being a good computer scientist. It is a subset. Being a good programmer does not make you a good computer scientist. You are right that obsessing over syntactic details of a language is a waste of time. If students are spending an inordinate amount of time on such details, then something is definitely wrong. However, studing 10+ languages in a programming languages course is definitely not a waste of time, and whether or not they're languages that are in common use in the real world is really irrelevant.

  10. What??? on Who's Afraid Of C++? · · Score: 1
    Again, preconceptions, but if you're going to college with no programming foundation as a CS major, then you're probably either 1. looking to cash in on an employment trend, or 2. Not aware of what kind of thinking is necessary in computer programming, just always thought that once you graduated you'd become one. Either way, your work is cut out for you if you want to make it through a comp sci program at this stage, and even if you make it through, you won't have a very strong background compared to someone who programmed before even going to college.

    This strikes me as a rather bizarre thing to say. You seem to be assuming that everyone who chooses CS as a major does so because they either want to be a programmer, or they want to cash in on an employment trend. I know several people majoring in CS who have NO INTENTION of either. In my case, I'm majoring in CS because I'm INTERESTED in COMPUTER SCIENCE (heaven forbid!) If I was just interested in programming, I'd sit in front of a computer 24 hours a day and type. There are many people in the Computer Science field who probably rarely even go near acomputer except for something like e-mail. There are plenty of people with CS degrees who work in areas like management or business, just as there are people with Physics degrees who work as programmers. Yikes. CS is just a branch of mathematics, it's not job training. Ask yourself why anyone would major in mathematics, and the reasoning of a CS major should be similar (sadly, it's not in most cases).

  11. Haiku on Can You Create An Intelligent Haiku Generator? · · Score: 1

    Post only Haiku
    Get moderated to 5
    Better than 'first post'

  12. Re:A Relevant Analysis of Taxation on Microsoft Enticed To Move To British Columbia · · Score: 3
    Yes, homogeneous. Do you have anywhere near to the ethnic minority population levels as the U.S.? I think not. Yes, there are some areas in Canada, like Vancouver, that are starting to see significant immigrant populations.

    Umm, YES, we DO. If you're talking about rural areas, or smalls cities like Edmonton or Halifax, then perhaps the population is relatively homogenous. But Toronto, where I live, is the most ethnically diverse city in the world (source: UN). I believe the number of minorities in this area actually exceeds the number of whites now, and if you go out in public here, you certainly won't feel like you're in the majority if you're white. I have lived in the States, and there is MUCH less diversity there. You have your inner city neighborhoods where everyone is black or latino, and your suburbs where almost everyone is white, and that's the extent of it. Vancouver is almost as diverse as Toronto, and places like Montreal and Ottawa also have significant minority populations.

    Not surprisingly, in those areas, you are starting to experience some of the same problems as we do in our cities here.

    Wrong. In Toronto, as the diversity of the population has been increasing, the rate of violent crime has been DECREASING. If you walk down a street anywhere here, you will see people from all walks of life, living in harmony. In the US, crime and racism are rampant, you have slums and ghettos and places where it's simply not safe to go. In Toronto, there are a few poorer neighborhoods with higher crime rates but it's never bad enough that I don't feel safe walking down the street.

    The UN consistently rates Canada as one of the most livable countries in the world, and we ALWAYS come out ahead of the US as far as they are concerned. What you completely fail to realize is that because of the large size of our country and small population, a more social government only makes sense. In the US, it's everyone for himself, and all about greed. That is not the culture in Canada. There are other countries like Sweden, Finland, France, etc. that tax just as heavily as Canada, if not moreso, and maintain VERY high standards of living. You don't see anyone in France working 80 hour weeks like is common in the US. The literacy stats in these countries are higher than in the US, and in general the people are better educated and more enlightened. To me, these things are much more important than making a lot of money while living a shallow life, which is what most Americans strive for.

  13. Re:Formal Education A problem? on Too Old To Code? · · Score: 1
    Actually, I agree with almost everything you're saying. I was certainly not trying to say that a degree is a substitute for real-world experience. What I'm saying is that you NEED the degree to get anywhere. Would you be an IT director without your degree? I doubt it. While you may not think your degree has not been useful in helping you do your job, I would bet that it has. You're unlikely to encounter many situations in real life where you realize "Gee, this problem is NP-complete, it sure is a good thing I have a degree in CS and didn't waste my time trying to come up with an efficient algorithm". That doesn't mean learning these things will not benefit you in the future. Like I said, it's the process of developing your thinking and problem solving skills that is what really makes a degree valuable. There are NO training courses that can do this. You can take all the training courses, community college courses, workshops, etc. you want, but none of them are a substitute for a 4 year bombardment of higher education.

    Obviously experience helps a lot. The vast majority of people in my undergraduate computer science class know nothing about software engineering. They won't learn about it until they spend a couple of years in the real world. I have a little more real-world experience than a typical undergrad so I notice this, and I also recognize that I won't be a truly good software engineer (*) until I've worked at least a couple more years in the industry.

    (*) I HATE the term "IT worker" used to describe programming. I usually associate it with someone working as a programmer in a non-engineering setting, such as in the financial industry. In my experience, most such jobs are completely boring VB code-monkey or sysadmin type jobs. I don't think many top-notch programmers aspire to these jobs. I'm talking "real" software engineering jobs. You're not going to do anything truly cutting-edge without a degree.

    my field and I can safely say that if you don't want to bet your career on your ability to learn and stay current, then you WILL lose in the end. I guarantee it. How can I guarantee it? Because I'm one of those execs hiring you new grads and experienced workers.

    This is where I think you're completely wrong. Let's look at some things that have been hyped in recent years. Java. Any idiot can learn to program in a new language. I've had (co-op/entry-level of course, as I haven't graduated yet) offers from companies to be a Java programmer, and I'm a C++ programmer who hasn't written a line of Java code in his life. And if a company would rather hire someone with half the talent so they don't have to wait a month for me to reach a high level of productivity using Java, I'll just take my services somewhere else. Look at the guys who do well in the ACM contests. They get job offers on the spot, even if the only programs they've ever written are 100 line C programs for programming contests. Another buzzword I've noticed in job ads recently is XML. How dumb does a company have to be to list "experience with XML" as a required skill? If you happen to know Java and XML, great, you can probably find half-decent entry-level job. But in 5 years you'll probably still be doing an engry-level job if you don't have a degree.

    Knowledge is no substitute for ability.

  14. Re:Learning C++ on Too Old To Code? · · Score: 1
    They don't understand how to do polymorphism or generic programming unless it's provided by their language. Smart C hackers have been doing this without language support, and thus better understand how it works, and have better intuition about the performance impact of certain C++ language features.

    Or not. I've seen many C hackers dismiss C++ and OO as an inefficient way to program because (among other excuses) the vtable adds an extra layer of indirection. That is obviously silly for several reasons, but I've seen these kinds of misconceptions far more often from C programmers than I've seen any USEFUL insight into the performance impact of C++ features. In fact, I think a C programmer would be less likely to know about performance issues in C++. For example, a C hacker would probably be less likely to know a lot about things like template specializations, the STL (which implements very efficient algorithms), or overloading operator new.

    On the other hand, if your point is that someone who knows both C and C++ well is likely to be a better programmer than someone who knows just C++, then I'd naturally agree that this would normally be the case.

  15. Re:Formal Education A problem? on Too Old To Code? · · Score: 2

    As long as you're working on relatively simple projects that don't require the kind of knowledge or experience one gains at University, then you may be OK. But what if your company wants you to implement a compiler? A database system? Parallel or distributed computation (this could be a big thing in the future)? Or engineer a system that is designed to have a very long lifespan? Will you have the knowledge, experience and problem solving ability to approach the job and do it properly? I doubt it.

    Being able to learn and stay current is great, and it's something everyone needs to do in this industry. But I have worked with some very good programmers, and about 50% of what makes them so good is innate things like intelligence and work ethic. Howver, only 1% or an otherwise insignificant amount of that is their ability to stay current. The remaining 50% is the knowledge and experience of working with the fundamentals of thinking and solving problems. A good University education in ANY discipline will make you a much better thinker and problem solver. And a computer science degree in particular (from a decent school) will make you particularly adept when those problems are computing problems. This should be obvious. A large part of the process of getting a good education is being constantly faced with problems that are completely new, that you don't know how to approach, but you have the tools to solve. In the real world, if you're faced with a problem you don't know how to solve, you may not even know what the tools are. Inevitably, you will either solve it by mimicking a solution to a similar problem, or you'll try and come up with your own means of solving it. You may end up with a result that's far from optimal, if not simply incorrect.

    I thought I was pretty good before I began University. I was a hard-core geek, and spent many hours writing code, every day after school. I figured I was capable of becoming a software engineer without a formal education. Well, it was a pretty big surprise when I first got a taste of the real world, and realized that there were problems I didn't know how to approach. I discovered that hacking together a solution out of duct tape, using code found online or in books for reference, and doing whatever it took to get it to work is nowhere near good enough. Unfortunately, I was right. I probably WAS capable of going out in the real world and doing a lot of jobs in this industry when I was 16-17. But now I know that I would not have done 1/2 as good a job as I would do now, and would probably have deeply regretted not going to University 10 years down the road when I got bored of whatever I was doing and had aspirations to do something far more interesting or challenging. If you have aspirations to be as good a programmer as you can be, then I think a formal education is pretty necessary.

    I think the bottom line is that it's all about how much breadth and flexibility you want to have in terms of your employability. There are many jobs you can get away without the knowledge and experience a formal education brings. But they tend to be the lower tier jobs. If you ever switch jobs - and you will - you may find that you're quite limited in your options. If you're interested in going into management, then you may be better off, because aside from being paid more, you'll probably be judged with more of a focus on results. The sooner you get there the better. Personally, I wouldn't want to be in a position of betting my career on my ability to learn and stay current.

  16. I never thought I'd make headlines! on Pay Lars · · Score: 1

    So I wake up this morning, load up Slashdot, and imagine my surprise when I see the headline "Pay Lars". I don't know what I did (it couldn't be those pictures I have involving CmdrTaco and hot grits, could it?) but I sure like the idea of my bank account being Slashdotted...

    So, do what CmdrTaco says, pay me.

    User #72

  17. OO is a different paradigm on Ask Bjarne Stroustrup, Inventor of C++ · · Score: 1
    Perhaps you just haven't recognized how these systems can be modelled using OO. Doing OO analysis and design is fundamentally different from the way a human would typically approach a project and try to break it down. In analyzing my own thought process, what I've found is that it's more natural for me to try and break things down in terms of 1) actions/behaviour, and 2) data structures. For me, 2) is the same as 1), because my concept of a program's data comes directly from the question "what do I need to store and what do I need to retrieve", which are both actions. So, it seems to me that when one thinks about writing a program, it's natural to think about what the program DOES, and break its behaviour down into smaller actions. This corresponds to a procedural design.

    I know it sounds cliche and contrived, but OO is just a different paradigm. Most of the process of OO analysis involves identifying objects. Instead of breaking the program down into chunks that seem easy to implement, you have to imagine that you have a complete system and determine the logical parts that comprise it. Design patterns are a great asset here, because they describe components that are frequently encountered in OO designs and therefore easy to identify.

    It's hard for me to explain how to think about OO without sounding contrived - it's something I didn't really understand for a long time myself, until a few lightbulbs started going on in my head, and it was like a revelation. Fundamentally, it's simply a method for modelling your problem more accurately by way of a greater level of abstraction. Unfortunately, only a fraction of the programmers out there really know how to do proper OO design. It's really NOT taught very well at all. None of the University classes I've taken have done a very good job. It wasn't until I read Design Patterns and Object Oriented Software Construction and started to use patterns in practice that I really started to realize how powerful and elegant OO is. I first learned how to program using OO 6-7 years ago, and had been using it in various projects for a good 5+ years before I really started to "get" it. All that time I had thought I was doing OO programming. I was really just encapsulating some of my data and functions in objects, and creating inheritance hierarchies to reuse code (that is NOT what inheritance is for!)while the design was really still procedural.

    Maybe this is why you haven't been able to see a use for OO outside of databases. A lot of books I've read describe classes as being structures which hold data and have methods to act upon that data. You COULD describe them that way and technically be right, but logically it makes no sense at all. Objects (classes) are a lot more than that. It isn't the objects you build that make up your system, it's how you put them together. The relationship between objects in your system is far more important than what any single object actually is. I also frequently hear the mantra that OO is designed to allow you to build "reusable software", and that's ALSO very misleading. The key idea isn't that you use your classes in many different places in several different contexts (that's only going to be true for things like frameworks or utility classes). The reuse comes from the fact that a well-designed OO system is changeable - you should be able to make changes to your program without evoking wide-spread modifications.

    I would highly recommend, if you haven't already, read the book Design Patterns: Elements of Reusable Object Oriented Software, and take everything the authors say to heart. Especially the first part of the book (before the actual catalog of patterns). I have heard other posters on Slashdot comment that this book literally changed their life, and I would have to concur.

    PS, I hope this message doesn't sound overly condescending. It's just that I used to think OO was useless, just like many posters in this thread. But I can't help but think that you must not be seeing what I am if you're having trouble modelling everyday problems using OO. Feel free to dispute any of the points I've raised or tell me if I'm full of crap. I've been thinking about writing an essay debunking some of the myths and misconceptions about OO and clarifying what *I* think it's all about, and I could use some critical feedback.

  18. Offtopic: "Methodologies" on Ask Bjarne Stroustrup, Inventor of C++ · · Score: 1

    Methodology is the study of methods. The sentence "when other methodologies are more appropriate" therefore makes no sense. The proper word to use here would be "methods". This error seems to be common and rarely corrected so I thought I'd point it out.

  19. Re:Patterns are beautiful! on Pattern Hatching: Design Patterns Applied · · Score: 1

    I agree. I have had a lot of success developing solid OO designs simply by analyzing at the problem, and breaking it down into subproblems that can be solved by existing patterns. Then it's usually just a matter of implementing the specific details. I no longer tear my hair out trying to decide what the best way is to do something - the best solution always involves one or more of the GoF patterns, so I just go through them until I find the one that fits. It is remarkably simple and elegant.

    Now, I AM simplifying things a LITTLE bit. It's essential to have some experience, and a sound understanding of the principles of OO design. You can't just pull Joe Programmer off his terminal and turn him into a great designer instantly by supplying him a copy of the GoF book. But it's certainly a great start. It was after reading that book that I really started to fully understand what OO was all about. Buying "Design Patterns: Elements of Reusable Object Oriented Software" is probably the best $50 I've ever spent. I probably will sound like the biggest geek ever by saying it, but that book changed my life. :)

  20. Maturity of the industry on Pattern Hatching: Design Patterns Applied · · Score: 1

    What you're missing is that the phenomenon you're referring to is simply a maturing of the software engineering discipline. EVERY engineering discipline has gone through this. Look at typical hi-tech consumer products today. You have cell phones and PDAs, devices that take tens or hundreds of people to design and build. A few hundred years ago, watchmaking was probably considered hi-tech and could be done by one person. The wright brothers built an airplane, but now you have thousands of people working on space shuttles and you have to deal with safety standards, and other "bureaucratic gobbledygook" and there's no way one person can do the job. Software engineering is still a very young industry, which is just beginning to mature. In 20 years, I think you'll be wondering how we ever managed to produce large-scale software at all in the 20th century with such primitive processes.

  21. Re:You need a Canadian area code on iCraveTV sued for IP Theft · · Score: 1

    647 is definitely not Toronto. I've never heard of it. The actual city of Toronto is area code 416, and the surrounding areas are 905, 519, and 705.

  22. Microsoft employees on Microsoft Hotmail Domain Reward Check on E*Bay · · Score: 1

    When word of this gets around, I wonder if MS employees will start auctioning off their paychecks.

  23. Slashdot awarded one-click porn patent on Playboy And...Linux? · · Score: 4

    TO BE RELEASED IMMEDIATELY

    HOLLAND, MI - Slashdot (www.slashdot.org), a popular web site focusing on IT-related news, has announced it was awarded a patent on "One-click porn" by the United States Patent Office. The technology, which allows world wide web surfers to access porn with a single mouse click was invented by Slashdot founder Rob Malda. Malda said the innovation was inspired by Amazon's one-click shopping technology. "When I saw how easy it was to patent an obvious technique that everyone uses, and then start suing everyone left and right, I couldn't resist," said Malda. "I am going to start by suing every site that links to porn. Soon I will be the king of the porn industry," he said, "I already rule the nerds, the intellect of the world, so this was the next logical step in my quest for World Domination(tm)."

    He continued, "And besides, what better way could there be to make SHITLOADS of money than having banner ads for porn sites on a site that millions of horny, teenaged, sex-starved nerds visit EVERY DAY!" Asked if the pro-open-source Slashdot community would accept the idea of Slashdot owning patents, Malda responded "You don't think I've thought of that already? What people really don't know is that RMS is a recovering porn addict. I will soon own him and then I can tell him to tell everyone patents are good. Everyone will listen to RMS. I also plan to form a porn division within Slashdot called 'GNU/pr0n' which RMS will head. That should keep him happy and ensure I have control over him. I'm no fool."

    Officials from Andover.net (Nasdaq: ANDN), which recently acquired Slashdot were mum about the technology. When asked how one-click porn fit into their future plans, the company released a statement only saying "our patented one-click porn technology is Linux-based, and as you can tell from the success Linux has had in the past year, it is clearly the Next Big Thing(tm). Therefore, you should all invest in lots and lots of Andover stock."

    Slashdot also has patents pending on the technology in 18 other countries.

  24. Final Fantasy Soundtrack on Category: Best Unix Earcandy · · Score: 2

    This is the obvious choice for me. It doesn't really matter which version of FF, they all have the best music (by far) that I've ever heard in a video game. Nobuo Uematsu is a genius. I rarely play video games any more, and the last time I actually played FF was FF III many years ago, but I still love the music, and have a CD full of MP3's that I listen to all the time. I can't help but wonder if it was the music that subconsciously attracted me so much to the Final Fantasy series when I was younger moreso than the actual game.

  25. This is largely your own fault on How To Write Unmaintainable Code · · Score: 2

    It is apparent that your company is using a very ad hoc development process. It is UP TO YOU to work to change this, particularly if you're working with a lot of non-technical people. Try and convince your management to implement a formal development process. For each project, write a requirements document. Make several parties sign off on it. Make it so that any change to the requirements also has to be signed off by all parties. Whenever they requiest a new feature, simply tell them: "Adding feature x will take another 10 days. Either we can push the schedule back by 10 days, or we can remove feature y or feature z." This gives them a few choices, and if they insist that you implement both features, tell them it's impossible, and that they should know that as you've already set out the schedule and had them sign off on it.

    As a responsible, professional software engineer, these are things you should be trying to do. If there is resistence to implementing a formal development process, you may have to negotiate a little bit. But ultimately, there is nothing unreasonable about doing business in a formal, well-defined manner. If they refuse to do things this way, make sure you remind them that there will be serious consequences (personally I would threaten to quit the job and work for a more reasonable employer, but that's not for everyone): bad software, missed deadlines, and maintenance hell. This gets you completely off the hook if anything goes wrong. And when things do go wrong, they'll think "he was right", and they'll realize just how good you really are.

    If you want to be a successful software engineer, you need to adopt the attitude that you will NEVER be involved in a failed project (I had the chance to take an excellent course with Marshall Cline, of C++ FAQ fame, and this is one of the things he stressed most heavily and I see a lot of truth in it). You need to take a proactive approach. Take steps to ensure that management is doing things right, rather than simply sitting back and carrying out their instructions without saying a word. Of course, be diplomatic. This is part of a software engineer's job, IMHO. It is things like this that separate the men from the boys in the industry; the true software engineers from the coding monkeys. If you are a software engineer, it's your job to ensure that the company develops the best software possible, or at a more fundamental level, to minimize the time, money, and risk the company expends on the project. Doing that involves more than just coding.