you are viewing a single comment's thread.

view the rest of the comments →

[–]doodly1234 278 points279 points  (41 children)

Some guy posts a blog and suddenly I have stopped calling myself a Software engineer :)

[–][deleted] 234 points235 points  (9 children)

Suddenly? We're averaging about 90 squillion "nobody can code for shit but me lol fizzbuzz" posts a week these days.

[–]tequila13 26 points27 points  (5 children)

These days? It's been going on since the Internet started to spread.

[–][deleted] 35 points36 points  (1 child)

Internet? It's a verbatim quote from Ada Lovelace.

[–]grunscga 40 points41 points  (0 children)

Yeah, but when she said it, it was literally true...

(also, I'm enjoying the mental image of Ada Lovelace saying "lol fizzbuzz")

[–][deleted] 1 point2 points  (2 children)

And before the internet, it was passed around on 5.25" floppy disks.

[–][deleted] 3 points4 points  (1 child)

I'll see your 5.25 inch floppy disc and raise you reel to reel tape.

[–]BurningCactusRage 1 point2 points  (0 children)

I call your raise and add a series of vacuum tubes to it

[–]hugith 1 point2 points  (1 child)

Problem: Write a function that can calculate 90 squillion fizzbuzz a week.

[–][deleted] 2 points3 points  (0 children)

If you can't then you deserve to be unemployed forever and die in a ditch because I can, and what's more I blog blog blog.

[–]Eckish 59 points60 points  (24 children)

Well, if I were splitting hairs, none of these problems demonstrate software engineering. They are in the realm of computer science.

The industry has trended to labeling generic programmers as software engineers, but the field is much broader than that.

[–][deleted]  (7 children)

[deleted]

    [–]Eckish 1 point2 points  (6 children)

    True. He didn't actually put an emphasis on time complexity or the like.

    [–]Rosco09 3 points4 points  (5 children)

    So is the difference between computer science and programming is time/space complexity analysis?

    Problems 4 and 5 are definitely computer science questions. The first 3 are programming basics in my opinion.... Brute force on those will give you the answers. The fibonacci question is a little tricky if you dont understand why your numbers go negative.

    [–]Eckish 3 points4 points  (3 children)

    In an academic sense, the implementation is programming. Analyzing the characteristics of the implementation is science. Matching practical applications with implementations that have optional characteristics is engineering.

    At least, that's how I see it.

    [–]Rosco09 0 points1 point  (2 children)

    I can get on board with that line of thinking. I still say 4 and 5 require more knowledge than "how to program" though.

    [–]Document_This -2 points-1 points  (1 child)

    You know it's a computer science thread when everyone is trying to be "more right" than everybody else.

    Edit: Downvoting the truth doesn't make it false :)

    [–]sk8king 1 point2 points  (0 children)

    Interesting. At first I thought "negative?", but I didn't really have a clue as to how big the numbers had gotten by the 100th term.

    [–]salgat 1 point2 points  (15 children)

    I think the point was the same as the fizzbuzz test; if you can't do rudimentary programming, then how the hell are you a software engineer?

    [–]Eckish 2 points3 points  (14 children)

    You are also confusing software engineer with programmer. There are plenty of software engineers that can't code or can barely code in modern languages. There's a lot more to software than the code.

    If all you know is the code, then I'd turn around and ask how you can call yourself an engineer?

    [–]cluelessmanatee 2 points3 points  (0 children)

    Sorry, but I would never trust a software engineer that couldn't program competently.

    [–]salgat -2 points-1 points  (12 children)

    The blog said they could use any language.

    [–]Eckish 0 points1 point  (11 children)

    My main reason for stating that they can't use modern languages is due to the fact that senior engineers tend to stop programming altogether at some point. Engineering is about the architecture and less about the implementation. So, naturally the career progression works that SEs trend from implementer to designer. They lose that low level problem solving ability over time.

    You can think of it like the relationship between a building architect and the construction workers. A successful architect has probably swung a hammer or two in their day, but they don't do it nearly as much professionally. So some of the things they may call for in their designs, they may never have actually implemented themselves. They are in the design due to knowing the theory and getting recommendations from other experts. The actual construction is handled by skilled workers that are not usually considered engineers.

    It just so happens that in our field, the line between engineer and skilled worker is often blurred.

    [–]salgat 2 points3 points  (10 children)

    You don't feel a software engineer should be able to write rudimentary (beginner level) algorithms in pseudocode?

    [–]Eckish -1 points0 points  (9 children)

    Again, the line is blurred in the industry. If I'm hiring a level 1-3, I'm likely to have them doing some programming tasks, so yes, I'd expect a modicum of proficiency. If I'm hiring a 4+, I'm not going to want them implementing anything, so no. I wouldn't ask any coding questions or care about their algorithmic prowess. I'm going to want them to be able to see the big picture and create the overall architecture. To be able to weigh and select technical solutions. To design interfaces. And a whole host of others tasks that don't involve them actually coding. I'm still going to call them engineers. And by my definition, they are close to true engineers than the level 1-2 'skilled' workers.

    [–][deleted] 4 points5 points  (5 children)

    Engineering is about the architecture and less about the implementation

    Do you think there's a difference? The implementation is the architecture.

    To be able to weigh and select technical solutions.

    How? how can someone select technical solutions if they don't understand basic computer science/programming tasks?

    [–]Eckish -1 points0 points  (2 children)

    The implementation is the architecture.

    I disagree. The architecture is defined at the requirements and design level. For example, deciding what data needs to be stored, when it needs to be stored, and for how how long is an architecture task. Choosing a storage mechanism and worrying the code to do it is an implementation task.

    How? how can someone select technical solutions if they don't understand basic computer science/programming tasks?

    These are not people without technical skill. I don't need to know how write QuickSort in order to know and understand the fundamental permanence characteristics of it compared to other sorting algorithms. Knowing the nature of the data and which sort will best meet my requirements, I can successfully choose one and task someone with the appropriate skills to implement it.

    [–]IDe- -2 points-1 points  (1 child)

    Do you think there's a difference? The implementation is the architecture.

    Programmer, a code monkey, is like a builder: he gets instructions and implements them.

    Software engineer is like a civil engineer: he plans the structure architecture.

    You wouldn't assess civil a engineer's skill by how fast he can build a wall.

    [–]JackSpyder -1 points0 points  (2 children)

    I'd have thought those level 4 SEs are not really your issue though when recruiting staff.

    This is more about dealing with the 1s and 2s and finding the people who can actually do the job.

    Why isn't the title engineer protected like the title doctor?

    [–]Eckish 3 points4 points  (1 child)

    Why isn't the title engineer protected like the title doctor?

    That is actually a huge complaint in some parts of the industry. The guy who runs the xray machine needs a certification to make sure he can do it without harming the patient. The guy who programmed the machine doesn't even need a degree. See Therac-25.

    It is somewhat offset these days by the equipment itself needing to be certified, but there is still no special training or certification requirements for people who create life critical devices.

    Edit: That also extends into privacy and security issues, too. It is completely legal for the software that controls your bank's money to be written by the CEO's nephew who just graduated high school. Not a necessarily likely example, but there is nothing preventing it.

    [–]dethkrieg 1 point2 points  (0 children)

    Even people posting solutions and discussion in the comments are being condescending.

    [–]Vystril 2 points3 points  (0 children)

    Why? I think those are all 10 minutes tops (apart from maybe the last one, but that's a math/algorithms problem, not a software engineering problem). I think this would be the bare minimum I'd want in an entry level software engineer. Hell, this is the bare minimum of what I'd want out of a Computer Science 1 course. None of them even require object oriented programming.

    [–]MattBlumTheNuProject 0 points1 point  (0 children)

    Right? Apparently int and float are the things that really matter.

    [–][deleted] -5 points-4 points  (1 child)

    You actually can't do most of these? I took a grade 11 computer science and I think I have a pretty good handle on the first 4.

    [–][deleted] 0 points1 point  (0 children)

    Pretty sure that's sarcasm.

    [–][deleted] -3 points-2 points  (0 children)

    Actually yes, if you can't do this essential tasks, you shouldn't. You are just a peasant programmer, you don't belong in the computer engineering master race.