I didn't learn any of those things in college. Maybe you just picked up the wrong things or are you just ignorant of what you really learned?
I learned a good basis in information theory, maths and software engineering.
Besides that I learned to analyze, research, work together on and write about software development processes.
I also met many people who were interested in the same things as I am, and many people who are interested in different things but still in the same field or in a field that touches my field.
And althought I learned how to work for someone else I also definitely learned how to start for myself and build something cool :)
By the way, the list of questions you pose are not really questions about Computer Science, they are about entrepreneurship and marketing.
I get the feeling you're just saying you picked the wrong major, it has nothing to do with wether college is right for you.
Anyway to answer your question, I am a recent college graduate and I think I can answer most of those questions and could even if I didn't work at a startup or read HN daily because I have a major in computer science and a minor in entrepreneurship that in my opinion taught me pretty well.
"Education is what something does to you, learning is what you do to yourself. Education is the worst you can do to someone who wants to be creative" Joichi Ito
Computer Science us a scientific career (the name is a dead tip-off), and as such you shouldn't expect to learn how to start a company if that's your field of study. There is some common ground between what's needed to be a computer scientist and what's needed to be a technical entrepreneur, but if being and entrepreneur is what you know you want to do, CS is probably not the best way to get there, specially in places where education is as expensive as it is in the US. But that's a long shot from saying it only "prepares you to work for someone else".
I will answer 5, 7, and 9. Although there are many ways to answer that are correct or good, these are what seems to work with my temperament.
5. The way I have done this is by a landing page to gauge interest and by getting a handful of customers willing to buy in a recurring fashion as a starting base before significant monetary investment on my part.
7. Get a partner in equity early and outsource or automate everything possible before hiring employees. Hire when the cost of failing to get the right employee will not harm you financially.
9. If none of the directions are obviously better or have data to show why they are better, find a way to get the data to show you which direction is best.
This article was light on details, but I thought it was important to address at least the first point, which has a fundamental misunderstanding right off the bat:
"1. Plagiarism is bad.
Wrong! If the licensing is right, copy to your heart's content. If you're not in violation of copyright, trademark, or patent, you can do whatever you want with someone else's creation. Sometimes they even give you permission. Did you find a real swell formula online? Did you know you can't copyright formulas?""
This isn't plagiarism. Plagiarism is when you copy others' work and claim that the work is yours. You are welcome to copy the entirety of a Wikipedia article verbatim and submit it, as long as you appropriately cite it. Of course, you may not get a good score, since your contribution to the work was zero, but you haven't done any unethical.
Most open source licensing requires 0 citation. If I copy your formula or recipe, I don't need to cite a thing - you don't own the copyright to your own formula. I could sell your work if I wanted to do so.
Plagiarism, as it affected my grading, was copying without attribution. Attribution is rarely required for most licensing, except where it is. These sorts of distinctions are lost in the collegiate machine.
Which open source licenses are you talking about? The most common that I can think of is GPL, which does not allow you to remove the copyright notice, although you may add yours in addition to it. The next one that comes to mind is the BSD license, which states:
"Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution and use acknowledge that the software was developed by the <organization>."
Whew. So maybe the third popular might be The Apache License, but this states:
"You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to..."
And so on. I am unaware of, but would be interested in knowing about, licenses that would allow you to verbatim take code and also claim it as your own work.
I'm almost always using binaries or javascript libraries, in which I need not do anything but copy and paste files and include them in my projects to be within the letter of those licenses.
Plenty of people copy code straight off of blogs, which due to the DMCA are given implied copyright. Stackoverflow, also, requires attribution under the CC license, but nobody attributes stackoverflow when applying fixes to their problems.
If I include an MIT licensed JS file, I can replace functions willy nilly, or rewrite parts of the code. If it's LGPL3 or GPL, I can't.
Licensing is more nuanced than you're describing, but pragmatically I never need to cite anything. The most I need to deal with licensing is handling proprietary code (unlicensed github code, for example), and GPL/LGPL.
When you "include an MIT licensed JS file", as you mention doing, you leave its copyright/license notice intact in the source right? That's the acknowledgement required. You didn't change the copyright to have your own name on it and erase the original.
Here is the WTFPL, which is my favorite license as it works as well as public domain, but, being a license, deals with the concerns of people who believe public domain is a legal fiction in certain jurisdictions.
This is the only total freedom license I am aware of, and allows claiming others work as your own if you wish.
I agree the OP was confused about the word plagiarism, but from his follow up it seems clear he meant not giving acknowledgement, as opposed to falsely taking credit. Regarding non-acknowledgement and non-advertising clause licenses, the zlib is perhaps the most popular and is a really nice license. It has an anti-plagiarism clause that you can't falsely claim it is yours, but you are not required to acknowledge ownership in binary distributions. (It is appreciated but not required.)
There is also the anti-copyright notice, which varies in form, but is an explicit public domain grant required by the Berne Convention. Typically they do not require acknowledgment either.
What I wonder is how far copyright protection goes, specifically when AI algorithms are involved. Suppose you "copy" a recipe + description (or a book for that matter) in the following way :
1) you create markov chains using a large number of cookbook texts
2) you create the markov chain for a specific recipe's description and go down alternate high-probability paths in an effort to creatively change the wording without changing the content (maybe this is comparable to the way a human would if he tried the recipe and then wrote down "how he did it")
3) you republish the result
Did you violate copyright or not ?
The reason I ask is that this is often used as an end-run around patents and copyrights. What most speech recognition programs do these days is preprocess the sound + feed into neural network + get output. (and while most "pattern recognition" algorithms for non-visual things seem to have a love affair with support-vector machines, temporal neural networks are certainly advancing there too).
Now if you analyse what those neural networks do there's 2 types of things
1) ~40% effectively is unrolled loops of (mostly) patented algorithms
2) 60% you effectively don't recognize
(to be fair it takes hours of seeing the network operate before you realize anything it's doing)
Clearly this is legal, in cases human implementations of the exact same algorithms wouldn't be, nicely sidestepping the problem of patented algorithms. And as a bonus you don't really have to know the subject matter (e.g. you can write a pretty good voice recognizer without 8 years experience as a linguist. Or you can write them for languages you don't actually know). And as a bonus, academics are miles ahead of the private sector where it comes to machine learning algorithms, so extremely useful thing are effectively free-for-all.
Of course this is also what humans do. If you look at neural networks, they can only do what they've "seen" happen before, or they can combine various things they've seen before. But they are utterly incapable of coming up with original work. So I don't think humans are any different to machines when it comes to producing original work based on combinations of previous works. This doesn't mean the thing that was copied was itself copyrighted, you can write about your own life, for example, or about nature, or ... but we'd call that original, when (in a strict mathematical sense) it's not.
So clearly we've de-facto accepted in our society that machine-processed works at some point start constituting original work.
Any Ethics course as required for ABET accreditation would have taught you that copyright is substantial in software. Most open source projects require the retention of the copyright notice at the top of every file.
As far as I know the two most popular licenses are MIT:
"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software"
And GPL:
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice;
"Redistribution of source code must retain the above copyright notice ..."
Or how about the Apache license:
"You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work,"
Maybe the MIT license:
"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software."
If you copied a couple of functions for a class the uni would have big problems if you provided no attribution; though the license does not require it.
I think you may be confused as to how OSS licenses work, and to a larger extend the OSS community. I'd recommend you read "The Cathedral and the Bazaar". On the specifics of license, I guess good ol' Wikipedia works just fine: http://en.wikipedia.org/wiki/Open_source_license.
Now your teachers didn't focus on entrepreneurship because statistically speaking, most people who go through college (or any kind of education) will work for somebody else.
I'd add to this that school is, in most cases, not about learning practical skills. It is about learning how to learn, developing mental tools and acquiring a knowledge foundation that will help you work with others.
Debatable approach to education, maybe. But beware of thinking that everybody want or should be prepared for the career path you seem to be in favor of.
Apparently I went to the wrong college. Note, I still _am_ in college, but nonetheless part of our learning was independent readiness. In my first non-basic programming class, my professor taught us alongside our Operating System class how he built computer kits and sold them. We were taught legalese in the field, and the power of performance.
My school is very small, and our department is even smaller. We have very few students pass through our department each year (around 3), but we're pushed to be our own innovator in the world. While a lot of our schooling does involve how to work within a company, we learn just as much about being independent.
I've heard great things about the Stanford school of business, and the entrepreneurship program specifically, but it was outside my purview and budget.
I'm certain there are outliers to what I wrote, but I feel the majority of schools are just creating employees, and that's....sad.
The small class sizes are surely a boon to be had. I have a good direct relationship with all of my professors, and they monitor my progress closely. If I ever have issues, I'm meet personally with them to straighten them out.
But to be perfectly clear, the best thing I could ever ask for is the ability to see my professors work live. One of my professors was a high-up manager for a very large insurance company, and the other was a good friend of Edsger Dijkstra, among others. One is an immense source of advice in practical software engineering, and the other can usually teach me a pattern to solve a problem in ten-times less code and more efficiently.
And, due to the small size of my school, my semester-ly tuition is less than $2k. It might not look like much on a resume, but I've hit the jackpot of schools.
This is ridiculous. Going to college certainly shouldn't be taken lightly and if you don't have an interest in broadening your mind and just want to make money, then you'd be better off educating yourself or going to a trade school. But for people that genuinely have a love of learning and want to discipline their mind in ways they haven't thought (not to mention meet interesting and intelligent people inside and outside of their career), college can be a worthy investment.
What a joke. This is a circlejerk for the anti-college crowd.
I'm sorry your college experience was such that one of the biggest things you learned was that 'plagiarism is bad.'
College is a place for exploration. Join a fraternity, join a club, learn a new language, take a class you won't use after graduation. Get drunk and blow off classes because there's nothing better than going to the campus diner at 3am and having conversations with people you'll never meet again. Meet a professor and get coffee with him, and talk with him about everything except the course material. Go to a game. Meet new people. Learn new things.
The list of ten things at the end is laughable. Half of them are standard syllabus material for a BBA (1, 2, 4, 8, 9). And do you really want to learn how to answer "How to move Mount Fuji" in a college course? Do you understand that the whole point of that question is to test someone's critical thinking and approach to problem solving, not because there is a textbook answer?
Maybe all you learned in college was about learning to work for someone else -- that's probably because that's all you did. And that's your fault.
I'm assuming this meant in the sense of "why can't I just copy a binary tree implementation from the internet and turn it in", since every advanced course I took in college encouraged the use of libraries where appropriate (to the point of linking to open source libraries on the course website). The answer to the former question should be painfully obvious... you're learning to be a creator of things, not a user of things. That would be like taking an operating systems course and saying, "See, I downloaded Windows! Where is my A?"
2. Performance Matters
Tell this to Digg (one small example in a sea of them). Kevin Rose has said several times that he regretted hiring so many "get things done" PHP programmers that had no in-depth algorithm knowledge because as soon as the site had to scale none of them had knowledge outside of their PHP sandbox.
As far as the difference between copyright, trademark, and patents, ABET requires a Capstone/'Ethics' course that includes these very topics. I actually did a research report on software patents during my undergrad which included a presentation on how software patents have affected the software industry. As far as planning a product and tracking its development, ABET also requires an 'Intro to Software Engineering' course which is, you guessed it, planning and building a product from first principles.
My school was ABET accredited, so I guess ABET is crap. I don't care at all about ethics - you can't teach that in a semester of college.
I care about the law, and what I can and can't sell without being able to win the lawsuit when I'm sued.
I've never had to build an operating system, and I never will. Performance problems likely mean you have product success, at which point you can figure out solutions to your problem.
You don't get facebook scale by planning it up front.
The name of the class will vary, I just mentioned Ethics because that seems to be what a lot of schools call it. Mine was "Social Implications of Computing"... but again, it goes into (very specifically) the law regarding copyright and patents. Your college can be ABET accredited, but that doesn't mean your degree program was.
I've never had to build a priority queue. The language I've used has always had a library to provide that functionality for the purposes I needed. However, knowing what a priority queue is, how it works, and when it is appropriate to use (and those pesky big O performance implications) were all taught in an algorithms course (and are a quick CLRS reference away).
On performance problems, that is an incredibly hand wavy response. You seem to be assuming product success is a $50 million Series A round and enough buzz to make people want to work for you. And what are you going to do with that money? Probably hire someone who has an understanding of algorithms and operating systems.
"Pedigree Matters" as an untruth: I wish this were the case. Too many entrepreneurs I know are only entrepreneurs because they have the support system of comfortably wealthy families and the professional network gained at elite schools and fellowships.
Would love to hear more about entrepreneurs who live on the edge and try to start a business while also needing to make rent and student loan payments.
It sucks. A lot. I planned on dropping out two years in and ended up having to go back to school because my parents couldn't afford the loan payments at the time - and they wouldn't have to pay while I was in school (which they wanted me to do anyway). Went back and did client work to keep the lights on.
One of those articles where a lot of ideas have been put down that aren't exactly "true" so much as it would be convenient if they were, to better justify the path the writer has decided to take in their life.
Seems like you're just trying to get attention with this post. The title is catchy and the content pointless but it did remind me of a good quote from Joichi Ito "Education is what something does to you, learning is what you do to yourself. Education is the worst you can do to someone who wants to be creative"
Like most comments here I would have to say I completely disagree. In fact I learnt very little of the skills needed to work in a corporation. Testing, build automation, source control, working on large projects, working with poorly documented legacy code. All skills necessary to survive in corporate software development that were never touched or only very lightly grazed.
If you want to go to college to learn to be an entrepreneur, get a degree in entrepreneurship. Colleges should teach the core competencies of your degree that can then be applied in any number of ways.
Where do you go to learn not to write a rant insulting the "stooges" you presumably hope to one day be hiring yourself?
I would like to add more than just a snarky comment like that, but the post is high on bitterness and low on content. It's a curious flip side to the "college doesn't teach people how to work on a team in a company, it just teaches a bunch of theory nonsense" cliche, though. And I think both of those views are way off the mark with the disregard for theory. I'd rather work with (or start a company with) the guy who knows what his code does, and why it does it, any day over the guy who is more proficient at a certain set of tools, or knows more about the details of starting a business.
As someone who dropped out of college to join a "startup," I can reliably say that I didn't have enough information at the time to make an informed decision about what I did or didn't need to know.
I'm happy with how my career has gone since then, but it would be absolute hubris to declare that it was due to my astounding foresight or careful assessment. I was a) motivated b) lucky and c) relatively free of responsibility.
Maybe I've had a more skewed career than most, but I've spent my career working with complex and busy systems. I never had a "freelance web developer" period. I've never just spat out web app after web app for clients. To take your specific example, I missed out on a chunk of algorithmic complexity in college (which I have since picked up) that sheds light on real world problems that might otherwise seem confusing or unconnected.
I understand your frustration, believe me, but be careful not to mix up the knowledge with the institution, or the message with the messenger, as it were.
I understand what you are trying to say, but this article is silly from many points of view. I don't want to answer with wise-ass comments like "you went to the wrong college" and such, so I'll give you a couple of arguments:
- College isn't only CS.
- Pure (computer or not) science isn't 'working for someone'. It's 'learning how to do (computer) science correctly', hopefully.
- Plagiarism is not what you are saying, which is superficial. Citing a paper and using previous work in academia isn't plagiarism, for example. Copying someone else's paper and putting your name on it is. Which IS bad. I can't take a linux distribution and tell the world I wrote it. But I can use it and (depending on the license) sell it. Or make something else with it and add my name on it.
- Performance matters or not depending on the users, obviously. But if you don't know that your algorithms are bad, or if you don't know how to fix them when you hit scaling problems, then what do you do with all your users? Sure, you can hire someone who went to college or learned that somewhere else, but then you'd be supporting the idea that there is no need to be technical to be founders, which is partly true but if google and others taught us something is that the technical founders tend to be able to understand some problems better (and solve them better).
- Learning the concepts behind the list you wrote isn't incompatible with college. If you take some business classes you can learn a lot of it. No one is forcing you not to take those classes or a major in CS and a minor in Economics.
- From college you don't get only the classes, but also the interaction with a lot of smart people, diversity, challenge and many other things. It changes you, hopefully in better.
- Getting excited about being entrepreneurs doesn't always mean the sooner the better. It depends if one is ready. Like with startup ideas, arriving too early may be as bad as arriving late. So, if you quit college for the sake of being an entrepreneur when you are 19 and then you fail, you lost the chance of getting 'more' ready through college.
- Same applies for grad school. You might not need to go to grad school to do anything. But a lot of people change the way they see the world going to grad school, which, if it made you wiser, could be a good quality to have when founding a startup (plus the extra knowledge).
All this to say that if you think that you can say "all this does is this" I think you might want to rethink a little bit, since it's rare that such absolutists ideas about things so controversial are ever correct.
"So, if you quit college for the sake of being an entrepreneur when you are 19 and then you fail, you lost the chance of getting 'more' ready through college."
I hear this a lot (frequently even about passing on college for lucrative, if short-term, opportunities), but I don't get it. This isn't amateur athletics where you have to worry about losing your eligibility and wouldn't be able to get in without an athletic scholarship. You could easily go back to college at age 21 after a year or two of trying to start a business.
Oh, I agree with you. Since I wrote a lot I didn't want to be so detailed, but basically I meant that I hear a lot of 'college is useless, I can learn by starting a company', and I disagree about the fact that you are learning the same things.
Of course you certainly learn a lot by starting a company, it's a matter of making sure you are choosing that over college for the right reasons, and not 'only' because you feel like you will be the next twitter in a year, which most likely won't happen.
I think that there might be a more natural order in going to school first, then starting a business. But it's not necessarily the unique or the right way. It's what I think.
Ultimately it depends on the person. It's just hard to judge well about college when you haven't really gone through college, and I think that starting too early could be worse than starting a couple of years later. Just my opinion.
It's not like there won't be any opportunities after college. So I just feel that I would expect a strong reason to feel like I can't wait anymore. But if the reason is that one thinks that in college you don't learn anything but working for someone, then I think that's the wrong reason. That's all.
You can go to college any time, but it's damn nice to be the same age as everyone else there. I'd argue rather that unless you've got a really solid plan, given the choice you should go to college first. You can start a business any time, the only thing you'll miss out on by waiting 4 years is the "Check out this 19-year-old entrepreneur" techcrunch articles.
I fear that colleges condition students to be bad at entrepreneurship and teach actively harmful lessons.
Of course this isn't true of all schools, but I can't say for certain I know anyone who came out of college more prepared for the world and business than they went in. More prepared for a job, surely.
I'm a senior a very theoretical university and my friends in the CS department often complain:
- "Why should I learn all these sort algorithms? Let some grey beard figure out which one is best for me and wrap it up in sort()"
- "Why do I have to take all these required classes? Why do I have to do a semester of foreign language or a physic pre-requisite?"
- "Why do I have make an entire operating system in this class? When in the real world would I ever need that?"
etc.
Bullshit! It's good to be "T" shaped - studying a very technical area like honest-to-god computer science trains you to dive deep, to be able to confront a problem and approach it analytically. All the prerequisites have given you a stepping stone into understanding, or at least appreciating, other areas. These are very useful skills to have and they certainly make you a more interesting person.
Sure, there are plenty things left out that would be useful for entrepreneurship. Half of my friends in the CS department haven't taken the initiative to learn "real world" development yet with all the shiny tools and most (myself included) have no idea what it takes to run a business. But to say college only "prepares you for the life of a corporate stooge" is a mistake.
Because everybody who studies CS wants to be an entrepreneur? Of course you don't need a degree in Computer Science to develop a technology startup. Web design is a trade skill and should be excluded entirely from an academic curriculum. Sadly, some universities are being pressured into offering it due to increased demand from an influx of wannabe sellouts. I decided to pursue a college degree because I'm interested in solving challenging engineering problems that your two-bit startup and myopic vision couldn't possibly begin to encompass. So, Mr. Kendall, you have it rather backwards: it's not universities that are in the wrong but rather students who come in with maligned expectations and the determination to under-utilize their academic training.
I've thought about this question for a while, if I would recommend college or not. Ultimately I've come to realize it has loads more to do with the personality of the individual than going to college or not. Some people are fit to be entrepreneurs, others are not. Some people are good at taking orders, others at giving them. It's not completely black and white, but generally a person leans one way or the other. The given person can change to the other side, though I would say that is less common.
I started school when I was 23, mainly due to pressure from my parents. I was working full time as a VoIP tech however my mom kept pressuring me to get my degree.
I'm 29 now, have worked full time until I was 26, and started my own web development firm at 27 (hired my first two full time employees in 2012).
I'm a few months away from being done with school, and I can honestly say it has been the most worthless investment in my life. Everything I have learned in my positions as a IT Admin to Dev has been on the job.
School has just been a lot of wasted time doing fill in the blank work that I could have spent learning things or bettering my business.
Surprise! College is supposed to teach you to be proficient at what most of their students end up doing: working at the corporate level. Whether or not you have the desire to go and do your own thing is really up to you.
At one time I was extremely dissatisfied with my college's cookie cutter curriculum. But I realized that this setup is built to get you in the job market. It was up to me to do the extras.
I think it really depends on what college and what program in that college you go to.
The vast majority of my professors were genuinely interested in developing their students as independent thinkers capable of much more than corporate drudgery.
Perhaps the business-end of the university is focused on getting you into the job market (since that's how many people want to evaluate their college experience and investment and hey, somebody's gotta pay the bills). But if you are in a more academically inclined program, I think you'll find that the pursuit of knowledge and a joy of learning is what matters most.
True. In my experience, the professors really worked hard for the development who had the desire to go beyond the required material. It's just that the average student will never think about going beyond what is required for the class.
I prefer to take a different perspective: college didn't fail you, you failed at going to college.
College is a place to gain knowledge from those that have more than you. If you see it as anything else (especially anything malicious) then you're looking at it from the wrong angle and coming in with the wrong attitude. A motivated person can gain a lot of insight and knowledge from even the shittiest of situations.
College classes are a completely valid way to learn things. If you think that you're entrepreneurial dreams will be fulfilled if you drop out, then go for it. Some people don't learn that way, and that's just as acceptable. There are problems with higher education, and some places more so than others. But don't be so vain as to denounce the entire institution of higher education from a single anecdotal data point.
60 comments
[ 2.9 ms ] story [ 120 ms ] threadI learned a good basis in information theory, maths and software engineering.
Besides that I learned to analyze, research, work together on and write about software development processes.
I also met many people who were interested in the same things as I am, and many people who are interested in different things but still in the same field or in a field that touches my field.
And althought I learned how to work for someone else I also definitely learned how to start for myself and build something cool :)
I get the feeling you're just saying you picked the wrong major, it has nothing to do with wether college is right for you.
Anyway to answer your question, I am a recent college graduate and I think I can answer most of those questions and could even if I didn't work at a startup or read HN daily because I have a major in computer science and a minor in entrepreneurship that in my opinion taught me pretty well.
5. The way I have done this is by a landing page to gauge interest and by getting a handful of customers willing to buy in a recurring fashion as a starting base before significant monetary investment on my part.
7. Get a partner in equity early and outsource or automate everything possible before hiring employees. Hire when the cost of failing to get the right employee will not harm you financially.
9. If none of the directions are obviously better or have data to show why they are better, find a way to get the data to show you which direction is best.
Just my 2 cents.
"1. Plagiarism is bad.
Wrong! If the licensing is right, copy to your heart's content. If you're not in violation of copyright, trademark, or patent, you can do whatever you want with someone else's creation. Sometimes they even give you permission. Did you find a real swell formula online? Did you know you can't copyright formulas?""
This isn't plagiarism. Plagiarism is when you copy others' work and claim that the work is yours. You are welcome to copy the entirety of a Wikipedia article verbatim and submit it, as long as you appropriately cite it. Of course, you may not get a good score, since your contribution to the work was zero, but you haven't done any unethical.
This is true both in academia and industry.
Plagiarism, as it affected my grading, was copying without attribution. Attribution is rarely required for most licensing, except where it is. These sorts of distinctions are lost in the collegiate machine.
"Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution and use acknowledge that the software was developed by the <organization>."
Whew. So maybe the third popular might be The Apache License, but this states:
"You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to..."
And so on. I am unaware of, but would be interested in knowing about, licenses that would allow you to verbatim take code and also claim it as your own work.
Plenty of people copy code straight off of blogs, which due to the DMCA are given implied copyright. Stackoverflow, also, requires attribution under the CC license, but nobody attributes stackoverflow when applying fixes to their problems.
If I include an MIT licensed JS file, I can replace functions willy nilly, or rewrite parts of the code. If it's LGPL3 or GPL, I can't.
Licensing is more nuanced than you're describing, but pragmatically I never need to cite anything. The most I need to deal with licensing is handling proprietary code (unlicensed github code, for example), and GPL/LGPL.
http://en.wikipedia.org/wiki/WTFPL
This is the only total freedom license I am aware of, and allows claiming others work as your own if you wish.
I agree the OP was confused about the word plagiarism, but from his follow up it seems clear he meant not giving acknowledgement, as opposed to falsely taking credit. Regarding non-acknowledgement and non-advertising clause licenses, the zlib is perhaps the most popular and is a really nice license. It has an anti-plagiarism clause that you can't falsely claim it is yours, but you are not required to acknowledge ownership in binary distributions. (It is appreciated but not required.)
http://en.wikipedia.org/wiki/Zlib_license
There is also the anti-copyright notice, which varies in form, but is an explicit public domain grant required by the Berne Convention. Typically they do not require acknowledgment either.
http://en.wikipedia.org/wiki/Anti-copyright_notice
1) you create markov chains using a large number of cookbook texts
2) you create the markov chain for a specific recipe's description and go down alternate high-probability paths in an effort to creatively change the wording without changing the content (maybe this is comparable to the way a human would if he tried the recipe and then wrote down "how he did it")
3) you republish the result
Did you violate copyright or not ?
The reason I ask is that this is often used as an end-run around patents and copyrights. What most speech recognition programs do these days is preprocess the sound + feed into neural network + get output. (and while most "pattern recognition" algorithms for non-visual things seem to have a love affair with support-vector machines, temporal neural networks are certainly advancing there too).
Now if you analyse what those neural networks do there's 2 types of things 1) ~40% effectively is unrolled loops of (mostly) patented algorithms 2) 60% you effectively don't recognize (to be fair it takes hours of seeing the network operate before you realize anything it's doing)
Clearly this is legal, in cases human implementations of the exact same algorithms wouldn't be, nicely sidestepping the problem of patented algorithms. And as a bonus you don't really have to know the subject matter (e.g. you can write a pretty good voice recognizer without 8 years experience as a linguist. Or you can write them for languages you don't actually know). And as a bonus, academics are miles ahead of the private sector where it comes to machine learning algorithms, so extremely useful thing are effectively free-for-all.
Of course this is also what humans do. If you look at neural networks, they can only do what they've "seen" happen before, or they can combine various things they've seen before. But they are utterly incapable of coming up with original work. So I don't think humans are any different to machines when it comes to producing original work based on combinations of previous works. This doesn't mean the thing that was copied was itself copyrighted, you can write about your own life, for example, or about nature, or ... but we'd call that original, when (in a strict mathematical sense) it's not.
So clearly we've de-facto accepted in our society that machine-processed works at some point start constituting original work.
Do we have any data what point that is ?
"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software"
And GPL:
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice;
"Redistribution of source code must retain the above copyright notice ..."
Or how about the Apache license:
"You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work,"
Maybe the MIT license:
"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software."
and so forth.
"substantial license"
If you copied a couple of functions for a class the uni would have big problems if you provided no attribution; though the license does not require it.
Now your teachers didn't focus on entrepreneurship because statistically speaking, most people who go through college (or any kind of education) will work for somebody else.
I'd add to this that school is, in most cases, not about learning practical skills. It is about learning how to learn, developing mental tools and acquiring a knowledge foundation that will help you work with others.
Debatable approach to education, maybe. But beware of thinking that everybody want or should be prepared for the career path you seem to be in favor of.
My school is very small, and our department is even smaller. We have very few students pass through our department each year (around 3), but we're pushed to be our own innovator in the world. While a lot of our schooling does involve how to work within a company, we learn just as much about being independent.
I'm certain there are outliers to what I wrote, but I feel the majority of schools are just creating employees, and that's....sad.
But to be perfectly clear, the best thing I could ever ask for is the ability to see my professors work live. One of my professors was a high-up manager for a very large insurance company, and the other was a good friend of Edsger Dijkstra, among others. One is an immense source of advice in practical software engineering, and the other can usually teach me a pattern to solve a problem in ten-times less code and more efficiently.
And, due to the small size of my school, my semester-ly tuition is less than $2k. It might not look like much on a resume, but I've hit the jackpot of schools.
I'm sorry your college experience was such that one of the biggest things you learned was that 'plagiarism is bad.'
College is a place for exploration. Join a fraternity, join a club, learn a new language, take a class you won't use after graduation. Get drunk and blow off classes because there's nothing better than going to the campus diner at 3am and having conversations with people you'll never meet again. Meet a professor and get coffee with him, and talk with him about everything except the course material. Go to a game. Meet new people. Learn new things.
The list of ten things at the end is laughable. Half of them are standard syllabus material for a BBA (1, 2, 4, 8, 9). And do you really want to learn how to answer "How to move Mount Fuji" in a college course? Do you understand that the whole point of that question is to test someone's critical thinking and approach to problem solving, not because there is a textbook answer?
Maybe all you learned in college was about learning to work for someone else -- that's probably because that's all you did. And that's your fault.
I'm assuming this meant in the sense of "why can't I just copy a binary tree implementation from the internet and turn it in", since every advanced course I took in college encouraged the use of libraries where appropriate (to the point of linking to open source libraries on the course website). The answer to the former question should be painfully obvious... you're learning to be a creator of things, not a user of things. That would be like taking an operating systems course and saying, "See, I downloaded Windows! Where is my A?"
2. Performance Matters
Tell this to Digg (one small example in a sea of them). Kevin Rose has said several times that he regretted hiring so many "get things done" PHP programmers that had no in-depth algorithm knowledge because as soon as the site had to scale none of them had knowledge outside of their PHP sandbox.
As far as the difference between copyright, trademark, and patents, ABET requires a Capstone/'Ethics' course that includes these very topics. I actually did a research report on software patents during my undergrad which included a presentation on how software patents have affected the software industry. As far as planning a product and tracking its development, ABET also requires an 'Intro to Software Engineering' course which is, you guessed it, planning and building a product from first principles.
I care about the law, and what I can and can't sell without being able to win the lawsuit when I'm sued.
I've never had to build an operating system, and I never will. Performance problems likely mean you have product success, at which point you can figure out solutions to your problem.
You don't get facebook scale by planning it up front.
I've never had to build a priority queue. The language I've used has always had a library to provide that functionality for the purposes I needed. However, knowing what a priority queue is, how it works, and when it is appropriate to use (and those pesky big O performance implications) were all taught in an algorithms course (and are a quick CLRS reference away).
On performance problems, that is an incredibly hand wavy response. You seem to be assuming product success is a $50 million Series A round and enough buzz to make people want to work for you. And what are you going to do with that money? Probably hire someone who has an understanding of algorithms and operating systems.
Would love to hear more about entrepreneurs who live on the edge and try to start a business while also needing to make rent and student loan payments.
If you want to go to college to learn to be an entrepreneur, get a degree in entrepreneurship. Colleges should teach the core competencies of your degree that can then be applied in any number of ways.
[Edited for spelling]
I would like to add more than just a snarky comment like that, but the post is high on bitterness and low on content. It's a curious flip side to the "college doesn't teach people how to work on a team in a company, it just teaches a bunch of theory nonsense" cliche, though. And I think both of those views are way off the mark with the disregard for theory. I'd rather work with (or start a company with) the guy who knows what his code does, and why it does it, any day over the guy who is more proficient at a certain set of tools, or knows more about the details of starting a business.
I'm happy with how my career has gone since then, but it would be absolute hubris to declare that it was due to my astounding foresight or careful assessment. I was a) motivated b) lucky and c) relatively free of responsibility.
Maybe I've had a more skewed career than most, but I've spent my career working with complex and busy systems. I never had a "freelance web developer" period. I've never just spat out web app after web app for clients. To take your specific example, I missed out on a chunk of algorithmic complexity in college (which I have since picked up) that sheds light on real world problems that might otherwise seem confusing or unconnected.
I understand your frustration, believe me, but be careful not to mix up the knowledge with the institution, or the message with the messenger, as it were.
"An Alternative, Practical Education"?
- College isn't only CS.
- Pure (computer or not) science isn't 'working for someone'. It's 'learning how to do (computer) science correctly', hopefully.
- Plagiarism is not what you are saying, which is superficial. Citing a paper and using previous work in academia isn't plagiarism, for example. Copying someone else's paper and putting your name on it is. Which IS bad. I can't take a linux distribution and tell the world I wrote it. But I can use it and (depending on the license) sell it. Or make something else with it and add my name on it.
- Performance matters or not depending on the users, obviously. But if you don't know that your algorithms are bad, or if you don't know how to fix them when you hit scaling problems, then what do you do with all your users? Sure, you can hire someone who went to college or learned that somewhere else, but then you'd be supporting the idea that there is no need to be technical to be founders, which is partly true but if google and others taught us something is that the technical founders tend to be able to understand some problems better (and solve them better).
- Learning the concepts behind the list you wrote isn't incompatible with college. If you take some business classes you can learn a lot of it. No one is forcing you not to take those classes or a major in CS and a minor in Economics.
- From college you don't get only the classes, but also the interaction with a lot of smart people, diversity, challenge and many other things. It changes you, hopefully in better.
- Getting excited about being entrepreneurs doesn't always mean the sooner the better. It depends if one is ready. Like with startup ideas, arriving too early may be as bad as arriving late. So, if you quit college for the sake of being an entrepreneur when you are 19 and then you fail, you lost the chance of getting 'more' ready through college.
- Same applies for grad school. You might not need to go to grad school to do anything. But a lot of people change the way they see the world going to grad school, which, if it made you wiser, could be a good quality to have when founding a startup (plus the extra knowledge).
All this to say that if you think that you can say "all this does is this" I think you might want to rethink a little bit, since it's rare that such absolutists ideas about things so controversial are ever correct.
I hear this a lot (frequently even about passing on college for lucrative, if short-term, opportunities), but I don't get it. This isn't amateur athletics where you have to worry about losing your eligibility and wouldn't be able to get in without an athletic scholarship. You could easily go back to college at age 21 after a year or two of trying to start a business.
Of course you certainly learn a lot by starting a company, it's a matter of making sure you are choosing that over college for the right reasons, and not 'only' because you feel like you will be the next twitter in a year, which most likely won't happen.
I think that there might be a more natural order in going to school first, then starting a business. But it's not necessarily the unique or the right way. It's what I think.
Ultimately it depends on the person. It's just hard to judge well about college when you haven't really gone through college, and I think that starting too early could be worse than starting a couple of years later. Just my opinion.
It's not like there won't be any opportunities after college. So I just feel that I would expect a strong reason to feel like I can't wait anymore. But if the reason is that one thinks that in college you don't learn anything but working for someone, then I think that's the wrong reason. That's all.
Of course this isn't true of all schools, but I can't say for certain I know anyone who came out of college more prepared for the world and business than they went in. More prepared for a job, surely.
I'm a senior a very theoretical university and my friends in the CS department often complain:
- "Why should I learn all these sort algorithms? Let some grey beard figure out which one is best for me and wrap it up in sort()"
- "Why do I have to take all these required classes? Why do I have to do a semester of foreign language or a physic pre-requisite?"
- "Why do I have make an entire operating system in this class? When in the real world would I ever need that?" etc.
Bullshit! It's good to be "T" shaped - studying a very technical area like honest-to-god computer science trains you to dive deep, to be able to confront a problem and approach it analytically. All the prerequisites have given you a stepping stone into understanding, or at least appreciating, other areas. These are very useful skills to have and they certainly make you a more interesting person.
Sure, there are plenty things left out that would be useful for entrepreneurship. Half of my friends in the CS department haven't taken the initiative to learn "real world" development yet with all the shiny tools and most (myself included) have no idea what it takes to run a business. But to say college only "prepares you for the life of a corporate stooge" is a mistake.
I'm 29 now, have worked full time until I was 26, and started my own web development firm at 27 (hired my first two full time employees in 2012).
I'm a few months away from being done with school, and I can honestly say it has been the most worthless investment in my life. Everything I have learned in my positions as a IT Admin to Dev has been on the job.
School has just been a lot of wasted time doing fill in the blank work that I could have spent learning things or bettering my business.
At one time I was extremely dissatisfied with my college's cookie cutter curriculum. But I realized that this setup is built to get you in the job market. It was up to me to do the extras.
The vast majority of my professors were genuinely interested in developing their students as independent thinkers capable of much more than corporate drudgery.
Perhaps the business-end of the university is focused on getting you into the job market (since that's how many people want to evaluate their college experience and investment and hey, somebody's gotta pay the bills). But if you are in a more academically inclined program, I think you'll find that the pursuit of knowledge and a joy of learning is what matters most.
College is a place to gain knowledge from those that have more than you. If you see it as anything else (especially anything malicious) then you're looking at it from the wrong angle and coming in with the wrong attitude. A motivated person can gain a lot of insight and knowledge from even the shittiest of situations.
College classes are a completely valid way to learn things. If you think that you're entrepreneurial dreams will be fulfilled if you drop out, then go for it. Some people don't learn that way, and that's just as acceptable. There are problems with higher education, and some places more so than others. But don't be so vain as to denounce the entire institution of higher education from a single anecdotal data point.