If you, as a programmer, choose to make use of open source code as part of your own programs, then at least, you should look at the code, and better yet, you should try to understand it.
Joined: Mar 22, 2005
Do you mean looking at the code as a matter of gaining trust in it, or as a matter of being able to fix problems and add features and so contribute to it? For both reasons it would be nice to be able to do it, but it's often simply a matter of time considerations. Projects can easily use two dozen different third-party libraries or more, making it prohibitive to acquire in-depth knowledge at the code level of most (or all) of them. I think unless a company is generous with the time it affords its employees, it's more likely that a developer will get into the code of an OSS projects as part of a private project.
Ulf, what you say seems to fit with what I imagine about for-profit- corporation programming. It seems to say generally that understanding has diminishing returns.
Personally, I know as much about programming as I do about music, and I do neither professionally. However, I think there is a valid comparison between the two:
If a song is performed using digital samples of another song, then the sampled artist may have rights. If a song is performed from a theoretical analysis of another song, then the secondary artist might not have rights. Naturally, if a song is code and performance is running code, then the comparison is just, and "sampling" open-source code is a bit like signing yourself up to a record label.
But I wonder, though, about the longevity of this way of coding, since I believe that much of the music made with heavy sampling doesn't even last long in the market,and much less in the schools of music.
Joined: Mar 22, 2005
I'm not sure that's such a fitting analogy. With music something new is created that is comparable to all other pieces of music before it. Whether it is successful depends on what listeners like. In software, something new is created that is different from all other pieces of software before it, and as such it can't easily be compared to other programs - if it does something that no other code can do, then you have to use it. (This assumes that the code doesn't precisely replicate some other code, but that would be a rare occasion.)
If I can get my work done faster by using somebody else's code, then I will generally do that, assuming it fits my requirements or can be made to fit with little effort.
Joined: Jan 08, 2007
It would be nice to learn everything, but if you use that same music analogy, most muscians these days and over the past 40 years rarely go back and re-learn Beethoven, Bach, Mozart and so on piece by piece, line by line and become near experts in it. And then move on to the Robert Johnson's, BB King'sand so on.
Most music over the years is kind of like programming. It's reused over and over but in a different way and a different light to create something newer, updated or different.
And time constraints play a huge part in everything. If I have 6 months to complete a project, but it might take me 3 months to learn everything about struts, JSF, spring, hibernate, and so on, my management probably wouldn't be happy. Yeah I'd become a near expert in a lot of 3rd party software or frameworks I would be using, but I probably wouldn't get the project done on time.
And in today's IT, many business people rarely know what IT people do and when it comes down to it, they want to see a return on investment. And if they don't understand IT, it'll be very hard to explain how a budget for 6 months is now 10 months because I or anybody else needed to learn the frameworks down to the bit and byte level. They'd either not give me good projects in the future, not trust that I'd get things done on time, get rid of me, or outsource the work for cheaper and quicker. No matter what, I'd be up the creek.
So yeah, it would be great to learn everything down to the last raindrop about a framework and whatver opensource you are using, but as you get older, the time constraints dont allow it, new projects many times means new frameworks you don't know, and family obligations limit your ability to learn something 24/7.
And as you get older burning out isn't something you want to do anymore. Especially when many of the lastest and greatest frameworks used become obsolete or fall by the wayside for whatever reasons.
Joined: Mar 09, 2004
The point is well-taken that learning everything isn't practical. As many here would know that studying and taking half a dozen certifications doesn't ease the racing feeling to stay current. So, the programmers making the big open source projects like eclipse or apache would do it because as inventors they would be current. I'm yearning to see the future of open source.
Joined: Jan 08, 2007
It's great learning new things. It's great building new concepts and things.. I give all the respect to those who work on and build all the various open source products that are widely used across the world.
But in my world, projects need to get done.. I'd love to spend a month or two or three figuring out the the deep core knowledge of a framework or software package, but there are only so many hours in a day and days in a week.
And I'm not 25 years old anymore either when 100 hours a week was a good week and then I'd figure other stuff out on my own by working on my or other people's side projects.
while I continue to keep up to date and learn new things, those days of working all night and then working on my own side projects just for fun are sort of in the past for me.
I might work long hours to finish a project, but digging deep down into Linux or Windows or one of the millions of open source projects out there isn't an everyday occurrence anymore. I just don't have the time or desire to do that anymore.
Learning new things is one thing, figuring out how something works is one thing, but learning practically every new open source and commercial product that comes out every week just isn't gonna do it for me anymore.
It takes a lot of effort, brains, time, emotion, and stress when you are designing, researching, building, developing, testing, deploying, mantaining, and training new systems or reengineered systems that the idea of not only learning but figuring out to the bits and bytes on almost every new open source project that comes out has long lost it's luster for me and many people.
Maybe if i maintained a system where i played solitaire all day more than anything else, then i guess I'd have the energy to work on side projects, dig deep down into every open source that comes out.
But that isn't my world. I know people in IT that are in that world and i guess it's good for them, but i like being busy and I also like doing things outside of the computer world.
I learned a long time ago about balance and life.
Working 100+ hours a week was nice, but if you worked for one of the millions of dot com companies that crumbled, it wasn't exactly worth it in the end.
Yeah tons of things were learned about technology, programming, design, computers, and business. And I wouldn't replace that for the world, but on that same note, when a stock is worth less than the paper it is on, those long hard hours spent staring at a computer, figuring out how to get things working, how not to do things, and so on and basically having no social life or family life or working all the holidays and in the end having really nothing to show for it but....well i guess experience.
But missing out on most of my twenties I can't say was well worth it. The money would have been good if I worked at microsoft or an amazon and so on where stocks made people millionaires, but not for a crumbled dot com companies.
I like what I do, but i've learned to balance my life....
If I were in my twenties maybe I'd put all the time in to learn every bit and byte of most open source material, but at the present time, i will learn how it works, figure out how to use it within what I'm doing, get it to work, and move on.