11 Mar, 2013, Exodus wrote in the 61st comment:
Votes: 0
Rarva.Riendf said:
Quote
What IS it about?


Academic stuff (a little of everything to grasp how a computer work, down to the circuitry), nothing actually useful to program in itself, but all those things that self taught programmer lack in general cause it is not exactly 'productive'. Good practices, like a real grasp at how to use objects in an effective way, building databases.
Sure all those can be learned by book, like any education. But having tutors is also nice. Also, being forced to use good practices helps.


And be prepared to learn about the very first computers, including Charles Babbage in 1822 or something and a whole bunch of irrelevant things only related to modern computing by a timeline.
12 Mar, 2013, quixadhal wrote in the 62nd comment:
Votes: 0
The most useful things you learn at college have nothing to do with the classwork. Learning how to work together with others, and expanding your mindset beyond the tiny one you grew up with, or the super-specialized ones you get from your coworkers, is actually kinda valuable and pretty hard to pick up without many years at many different jobs…. or a few years at a school that has tons of different people.
12 Mar, 2013, Nathan wrote in the 63rd comment:
Votes: 0
Exodus said:
Rarva.Riendf said:
Quote
What IS it about?


Academic stuff (a little of everything to grasp how a computer work, down to the circuitry), nothing actually useful to program in itself, but all those things that self taught programmer lack in general cause it is not exactly 'productive'. Good practices, like a real grasp at how to use objects in an effective way, building databases.
Sure all those can be learned by book, like any education. But having tutors is also nice. Also, being forced to use good practices helps.


And be prepared to learn about the very first computers, including Charles Babbage in 1822 or something and a whole bunch of irrelevant things only related to modern computing by a timeline.


Maybe not for a software engineer, but the veryfirst computers might not be entirely irrelevant to a computer scientist or computer engineer at some level since they represent the most limited computer. Maybe not as far as Babbage, but some understanding of how the computer actually works (not really a black box at some level) is probably useful (and/or interesting) and can likely be derived even from hardware in existence before integrated circuits existed.
12 Mar, 2013, lakedoo23 wrote in the 64th comment:
Votes: 0
Ensure that you take discrete mathematics as soon as possible, it will give you a better understanding on number theory and logic.
12 Mar, 2013, quixadhal wrote in the 65th comment:
Votes: 0
As for studying early computers… a software engineer might not have a NEED to understand how early systems worked, but they SHOULD learn assembly language to know how computers (in general) really deal with things.

When I was in college, a large part of my database class was spent studying theory, and a big chunk of that was applied to designed databases for historical machines. Why? Because nothing gets the idea across better than being able to put real numbers behind adjustments to the schema that change the data layout (on they actual storage media) and thus change the data retrieval times.

We learned the idea of pre-fetch by plotting records onto tape or rotating drums, so you could actually watch the data roll into place and see what would be available for pre-fetch next. Sure, things don't work that way now, but the concept is still plenty valid.
13 Mar, 2013, salindor wrote in the 66th comment:
Votes: 0
I see this thread has turned into a general debate of needing a degree vs not needing one.

Degrees are primarily for the employeer, not the person getting the degree. They are a certificate that the person holding the certificate has systematically gone through and studied a particular field (its why degrees from non-accrediated universities/colleges are next to worthless).

A person hiring a software engineer can look at a person who holds a degree and know that at one point in their past they were required to learn all the things that degree speaks about. The courses an accrediated university has to teach is based on inputs from several commitees PHds and industry think is a good deliniation of knowledge that someone in that field should know. This knowledge is then put into an accrediation program so when a school gives a person a diploma it is recognized for the achievement it is and a company hiring the person can know they are getting someone with at least a basic understanding. I am not arguing the person coming out with a diploma will be job ready on graduation, in fact I tend to believe it takes 6 months after that point before they are fully up to speed (especially since most degrees are generalized so the people who get them can be plugged into anywhere, where as most jobs tend to be specialized (relatively speaking) to whatever the company is doing).

So then if you don't have a degree, then what? Well you have to be able to prove your competance. With experience, a highly motivated non-degree person will eventually surpass a mildly-none motivated degreed person. However, it is my opinion (mostly because I spent the time and money to go acquire a degree) that a highly motivated degreed individual will always have an advantage over a non-degreed individual simply because their base knowledge is greater as they actually took the time to study the field (even the useless parts).

Salindor
13 Mar, 2013, Runter wrote in the 67th comment:
Votes: 0
Quote
As for studying early computers… a software engineer might not have a NEED to understand how early systems worked, but they SHOULD learn assembly language to know how computers (in general) really deal with things.


Disagree. Anecdotally I know plenty of competent people who never [bothered] to learn assembly. You can learn how computers work without writing code in assembly. You can learn what assembly does without having to write code in assembly. I can make the argument that the more low level stuff you learn the more you become tainted by a bias towards poor code at higher levels.

I also don't buy in on the "learn low level first" approach. Especially languages you're unlikely to use in the future. Like C. I'd much prefer to hear programmers learning a new technology say "What? This doesn't have the batteries included I'm used to?" Rather than "What? I don't have to implement XZY feature on my own?"

If we step back and think about why this is perpetuated only in universities we'll find that it's related to people teaching for years the same subject matter and lagging behind industry standards. There's strong incentives to protect that myth by the people teaching the kids that come into the industry without the skills and tools they need to actually do the work, or even get a job. Do you guys have any idea how many people I interviewed this year with 4 years of stamps of approval under their belts that can't do a simple interview question like the fizzbuzz problem?

http://imranontech.com/2007/01/24/using-...

More and more employers aren't even considering academic credentials as more than a raw filter to have your intern sort through applicants for you. The people issuing those stamps of approval–they're the same people perpetuating that you need to learn XYZ historical language first to know how a machine works. I don't really care if an applicant can't explain how a machine at the lowest level works. I'm more concerned if they solve problems.

Btw, with the fizzbuzz problem we recently went through about 70 applicants at our consultancy. The first person we found that could solve the problem without leaving the interview, taking as much time as they need, with pseudocode (or any language of their choice).. we hired.
13 Mar, 2013, Rarva.Riendf wrote in the 68th comment:
Votes: 0
Quote
You can learn what assembly does without having to write code in assembly


You hardly write code in school anyway. I still think it is good to understand what your code wil end up doing even if you only use high level language. But that can be done in a few courses. The point of school is to show you a path you could take if you want to, not to make it go through it. You have the course, you know that it exists, you are better for it.
13 Mar, 2013, salindor wrote in the 69th comment:
Votes: 0
I spend alot of time hanging around college students as I am working on a second degree. I can tell you from what I have seen there are really two kinds of students (ok three if you could the partners but going to ignore them).

There are those who went into cs for the money or maybe because their patents or whatnot… But it's not their hobby. These people your right–as programmers these people are useless

The second group of people not only study it but treat it as a hobby. They are involved in other activities like writto g MUDs or research or etc. I am not sure if you would see new grads from this group at a consulting firm as they tend to get interns long before they graduate then get hired by the ones who interned them. But they may just be the pattern I have seen its not like I am a prof or have visited multiple schools.
13 Mar, 2013, quixadhal wrote in the 70th comment:
Votes: 0
It's true… you don't NEED to learn assembly to understand how a machine operates on code and data. You can spend 10 years learning it by noting how different things behave as you code other things… but if you're in school, assembly is the easiest way to actually show people how the hardware works, at the software level they care about.

I taught myself BASIC and 6502 assembly on the Commodore 64, while I was in high school. When I got to college, I was amazed at how much difficulty the people in my introductory Pascal class were having with the pointer concept. It was stupidly obvious to me, as I'd learned assembly and indirect accessing via LDA and STA was pretty much how you did things of any use.

More than that, when working at the assembly level, you know EXACTLY what's happening under the hood. You know how much space things take up, you know the costs of doing a short branch vs. a jump, and you know that memory doesn't just magically appear from nowhere. You may never use any of those skills (directly) again, but it changes the way you think.

There are lots of CS graduates who can't code their way out of a paper bag, because all they did was study for tests and theory. There are also lots of programmers who write horrible code… it works, but it uses far more resources than it needs to, because they don't know (or care) what the compiler is doing with their high-level object fluff. Those people are the reason our software is so bloated and slow, despite the hardware's incredible power.

Just look at your desktop. I have a quad-core 3.2GHz CPU with 8G of RAM. Compared to my old C64, which had a single-core 1MHz CPU and 64K of RAM. Sure, it's doing a bit more… but it doesn't really *FEEL* any faster. You can't blame the hardware. Anyone who remembers GEOS for the C64 knows you could indeed have a GUI windowing environment, even back then. Thus, the blame must lie with the programmers who write bloated fluff code, trusting that the hardware will make it work "fast enough", rather than actually trying to make it as fast as they could.

Project managers and corporations have to take equal blame here, as they've consistently pushed for "good enough" instead of "good", to meet unrealistic deadlines set by greedy corporations. It's been happening for so long, that most people are taught that they shouldn't try for perfection anymore. I find that rather sad, but it'll only get worse.
14 Mar, 2013, Runter wrote in the 71st comment:
Votes: 0
We have different definitions for good code. My primary concern is readability, modularity, and how well tested code is. Bottlenecks for hardware can be identified and fixed faster than those other things can be. And I think good enough is, well, good enough. What you're actually saying is your good enough wrt resources is a different marker than what you've seen. But everyone makes that assessment. There's plenty of times where you can trade memory for CPU, or CPU for memory, but not get both. We make determinations based on our needs, but the architecture of software is 100 times more important today than if you eeked out a few additional bytes because you decided not to use json and roll your own format. Or if you didn't use that temp variable and did a bitwise swap.
15 Mar, 2013, Telgar wrote in the 72nd comment:
Votes: 0
Runter said:
Do you guys have any idea how many people I interviewed this year with 4 years of stamps of approval under their belts that can't do a simple interview question like the fizzbuzz problem?

http://imranontech.com/2007/01/24/using-...

More and more employers aren't even considering academic credentials as more than a raw filter to have your intern sort through applicants for you. The people issuing those stamps of approval–they're the same people perpetuating that you need to learn XYZ historical language first to know how a machine works. I don't really care if an applicant can't explain how a machine at the lowest level works. I'm more concerned if they solve problems.

Btw, with the fizzbuzz problem we recently went through about 70 applicants at our consultancy. The first person we found that could solve the problem without leaving the interview, taking as much time as they need, with pseudocode (or any language of their choice).. we hired.


LOL at the fact that the first posted solution to the fizzbuzz problem on that thread is, in fact, incorrect. I think this fact alone is enough to validate Runter's point.
15 Mar, 2013, salindor wrote in the 73rd comment:
Votes: 0
This is what I think the difference between software engineering and simply programming is. A software engineer is looking at the environment and is balancing maintainability, implementation speed, running speed, memory footprint etc. If your dealing with an embedded 2MHz processor, suddenly templates and most of the stl are things you simply can't afford and so your coding style changes. Go to programming a test tool for windows and suddenly counting memory and cpu cycles and possibly even maintainability doesn't matter but development speed does. Switch to writting an app you expect will be around for years to come and code maintainability becomes critical.

This is what I beleive is the difference between an engineer and just some programmer. An engineer can justify WHY they are doing what they are doing. They can tell you why they choose a linked list over an array or a tree vs a hash map. A good engineer balances coding time vs correctness vs maintainability (sometimes the most maintable solution that comes to mind isn't the most correct solution).

Anyways, since I am not the best communicator here is an article talking about when to fix bugs as an example of what what I believe every software engineer should be doingJoel on when to fix bugs
15 Mar, 2013, salindor wrote in the 74th comment:
Votes: 0
Telgar said:
LOL at the fact that the first posted solution to the fizzbuzz problem on that thread is, in fact, incorrect. I think this fact alone is enough to validate Runter's point.


Not really, if he is at recruiting agency only looking at new grads then he is judging the stock by whats left at the bottom of the barrel. Most good new grads start looking in their senior year so they will have a job lined up by time they graduate. Further I know many of them get interns from sophmore to senior year and many of those get hired on from their internship.
15 Mar, 2013, Idealiad wrote in the 75th comment:
Votes: 0
@Telgar, just out of curiosity, which solution was that? The first one I saw was correct.
15 Mar, 2013, Runter wrote in the 76th comment:
Votes: 0
Yeah, and when our company asked applicants to solve the problem we weren't overly picky, nor were we trying to trick someone with a gotcha. We wanted to see thought process and helped as they wrote the code if they had questions. … But applicants generally really just didn't even attempt it. It's not that they were slightly off.. it was a "Okay, you guys caught me. I don't know how to write even pseudocode." moment from people with resumes padded about their competency in various languages and certifications.

A few months ago we decided to have applicants sent us a sample of code along with resume to be considered as an additional filter. It's cut back our applicants considerably, but I feel like we aren't quite wasting our time as much any more. We're still using the fizzbuzz question.
15 Mar, 2013, Idealiad wrote in the 77th comment:
Votes: 0
I've seen FizzBuzz brought up a few times in different forums and every time I pretty much can't believe it. Is this just a case of people who apply to every job they see posted no matter their qualifications (another thing I just don't get). Are these degree programs or whatever they are capable of producing such incompetent graduates?
15 Mar, 2013, Runter wrote in the 78th comment:
Votes: 0
Idealiad said:
I've seen FizzBuzz brought up a few times in different forums and every time I pretty much can't believe it. Is this just a case of people who apply to every job they see posted no matter their qualifications (another thing I just don't get). Are these degree programs or whatever they are capable of producing such incompetent graduates?


Its a combination of the two, buy you can have really bad grades and still qualify for a diploma. You can struggle through classes just by "showing up." A lot of teachers values you just being in class enough to help you along to that minimal grade you need. I'm not saying the highest GPA earners come out completely unqualified, but a lot of people with degrees in computer science are.
15 Mar, 2013, Rarva.Riendf wrote in the 79th comment:
Votes: 0
>but a lot of people with degrees in computer science are.

I dunno how it is in the US but in Europe this has a reason: Engineering school does not focus on a perticular course. So you can be bad in some courses and make it up for it in others. But once you come to the job market, well you tend to pick what is available, not necesserily your best field. (and IT is still a good job provider). I have seen VERY bad programmers indeed, even when I was in the 'IT' option (more points coming from it than from the "Network" option.). The minimal mark to get was 7 (out of 20), to not be eliminated. Of course, a lot of teachers would give you those 7 points, and sometimes, the 7 was an average split between a few sligthly differnet course, one you could excel to. so get a 18 in one 0 in another you still get 9 average. (I did that in a few non IT courses…not even bothering showing to some tests)
15 Mar, 2013, Rarva.Riendf wrote in the 80th comment:
Votes: 0
Idealiad said:
I've seen FizzBuzz brought up a few times in different forums and every time I pretty much can't believe it. Is this just a case of people who apply to every job they see posted no matter their qualifications (another thing I just don't get). Are these degree programs or whatever they are capable of producing such incompetent graduates?


Just think about it: those people are incompetent, yes. BUT the people that will interview then comes from where ? The same pool of incompetent people in the first place (but from another field, like human ressources).

Sometimes, the quality of interviewers is so bad it can gives you a nice head start in a company, and you may make illusion enough to be promoted soon enough to where you wil not have to code to begin with.

That is how the world spin (but wont spin a lot longer…lack of oil will kill this civilisation in the next century)
60.0/89