![]() |
|
![]() |
|
|
Thread Tools | Display Modes |
|
|
#11 |
|
Professional Programmer
Join Date: May 2006
Location: Maryland, USA
Posts: 306
Rep Power: 3
![]() |
That is why I don't just major in computer science. I always get the sense that a lot of CS graduates don't realize how much business application programming sucks, or at least it appears to from the outside. For me it has always been coding software for use with physical systems: Robotic Arms, subs, and ground vehicles. Code size, quality and performance all matter there.
__________________
Robotics @ Maryland AUV Team - Software Lead |
|
|
|
|
|
#12 |
|
King of Portal
|
I'd like to point out an example from my own university studies Game_Ender regarding robot programming. In my Introduction to Mechantronics class our professor (not a very good one at that) was trying to impart to use how to program a particular type of processor called the Basic Stamp, which used Basic style code. However the cost of a Basic Stamp (or the model he wanted us to use) was somewhere around $70 not including the amount of additional things you had to purchase. I inquired how the Basic Stamp worked and he explained that it was basically a PIC chip that interpreted the Basic program stored on the additional RAM on the board. So I obviously asked, why not just use the PIC? His reply was that the Basic Stamp was easier to program and it reduced development time. I'm set in my ways so I said I'm just gonna buy the $2 PIC plus it's $30 programming board and create the circuits with that. The only difficulties I had were in setting up some circuits to operate a stepper motor, but that's because my knowledge of electrical engineering and how a bipolar stepper motor works was limited in that sense, and I was unable to find help on that subject from someone at my school. Most of the other engineering students had no idea what I was talking about. Of course we were also supposed to use a unipolar stepper motor, but I had the same problem with that as with the chips. Why would I use something that's more expensive and produces less torque given the same amount of power? My professor replied with development time, and a whole bunch of other nonsense. My favorite thing he said though was "look at Windows, the code is buggy and crashes and has tons of problems, but it's the leading OS" I was just stunned. I explained to him that solely based on the fact that I had designed equivalent circuits as everyone else and at roughly 1/20 of the cost I deserved an A, for being not only efficient, but also cost effective. Development time was the same for all of us, my shortcoming in the motor example would've been overcome if I had the knowledge to complete what I needed to. It wasn't a matter of the code. The timing sequence was actually correct, it was the electrical circuit to operate the motor that I couldn't figure out.
In a business setting I can understand why people might just want something that works and works now because the company may be able to spend the money to just improve their hardware. However, someone who owns a home computer might not have that option at their disposal. The fact is it's my RAM that's being used inefficiently, which in turn slows down my other applications and increases my paging cycles and all that other stuff. It costs me the efficiency of my computer. Just take a look at web programming like Reggaeton was saying. A friend of mine who works in IT one of his bosses saw a flash site and he became like a Flash zombie and was like "FLASH ON EVERYTHING" but what he doesn't realize is that Flash is memory intensive and takes time to download. Most of the sites I design don't use flash because I don't really see a need for it since I know there are still people out there who don't have DSL at their disposal. One person's lack of dedicating themselves to good coding practices in exchange for something "better" costs others. I'm of the opinion that any program that is going to be distributed to large amounts of people should be coded for efficiency and optimal performance. If it's a one shot one deal prototype or something and you could use it sooner rather than later then doing that isn't so necessary.
__________________
Lo, there do I see my father. 'Lo, there do I see My mother, and my sisters, and my brothers. 'Lo, there do I see The line of my people... Back to the beginning. 'Lo, they do call to me. They bid me take my place among them. In the halls of Valhalla... Where the brave... May live... ...forever.. GrimBB | Mimesis |
|
|
|
|
|
#13 |
|
Expert Programmer
|
IR: I found a lot of my univeristy professors took the same approach with memory constraints, even the programming competitions we attended tended to require code which compiled and executed within so much time, and you would even be graded on a ratio of resources vs speed. I think everyone can agree though that coding with resource restrictions in mind requires a more challenging mindset, you need to be much more organized with your use of resources to be able to do this and anyone who learns to code efficiently can also code "inefficiently"; you learn more learning the first method.
One other point I am surprised has not been mentioned yet is that optimizing compilers have come a very long way over the last 10 years, and in more cases than not, tend to be more efficient at optimizing code on a low level, leaving the higher level algorithmic optimizations to the coder.
__________________
Clifford Matthew Roche <geek@cliffordroche.com> Web Hosting: http://www.crd-hosting.com Consulting: http://www.crdev-consulting.com |
|
|
|
|
|
#14 |
|
Programming Guru
![]() |
Maybe things only look bad because you're looking in all the wrong places. What is right in front of our eyes... every day?
Google. A multi-billion dollar industry. Google's quality is what has lead it to prosperity. Quality is leading the internet's greatest industry. The companies who actually care, are the ones doing well. Those who do not, just won't last as long. That's the difference. More examples: Youtube, Facebook. Counter-examples: Hotmail, MySpace. ![]() |
|
|
|
|
|
#15 | |
|
Professional Programmer
Join Date: May 2006
Location: UK - London
Posts: 330
Rep Power: 3
![]() |
I am not the most technically aware person but companies put misleading stuff in their advertisment to the publics, so i never really believed companies that say our stuff is more secure or it is more efficient than X[come on you need an example],
So if their programs are aimed at people like me then why would they care how memory or processor effecient their programs are because i just went down to those big chain computer stores and bought myself a core-dou processor and a gig of memory and the latest release of windows And even if they do say to me use our program it's more secure and easy on your resource i wouldn't have a clue what they are talking about, i just want to be able do my spreadsheet stuff while i am listening to my music and checking my email. Another company would properly be saying the same thing within a month or so, but be selling it at a cheaper price, how did they do this, i don't know.
__________________
Quote:
|
|
|
|
|
|
|
#16 |
|
Resident Grouch
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jun 2005
Posts: 6,453
Rep Power: 10
![]() |
It's pretty straightforward. Say you've making a software product to run on existing desktop machines for the largest part of the market, non-technical people. How many of those people are actually running multiple processes? Even if they have several services running, the usage is minimal. You can pretty much use all the resources you expect to find on the average machine, which is plenty.
Your recurring cost for the product is distribution and support (if you offer support). Buying, burning, and shipping discs, or maintaining servers for download, or whatever, and a few low-grade techs for support. Not much. Your cost of development is non-recurring; you can divide that cost, however much it is, by all the copies you wind up selling. Twenty thousand or two million. A quickly developed program is going to amortize one hell of a lot quicker, and be more profitable, even if it's not polished and minimal. Quality is great (see my old signature), even primary in mission-critical software, but without performance, it starves people instead of feeding them. You have to shoot for balance and reality, or put yourself and your coworkers in the unemployment line. If you can't work it out, you'll not rise above code-monkey unless you win the lotto or inherit from someone else's hard work. I have pride in my work; it was better than the competition and fed me well. Undue pride or unduly costly goals may taste good, but they aren't very filling. Your investors will notice.
__________________
Abstraction doesn't make it impossible to write bad code; it makes it possible to write superior code. Contributor's Corner: Grumpy on C++ Exceptions DaWei on Pointers |
|
|
|
|
|
#17 | |
|
Retired Programmer
Join Date: Jul 2006
Posts: 45
Rep Power: 0
![]() |
Okay... Alot of great responses...
@DaWei: A perfect counter point. What you say is very true. If you slow down too much, you end up, as you put it "starving the public". There is still a balance. Take Google for example. Have you seen how they run things? Its quite strange. However, their end product is still very high in quality. It is more often that you see freeware of more quality (for obvious reasons.) But, there is still a balance between being obsessed with quality, and just tossing a product down in two seconds (take the "Enter The Matrix" game, for example; people didn't like it because it had so many bugs and was under developed - mostly because developers were so pressured) Quote:
Now I am not saying, by any means, that RAD tools and all that jazz should not be used all-together. We need to pick and choose where and when we use those tools. Most importantly, we need to choose an efficient tool if we do use a RAD system. Alot of these sites and programs can easily be written in virtually the same amount of time by hand, and if the programmer is well educated, that program will be of much better quality. As Sane has stated, Google is a perfect example of how a quality made product is made popular. MySpace and Hotmail, are popular (to an extent) but they didn't get thier by having quality. Hotmail is mainly popular because of MSN and Microsoft. As we all know, Microsoft isn't popular because its the best system. Mr. Gates used many under-handed technics to get those systems where they are now. |
|
|
|
|
|
|
#18 | |
|
Hobbyist Programmer
Join Date: Nov 2004
Location: 1691 miles East of L.A.
Posts: 159
Rep Power: 4
![]() |
Quote:
__________________
-- lostcauz Stepped in what?... Behind whose barn?... I didn't even know they had a cow! |
|
|
|
|
|
|
#19 | ||
|
Battle Programmer
Join Date: Feb 2006
Location: Bellevue, WA, USA
Posts: 766
Rep Power: 3
![]() |
Quote:
Quote:
__________________
<insert disclaimer here> <insert shameless plug for Visual Studio here> |
||
|
|
|
|
|
#20 |
|
Hobbyist Programmer
Join Date: Jan 2006
Location: UK
Posts: 215
Rep Power: 3
![]() |
I don't think its a change in mindset at all. Trade-offs between productivity and quality has always been a factor in development. The only difference is the shift on where these two balance.
If I can make an application that meets all the requirements using tools that can drastically reduce development time. It doesn't make me lazy or capitalist at all. If anything it makes me considerably more productive and pro-active. I can get involved in more projects, and I can get more projects done in a much quicker time. I don't want to waste time optimizing code efficiency if the increase of performance is negligable to the end user. Yes I can write a web application that meets all the w3 standards using style sheets and test it for a wide range of web browsers. But if the requirement of the application was to run just in IE, then I'm doing some serious over engineering for absolutely no reason at all if I can meet the requiements in 1/10th of the time by using MS publisher. You shouldnt feel upset for using such tools reggaetton. But its a common trend in programmers I see every day. I used to know a guy who used notepad because he was truely a hardcore one who needed to reinvent everything, and when he was asked to use an IDE of some sort he would really kick off. And to this day I still don't get why so many programmers have this attitude. Perhaps its the same as allowing your missus to hire contracters to do work on your house. The ego won't allow it, despite you know the final outcome will be better. IMO this "defeatist" mindset for using RAD tools is the true problem for modern programmers. PS. In no way do i condone the use of MS Publisher btw, I'm just trying to set an example. ![]() |
|
|
|
![]() |
| Bookmarks |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Programming without post secondary education | Eric the Red | Other Programming Languages | 6 | Mar 7th, 2006 5:56 PM |
| Does Programming Make You Smarter? | Sane | Coder's Corner Lounge | 43 | Oct 2nd, 2005 6:12 AM |
| MIT's Metaphor For Software Programming | Infinite Recursion | Other Programming Languages | 2 | Jun 12th, 2005 6:42 AM |