Become a fan of Slashdot on Facebook


Forgot your password?
DEAL: For $25 - Add A Second Phone Number To Your Smartphone for life! Use promo code SLASHDOT25. Also, Slashdot's Facebook page has a chat bot now. Message it for stories and more. Check out the new SourceForge HTML5 Internet speed test! ×

Comment Understandable (Score 5, Insightful) 165

The Commodore 64 was right at the cusp of technology where a device could be almost fully understood by a dedicated layperson. If you picked up the Commodore 64 Programmers Reference Guide, you got 504 pages (1.4 lbs) of technical data, including a full system schematic. Low-level programming involved tweaking memory locations that were (effectively) hard-wired to chip pins, directly manipulating the state of the SID or modem chips. Want to watch tape I/O coming in through the bus? Just watch the right memory location.

Today's systems are far more powerful. But I bet most professional developers can't say they fully understand all of the timing, pipeline, memory I/O, bus architecture, video pipeline, and everything else that makes these machines great. There's a lot of "black box", even for the experts. Read Abrash's Graphics Programming Black Book Special Edition if you want to see how much there is to know about optimizing even a single function in what is now a 20 year old machine.

The power of computing comes from abstraction. But the Commodore 64 (and the Apple ][) marked a tipping point when you could dig into the abstraction as a motivated beginner and strip away the layers until you were dealing with the bare metal. And there is power in that understanding. A bottom-to-top stack of knowledge that helps develop mental models that make more complex systems easier to understand. While my daughter has a very powerful laptop for school, way more powerful than a C-64, it highly unlikely that she or any of her peers will be able to peel the onion back to the physics of electricity like my generation was able to.

So I'd rather have today's tech. But I'm glad that I got to spend a lot of time with a C-64 in my youth, or I'd be nowhere near the programmer I am today. That's where the nostalgia comes in. Greatness in (relative) simplicity.

Comment playtank (Score 1) 403

Your boss is making a financial argument for outsourcing. The only way to counter this, if you want to counter it, is with another financial argument against outsourcing. Despite the great many technical reasons not to outsource (and a few possible reasons in favor, perhaps), the decision that was made was a financial one. So if you want to argue against is, you need to be arguing in the same domain.

Here's my financial argument in favor of not outsourcing.

When you outsourcing, you are paying an external company to grow the necessary knowledge, skills, and ability to ship a software product. You are accruing zero of these assets to your company. When you have completed the project, you have generated one tangible asset, and zero intangible assets. All of the intangible assets are now owned by the party that you used to create the product. Furthermore, you have increased the value of the vendor, and thus you have increased the rate which that company can charge. And you can bet that this will be passed on to you in future product negotiations.

Inversely, with an in-house staff, the so called "extra cost" of staffing and benefits, if your environment is healthy enough to lead to employee retention of a reasonable level, leads to the accrual of in house knowledge on a wide range of topics. These include, but are not limited to: software development methodologies, planning, user interface design, software quality assurance, scheduling, testing, source code control, building reusable components, and many more. As the team matures, future products cost less.

So, in economic terms, you can outsource and pay a vendor less for the current project, adding value to that vendor. This will result either in escalating costs over time with the same vendor, or the continued use of a new vendor, and each new product will bear the cost of being a version 1 product with no institutional knowledge or economies of scale. Or you can keep things in house, pay more up front as the team develops the initial products, but with proper management you'll have a team that will produce products faster, with more personal investment, and higher quality, with a much smaller incremental cost over time.

Comment Useless Argument (Score 2, Interesting) 207

Even CoreAnimation is not beyond the "copying" argument. Microsoft shipped DirectAnimation years ago. Here's a link to the press release.

But this entire argument is completely useless. There are a number of skills at play when it comes to building and shipping any techology. First, a company needs to see an opportunity. Then, they need to design the right product for the market. Then they need to implement the product so that it can be easily used and make sure it's flexible enough that users can mould it into their products. Finally, the technology must be correclty marketed.

Fail at any of these, and you'll end up with a technological dead end. But that doesn't mean that somebody else didn't see the need as well, or that somebody else might not implement a better framework. That's supposed to be the beauty of our industry. There is room for competition and innovation, and no two products will hit the exact same sweet spot with a user base.

It doesn't matter who did it first. It matters who does it best for you. If I'm forced to code only on Linux, then I can tell you that CoreAnimation is not the technology for me. So I'll be looking for some competition. If I get to use OS X, I'm sure CoreAnimaiton will be useful. And if I'm on Windows, welll, DirectAnimation is dead. So I guess I'm screwed.

I don't care who was first, or who copied who. I need techology, and the capabilites of any library or feature I can use are highly dependent on the capabilities of the platform itself. If my OS provider can keep rolling out new features that help me write better software, I'm all for it. Even if they are copying somebody else. Where would any art form we have today be without the copying of features? Music, painting, storytelling; all art relies on a shared context. Great art works from there and pushes the boundaries. And I believe that coding can be an artistic expression. So I expect great programmers to borrow from each other, and then push those ideas in new directions.

We can argue which company's new direction we like best. But who is copying who? I don't care. I only care who is making the technology that I can use to write my software.

Slashdot Top Deals

"Even if you're on the right track, you'll get run over if you just sit there." -- Will Rogers