| ||
|
This community works best when people use their real names. Please register for a free account. Links:
» Joel on Software discussion Movie:"Make Better Software" is a 6 movie course designed to help you as you grow from a micro-ISV to a large software company. Moderators:
Eric Sink
Bob Walsh |
I would appricate advice from those experienced developers. I like to minimize my time in school either by studing at home or in college. what can I do to become a good developer in shortest time? I'd love to hear your story too.
Chris Dean Friday, November 24, 2006
Yes! Er No! I mean both. I know many excellent developers that either don't have a degree or don't have a degree in CS or related discipline (such as Math or Engineering), that are very good. But I know for a fact that they have a harder time either getting a job or getting promoted once they have a job because of the NO degree stigma. At my current job I make quite a bit more $$$ than a co worker who has been at the company longer because I have a degree and he does not. I'm not saying that's right, I'm just saying that's the way it is where I work. At my current job they place a very high value on a college degree. So much so they will pay 100% of tuition and books for anyone taking classes towards a Bachelors, Masters or PhD and then give $10,000 in stock when you get your degree. But I digress. Bottom line is you can "Make it" in development without a degree but it will probably be easier to "Make It" with one.
No. If you are writing your own software and selling it on the Internet. Yes. It definately helps if you are working for a company, especially when you are starting out. You might want to think about doing a software engineering course (emphasis on building real world software systems) rather than a CS course (emphasis on elegant solutions to toy problems)*. Alternatively join an open source project and then use that on your CV. *Obviously I'm generalising wildly here. I'm sure there is quite a bit of overlaps between SE and CS courses at different institutions.
Pedantically answering the question in your subject line: No. However, if you want to get a job, you should know that lots of companies assume a statistical correlation between a university degree and good development skills.
No, I don't have a degree and I work as a contractor in the UK for a good wage. Make up for the lack of a degree by being knowledgeable (read up on many books!), having passion for the job and working very hard and you'll excel.
Simon Tamman Friday, November 24, 2006
It depends upon what type of business you want to work for, and in what capacity. If you target large companies and full time employee positions, the HR departments will enforce all applicable company policy against hiring non degreed people into "professional" roles. Smaller companies may not care so much, just depending upon how the ownership values and perceives the college degree. IE, a small company that is owned by a salesman will care much less about this than a smaller consultancy that is run, for instance, by a professional engineer. One way to break away from this rote categorization is to work as a contractor. I have witnessed high school degreed programmers surpass adjacent university schooled employees, by coming in as contractors. However, contracting has changed in recent years to the extent that clients want to manage and do the gatekeeping functions against contractors very similarly to the way in which they select employees. If you're going to truly work for yourself as an ISV, then - of course it doesn't matter.
Thank you very much, I appreciate your comments. I gather that if I want to work for someone else it will be helpful to get a degree but I can get the job done just as good either by myself or through community colleges instead of University.
Chris Dean Friday, November 24, 2006
Get the degree. Unless you know you'll be able to support yourself for the rest of your life you're best off going to university. You never know what life holds, you might find yourself not doing development forever. (You might even find something more interesting in your elective courses). You'll differentiate yourself from all the slackers who finished high school and said "that's it". You'll also gain valuable life experience in self-motivation, time management and people relations. And many shops, mine included, will NOT hire someone without a degree. (I don't care if we're missing out on some really good non-credentialed people, statistically I improve my odds of getting good people dramatically by including a degree as part of the qualifications.)
Perl Solution Friday, November 24, 2006
I wouldn't bother. I spent the last few weeks trying to hire someone and there has been an inverse correlation between having a degree and actually being able to program.
Anon Friday, November 24, 2006
University was so much fun. Great environment to meet smart interesting people, build your social skills and mingle with the opposite sex.
I wish I never left school Friday, November 24, 2006
I was about to answer this question then I remembered something. Back in college a friend was talking about his father who was an electrical engineer. He didn't have a degree, but had started out as a technician (I think he learned electronics in the military), learned what he could and over the years finally achieved the title of Engineer in his company, doing actual design work. My friend concluded by saying "...but you could do that back then; these days you need a degree to even get in the door." That conversation was almost 20 years ago (yeah, I'm old, get over it :-) So I think we're seeing the slow maturing of an industry. Just as you could once rise through the ranks to become an engineer, then business began to require degrees as they became more common, so it's happening with programmers. Pretty soon, you'll need a degree in CS or SE to be taken seriously just about anywhere. That day may come sooner than you think, so get your degree.
Paul Graham writes about this sort of question: http://www.paulgraham.com/mit.html It's a personal decision you need to make. My perspective is, why would anyone want to miss out on student years - they were such fun and you may meet people who will do startups with you. Also, head knowledge isn't all that you need. There is no shortcut to gaining experience.
"I can get the job done just as good either by myself or through community colleges instead of University." If you're lacking in knowledge, I'd say get a 4 yr degree. It's so much better than 2 yr. A university degree is not needed to be successful in development. This applies to situations where someone is a fantastic developer already and is asking if a degree with help him. In situations where someone is thinking about taking Associate's level classes, this doesn't apply at all. Best to skip that and just do the 4 year, or do 2 yr as part of matriculation to 4 year, being careful to take all the engineering preparatory calculus and physics at the junior college and not the classes for dummies.
Scott Friday, November 24, 2006
Degree vs. no degree is often used for hiring because it's an easy way to cull applicants, not because non-degreed applicants are inferior. I think you're looking at this from the wrong direction. The question should not be do I *have* to get a degree to do ...whatever... but "I really enjoy learning new topics, I talking with smart people and drinking beer - is there some way I can focus on these activities?" - then the answer is get a university degree. Outside of fields that legally require a degree I think you will always get farther ahead spending the 4 years actually working towards your narrow goal, versus first completing an undergraduate degree then playing catch-up - and besides, they are not mutually exclusive. Universities are full of smart, idealistic, hard-working people - not a bad environment for someone hoping to pursue software development. So there are 2 questions: 1. What do you want to do? 2. Does university make sense to accomplish this goal?
Blah Friday, November 24, 2006
A degree will open a lot more doors than just programming, should you decide that you want a change.
*myName Friday, November 24, 2006
What type of work do you want to do? My advice would be to study in a non-computing field that you are interested in (business, engineering, geology, meteorology, accounting, whatever). If you are interested in computing you'll pursue that in your own time anyway. This way you will have vital domain experience that can often secure more interesting work.
anon Friday, November 24, 2006
Getting started entry level without a CS degree is very hard these days. Its hard to find someone to hire you. You need to be in another part of a company and move over. That does not have often. I know a guy who started as a software tester and moved over. Don't count on it happening. HOWEVER, people in the 1980s through mid 1990s were able to get in without a degree and they do fine. Some places hold it against them though. The market is different now. Its not just any degree. Your best bet is a computer science degree.
Contractor Friday, November 24, 2006
Get TWO degrees. One in CS, one in a field which gives you domain expertise. Qualified computer programmers are uncommon. People with an in-depth understanding of X are uncommon. Qualified computer programmers who understand X are as rare as hen's teeth and command salaries and job security to match. Example from my own experience: I am a frankly unexceptional programmer who knows a bit about natural languages and a lot about Japanese. I have an emergency box of business cards which contains the contact details of everyone who has ever tried to offer me a job. Last time I counted there were like 27 in there. Certain types of programming are approaching commodity status. I can write client-server Java apps. Whee, that only puts me in the same boat with a few million Americans and the entire nation of India. Throw in the requirement "Oh, and must speak Japanese" or "Oh, and needs to know how to price an option" and 999 of every 1,000 candidates drop right out of the running.
>> Do you need university degree to make it in development No, you don't. As much as it pains people with degrees to hear this, there are developers without degrees working along side of, and in many cases making more money than, developers with degrees. That said, it's probably easier and quicker to get a development job with a degree than without. When you don't have a degree, people expect you to actually know what you're doing. When you do have a degree, you just have to fake it well enough to get by. Getting the piece of paper is a heck of a lot easier than getting a clue -- particularly in this age of grade inflation.
I have a EE degree and have never taken any classes even remotely related to software development. I also know several guys who are developers who don't even have degrees. But all of us are "old school". We got into it when degrees didn't matter. New developers need a degree so you had might as well just go for CS. If I'd have known that I was going to end up as a developer I would have gladly dumped my EE degree and changed to CS. CS would have been much easier and much more enjoyable.
anon Friday, November 24, 2006
A degree is useful for your first job. From that point on it has less and less relevance. You should be approaching it from the 'what will I learn' point of view. If, to learn what you want to know, you need a degree, why then ... get a degree. If there are other ways, pursue those ways. I've hired hundreds of developers over the years. I've never considered a degree to be important, when put alongside their ability to do the job. Heck, I've hired CFOs of large companies without an accounting degree. I've not seen any correlation between having a degree and getting a good job done. If you're in a company that makes that an important distinction, it's a *bad* company. Don't keep bad company.
"A degree is useful for your first job. From that point on it has less and less relevance." Agreed. "You should be approaching it from the 'what will I learn' point of view." Agreed. "I've hired hundreds of developers over the years. I've never considered a degree to be important, when put alongside their ability to do the job. Heck, I've hired CFOs of large companies without an accounting degree." But you didn't hire a CFO directly out of high school without a degree. You've probably always hired CFO's that had plenty of domain experience. This guy is going to be fresh out of school and no one is going to hire him without a degree. "If you're in a company that makes that an important distinction, it's a *bad* company. Don't keep bad company. "" I disagree. It is way too easy to get a degree these days. Hiring someone young who doesn't have a degree is probably a big mistake. If the guy wants to take shortcuts on his career, what makes you think he won't do the same thing in his work?
dood mcdoogle Friday, November 24, 2006
All the best developers I've had the pleasure of working with had ample natural talent *and* a computer science degree from a good University. And I mean someone who, for example, are experienced Linux kernel developers for fun in their own time *and* can spot where a business problem looks like it might actually be best solved with something like the unification algorithm.
Short answer: Yes, you need a degree. Long answer: No, if you are really passionate and determined to make it, you can absolutely do it. I wouldn't recommend it to anybody though, since it can be hard to get the foot inside the doors these days, I guess. Be prepared to start at the bottom and work yourself up - that's what I did 10 years ago, when I quit my university physics education (yeah, I was passionate and wanted to work with game physics simulation). I don't have a degree and I managed to do fairly well myself. Having my own company today and looking back, I don't think I would have done anything different (except starting to smoke perhaps, but you never know about that butterfly effect, so I'll just have to deal with that.. :) ).. Would I hire someone without a degree? Yes, I absolutely would. Passion can make up for a lot of education and your education doesn't really start until you get your first job anyway, as I see it.
I think the question you should be asking is "Will studying at the university be good for me?", not "Will it be good for my professional career?". The answer to the second question may vary, but the answer to the first will be decidedly YES.
Chris - If your goal is to to minimize time in school, then don't go to school - is not required. But be aware that by minimizing time in school you will - on average (individual result vary) - be paying for it with lower income later. If your goal is to maximize income, then do get a degree. But you will then, of course, be paying for it tuition cost plus deferred entry into the workforce or loss of discretionary time now (if doing night school). A tradeoff on which only you can decide. Scott p.s. From a site linked in forum question "Best paid jobs : where?"...http://www.careerbuilder.com/JobSeeker/CareerBytes/0505highestpay.htm?cbRecursionCnt=1&cbsid=4cf432548c7747d28174b9f8c3e830a3-217621889-x4-2 "A look at expected earnings over a lifetime shows the economic benefit of higher education attainment," says Tony Carnevale, who chaired President Clinton’s National Commission for Employment Policy and authored several books, including "America and the New Economy: How New Competitive Standards are Radically Changing American Workplaces. A person with a doctoral or professional degree, for example, is expected to earn about $3 million over the course of his or her working life while a person without a high school diploma is expected to earn less than $1 million. "Despite an increasing supply of well-educated workers, the college wage premium has nearly doubled since 1980, largely because of the added value of a college education in the new knowledge economy," adds Carnevale. The Employment Policy Forum concurs, but stresses that these numbers are only averages. Individual earnings depend on many factors inducing geographic location, employer size , industry and the worker’s skills and characteristics. "
Scott Meade Saturday, November 25, 2006
Also see a discussion about the value of a college degree (and other controversial topics) at Steve Olson's blog. See #5 and ensuing discussion. http://www.steve-olson.com/10-things-i-wish-i-had-never-believed/
Scott Meade Saturday, November 25, 2006
> what can I do to become a good developer in shortest time? I'd love to hear your story too. Here's a version of my story then. * Read a Fortran or Cobol manual at about 10 years old, and realize that you can't learn programming except by working in an organization that's big enough to have access to a mainframe * Excel, realitively speaking, at high-school-level Maths and Physics; use the school's micro-computer and BASIC to print hexagons for board-games. Also try a programmable calculator for an hour. * Go to university to study Applied Maths. * After two years, decide that I won't be an astrophysicist or a quantum mechanic when I graduate => take a year off to get some industry experience * Hired as an intern by Bell Northern Research/Northern Telecom, to analyze the performance metrics of their PSDN; do a tiny bit of programming (a utility to simulate queueing delays) as part of that. Do well => they ask me to finish my degree and then come back after I graduate * Finish my last year at university, and acquire the relevent piece of paper at the end. * Hired as a "software maintenance engineer" (programmer), with a Maths degree and no prior programming experience; given the necessary tools (i.e. access to the source code, the compiler, and some low-priority bug reports) and essntially left alone to get on with it. They had good (automated) regression tests so they could afford to let me modify the code. * Fixed various bugs. * Fixed a high-profile bug in a new product, by tracing it into the firmware => congratulated by management and promoted to "software development engineer". * Junior member of a two-man team on a 9-month project. Attend a 1-week seminar "Structured Design of Real-time systems". Design the software (while the senior member of the team, who's learning how to be a team leader, does PM things like finalizing requirements and getting test equipment). Finish the project together (code and test). * Quit job (not used to having only 2 week's holiday a year), and look for another some months later. * Offered work as a contract technical writer (software manuals). Buy a PC of my own (a 2nd-hand portable 8088 with twin floppies for about $2000) so that I can work off-site. * Laid off. Have a PC but no software for it except the O/S and a word processor. Write an "asteroids" game in Basic. Decide to rewrite it in assembler because Basic is too slow. Learn PC assembly language (and the DOS and BIOS APIs). Write an assembler in Basic. Rewrite the assembler in assembly. * Hired again as a contract technical writer. Laid off again. * A recruiter tells me that he can't place me, and advises me to "learn C". * Work as a door-to-door canvasser for Greenpeace, and write a payroll system for them in "C" in my spare time. Laid off again. * Hired again as a contract technical writer. Laid off again. * Hired to do tech support at a start-up. On my first day there, discover that there are no customers and no product, that the programmer has quit, and has left behind only a sabotaged copy the source code (which is written in assembly). De-sabotage the source code by merging it with a disassembled copy of a working version of the executable => become the company's software developer. * Interview a second programmer for the company. He has no university degree, and his previous experience is in a warehouse, hacking games in his spare time. He's written not only an assembler in assembly, but a debugger and IDE as well => hire him! * Someone tells me about Softice, which makes it whole lot easier to debug ISRs. * Stay as chief developer for this company for a decade[the 2nd programmer didn't transition from assembly to C, and became the company's head of QA instead]. Company grows to 70 people with 20 developers, from DOS to NT, from assembly to C++, from having small customers to having a telco. Read during this time (not only APIs but also books about C++, software engineering and project management); owner thinks I'm too academic, but I deem it necessary. I also start spending time online (Compuserve forums), asking questions, and then answering questions (per the "pay it forward" principle); become an MS MVP, which is flattering (but I don't keep it up when MS moves their forums from Compuserve to the microsoft.public.* newsgroups because there's too much traffic there much for me to follow). Meet an online community (which eventually moves from Compuserve to a unplublicized newsgroup), all experienced and some of whom are semi-famous (writers and editors), which is sometimes invaluable when I have questions (because they'll discuss an issue with me at length). * Company is aquired by a telco equipment vendor during the dot boom, and finally dissolved 3 years later during the dot bust. * A career counsellor (part of the severance package) tells me I must choose between being a manager or a programmer, and that I seem high-strung and remind her of a race-horse. I'm given a video taken of me during a mock interview. * Hired by another company, as a senior developer. Don't especially enjoy the atmosphere, because the people there are mostly junior and pressured to over-work by management. I have a "been there, done that, and don't need to do it anymore" feeling about that. Invited to come and work with a team of people from the previous company on a new startup, so I finish my current project, resign, and go do that for a couple of years. * Head-hunted again, by a different ex-colleague, so I move to another startup (this one late-stage startup with 70 people). After a few months of contracting there they ask me to become a "permanent" employee (which I agree to on condition that I can also work on my own project in my spare time). * Do well at work (doing more of what I'm already quite experienced with), and begin to learn web development in my spare time at home.
>> I disagree. It is way too easy to get a degree these days. Hiring someone young who doesn't have a degree is probably a big mistake. If the guy wants to take shortcuts on his career, what makes you think he won't do the same thing in his work? Wow, that logic hurts my brain. Is this the sort of thing they're teaching in universities these days? You shouldn't hire someone without a degree because getting a degree is easy? If it's so easy, then what's the value? And if it's so easy, then wouldn't it be better to hire someone who doesn't have a degree since they didn't take the "easy" way? And why wouldn't you want someone who takes shortcuts in their work? You want people to do things the long way just for fun even if the shortcut might result in equal (or better) results? I've never understood why some people think that spending four (or five) years sitting in classes, learning that bubble sort is the bestest fastest sort ever will somehow make a better developer than actually sitting behind a computer and writing real software that real people use. I did both and can say without hesitation which one was infinitely more valuable.
"learning that bubble sort is the bestest fastest sort ever will somehow make a better developer than actually sitting behind a computer and writing real software that real people use" I think you are missing the point that a good CS degree involves both learning the fundamentals and a *lot* of coding in a large variety of different environments, languages and problem areas. PS I *really* hope you were joking about bubble sort!
Yeah, but the point is that real world development does a much better job of teaching the fundamentals and providing "a lot of coding in a large variety of different environments, languages and problem areas."
ouch Sunday, November 26, 2006
"Teaching the fundamentals" I think we are talking about completely different things, the fundamentals of computer science are things like: - Computability - Complexity - Formal languages and automata - Lambda calculus - Concurrent systems (e.g. Hoare's CSP, Petri Nets etc.) - etc. Along with various areas of applied maths and, particularly, number theory. Combine these topics with practical work that required you to be programming on multiple projects in environments as diverse as Assembly and Prolog, C and ML then *I* thought it was a pretty good course. Its almost 20 years since I graduated and my appreciation for the importance of the "fundamentals" is now stronger than ever. Programming languages come and go - the fundamentals remain.
"Yeah, but the point is that real world development does a much better job of teaching the fundamentals and providing "a lot of coding in a large variety of different environments, languages and problem areas."" I have to disagree with that. In college I programmed in a variety of Unix environments and on Macs. I worked in Pascal, C, C++, Assembler, lisp, a bit of microcode and a touch of perl. I worked on AI, Operating Systems, parsers, used functional programming, oriented programming, real time programming, wrote my own memory allocator routines and a variety of simulators. In the real world I've done all windows development and it has been all C++, VB (of some flavor) a touch of Pascal and for the past few years some C#. I've worked mainly on CRUD type development and simple business apps. All in procedural languages and not doing much to stretch the grey matter. Anything beyond that has been on my own and had little to do with the "real world". As for the fundamentals, I don't think the real world taught me too much that I didn't have to go out of the way to pick up on my own. About the only fundamental I learned in the realworld that I didn't learn in school was to use source control. I would ask what you mean by fundamentals, anyway. I would have to side with Arethuza. That stuff is fundamental, in my opinion, but none of it was ever covered in any "real world" job I ever had. Yet I know I could be a much crappier programmer if I did not know that information. In my experience I've been able to rely more on people that have 4 year degrees than not. Out of the many developers I've worked with I only know 2 that did not have degrees that were good. A very large percentage of the non-degreed developers that I have worked with directly are horrible. The degreed ones I think you have a little better than a 50/50 shot. I know there are exceptions to the rule. I would recommend getting the degree. If you take this stuff seriously, you don't want to be the person that thinks a compiler will optimize a poorly written sort routine for you. You should learn about stuff like that when getting a 4 year degree.
No, you don't NEED the degree, but it sure makes all sorts of things easier. 1) you'll learn all sorts of things in college that you'll take 2 or 3 times as long to learn (if you EVER learn them) on your own. 2) lots of places either won't look at you unless you have a degree, or they'll pay you a lot less than the folks with degrees. 3) why are you trying to avoid college? it's some of the most fun you will ever have and you meet all sorts of neat people (some of whom may be able to help you out in the future). You only get one or two shots at college (eventually you get too old or you get too many responsabilities) so you should do it while you can. Eventually your work experience will count for more than the degree, but that takes YEARS (close to a decade) and in the meantime you'll be losing money due to lower pay and you won't get to do the more interesting jobs (all the cool jobs REALLY won't look at you without a degree).
It's more accurate to say that places will *try* to pay you a lot less. It's a negotiating tactic. I know of specific cases where developers without degrees were paid more than developers with degrees (some from top ranked CS programs) and equivalent experience. Plus you have to factor in the amount the degreed developers are paying in college loans (assuming mommy and daddy didn't pay for school).
| |
