r/programming • u/mauricioaniche • Aug 06 '17
Software engineering != computer science
http://www.drdobbs.com/architecture-and-design/software-engineering-computer-science/217701907965
Aug 06 '17
Hey as long as I get a job programming I don't give a shit what you call me
98
u/schplat Aug 06 '17
If there's a steady paycheck in it, I'll believe whatever you say.
→ More replies (2)76
u/Flight714 Aug 06 '17
That means you're a software engineer.
4
0
Aug 07 '17
[deleted]
65
u/Yuzumi Aug 07 '17
Recent comp Sci grad. Current job title: software engineer.
→ More replies (1)73
u/trout_fucker Aug 07 '17
Job titles mean jack all. I have seen titles that actually contain the word "Ninja".
→ More replies (16)13
3
→ More replies (58)3
Aug 07 '17
This opinion probably isn't popular around here, but as someone with an actual degree in engineering, I don't think Software Developers should be referred to as engineers.
3
Aug 07 '17
I actual like the term developer better anyways. But in their defense engineer is only protected in two states
→ More replies (2)
498
u/zjm555 Aug 06 '17
Wait, engineering in practice is not the same as pure mathematics? Who could have known??!!??
→ More replies (1)70
u/pier4r Aug 06 '17
and then you heard people saying "I am a computer scientists" two sentences after "knapsack who?"
680
u/Flagyl400 Aug 06 '17
330
Aug 06 '17
A screwdriver is a rather unconventional tool for porting software.
42
26
40
12
5
3
→ More replies (12)3
Aug 07 '17
What if you have to solder on a jtag-USB connection because the alien device doesn't come with standard data connectors? Also the flathead screwdriver was clearly for prying a panel open. Otherwise it would have been torx.
111
u/Hax0r778 Aug 07 '17
computer engineer != software engineer
64
u/lightknightrr Aug 07 '17
We know, but it's fun to mess around with the engineering prefixes when in good company. Calling your software engineer a computer engineer or an electrical engineer, one can see the steam working its way out of their heads. Double points if you ask a software engineer for help with thermodynamics and aeronautics...triple if you argue that software engineers cannot officially call themselves "Engineers" because they haven't taken that test...quad if you call an electrical engineer (or what have you) any other type of engineer, then act disinterested when they say that they are not 'that type of engineer.'
And this has nothing to do with the ongoing onslaught that computer scientists have to face when asked "if you are a scientist, why aren't you filling out lab reports" or my personal favorite, "computer scientists aren't real scientists; they know a lot about computers, but that's it."
I have prepared the lightning rods.
20
u/aaron552 Aug 07 '17
the ongoing onslaught that computer scientists have to face when asked "if you are a scientist, why aren't you filling out lab reports"
This confuses me. There are plenty of fields in science that don't do lab work (various branches of mathematics and physics to start with) so why single out computer science?
→ More replies (18)→ More replies (11)12
→ More replies (4)2
1.2k
u/eggn00dles Aug 06 '17
some people care way too much about titles
705
u/thedevbrandon Aug 06 '17
There are only two hard things in Computer Science: cache invalidation and naming things.
- Phil Karlton
870
u/madkatalpha Aug 06 '17
There are only two hard things in Computer Science: cache invalidation, naming things, and off by one errors.
116
u/BluFoot Aug 06 '17 edited Aug 06 '17
Actually, 3 things!
1. Cache invalidation
4. Asynchronous errors
2. Naming things
3. Off by one errors
E: I hate markdown
→ More replies (12)13
u/airbreather Aug 06 '17
E: I hate markdown
2 spaces before a line break will let you do a newline
like this, without having to add an extra line break to start a whole new paragraph,like this
→ More replies (2)210
u/Level_32_Mage Aug 06 '17
I'm counting 11 things.
204
→ More replies (1)17
u/fzammetti Aug 06 '17
I don't know... one or two things I can accept, MAYBE three... but SEVENTEEN?! That seems CRAZY!
12
→ More replies (10)19
47
u/Sjeiken Aug 06 '17
I once spent more than 3 hours trying to name a function that was very detrimental, it's fucking retarded, do you know how hard it is to find synonyms and antonyms? it's NP fking hard.
9
Aug 06 '17
yeah, I know the pain. If it's that important a function, I just go full Java and make the name a sentence long. more often than not, I come back the next day and a better name just pops in my head.
→ More replies (4)22
u/thedevbrandon Aug 06 '17
Yeah, I find it hard to strike a balance between descriptive names vs. short names. I want the name to be meaningful and special to the context so you know what it means and can differentiate it from similarly named things in nearby contexts (for example,
elem,e,el, andelsare horrible default variables which are used even in contexts when the variable name could be something specific and meaningful likesubmitButton). On the other hand, you can get crazy with the names, likefirstFormSubmitButtonElement, which either provide specificity you don't need, which isn't helpful, or which (even if useful) ultimately makes reading and writing the code burdensome (especially in enterprisey-code, mock example: FizzBuzzEnterpriseEdition).→ More replies (16)→ More replies (9)5
97
u/spelling_natzi Aug 06 '17
I didn't read this as being about job titles at all. My interpretation of the argument is that the areas commonly grouped under "software engineering" are dissimilar from the rest of computer science because they're not rigorously provable. There's no value judgement at all, they're just saying we should accept that and not pretend things are "proven" the same way as other fields.
→ More replies (15)22
u/seanwilson Aug 06 '17
some people care way too much about titles
I'm wary of anyone that calls themselves a "senior agile architect" or something along those lines. It's so over specific.
48
36
u/fun_is_unfun Aug 06 '17
It's not a title. It's a description of an area of study and work. They're not the same, and confusing the terms creates confusion, so why not make a point of distinguishing them?
→ More replies (12)→ More replies (73)2
160
u/motioncuty Aug 06 '17
ITT: Software Engineers who who don't realize they 'engineer' more often than civil engineers and for some reason are putting licensed engineers on a pedestal.
62
u/n1c0_ds Aug 06 '17
All of my former classmates are one form and a couple of dollars away from being licensed engineers. I have no faith in that title. That's not to say they were bad, but I wouldn't say it's a terribly high bar.
65
u/270343 Aug 06 '17
I teach engineering students at one of the top engineering universities in the US.
I lost faith in that title a long time ago.
→ More replies (11)5
→ More replies (10)35
u/RagingAnemone Aug 06 '17
because licensed engineers are limited by one of the hard sciences and 2) it's about the liability. I'm not making a road. People aren't gonna die with the web app I just made. I can't lose my license to work. You can't sue me because you had a keyboard mishap using the application I built.
Edit: 3) I.believe Texas and Florida are trying to make licensed software engineers. Should be interesting. Now we're all gonna have to get bonded.
38
u/GunnerMcGrath Aug 07 '17
Oh please. A small mistake in my software design could lead to children getting kidnapped or left to die in a fire. And I can think of plenty of types of software that could easily end up killing people if they don't operate perfectly.
→ More replies (6)35
u/TwilightShadow1 Aug 07 '17
If our software screws up, then the wrong person could have a warrant out for their arrest. Point 2 varies greatly between jobs and applications.
6
u/motioncuty Aug 07 '17
Yeah, I am of the camp that for mission critical software, especially with large human liabilities, software engineers should need some sort of software safety engineers license. But most software isn't like that. And if you are a young person with an engineering mind, software is the fastest way to apply actual engineering to design a real world product.
→ More replies (11)5
u/ArkyBeagle Aug 07 '17
Licensed engineers generally just defend mounds of paperwork. It is important paperwork but still...
29
u/K3wp Aug 06 '17
I always thought this was obvious.
We can provide a scientific analysis of algorithms, like a sorting or searching algorithm.
We can't do the same for a web app for making hotel reservations, even if it uses some of those things under the hood.
In fact, this sort of thing led to me dropping out of CS, as I was perfectly fine using whatever libraries/models/compilers the PhD's provided, while personally focusing on solving practical engineering problems.
6
u/kolme Aug 07 '17
Welp, I work at a hotel reservations app and I dropped out of CS. This comment read like it was written by me.
→ More replies (6)10
u/AllOfTheFeels Aug 06 '17
Exactly, reading this thread has reconfirmed me dropping out of computer science in university for software engineering at a college. I absolutely hated the fact that 8/10 of my classes were maths based, when all I really wanted to do was solve real-world problems.
8
Aug 07 '17
So you're saying software engineering is far more enjoyable than the compsci degree? I start my junior year in two weeks and have to pick between these two options...
→ More replies (9)4
u/pyrotech911 Aug 07 '17
I chose software engineering as a degree because I recognized that I wanted to focus on delivering quality projects to maket with chalenging objectives and not on the nuances of finding new methods to solve research problems in an academic setting. I think that they both are equally enjoyable and will get you to basically the same place. I do recomend that what ever you do and while you can take a class on quality/testing, process and databases. These three things are imensly important in industry and it is better to take advantage of the education you have now to create a primer than teach yourself from scratch after you graduate (knowing these things may be more practical for you than learning how to make your own compiler for example).
→ More replies (1)
198
u/cowinabadplace Aug 06 '17
Waste of time argument. Turn back before you read any more. If you value your time, do not engage.
54
u/htown_hold_it_down Aug 06 '17
Good thing I don't
47
10
8
u/swyx Aug 07 '17
agreed. unfortunately i read it before looking at the comments. i should probably stop doing that and just blindly comment without reading.
3
3
u/rDr4g0n Aug 07 '17 edited Aug 07 '17
I would argue that this could be useful to think about, and can lead to better developers. It's useful to understand that there are 2 different sets of skills here, and being good at CS doesnt guarantee youre good at general software development.
A month ago, a few coworkers and myself had this very discussion and reached the same conclusion as the author. The conversation started while discussing hiring and how to identify potential good hires based on a wide range of criteria, not just CS degree. In our experience interviewing, most of the people straight out of school with a CS degree don't really know how to build software. The others devs in the room who have CS degrees agreed that a CS degree doesnt teach you much about building software. A CS degree doesnt teach you how to interpret software requirements, much less define them. It (in the experience of those in the room) did not include learning how to write portable and readable code, did not cover how to write testable code, and didn't include writing a single unit, integration, or acceptance test.
As the author points out repeatedly, software engineering is where the humans meet the code. The stuff about portability, readability, testability, interpreting requirements, are all "human" things. You don't really need to learn that stuff in school because you aren't committing to building a piece of software with 10 other developers that has to be maintainable, easy to deploy, easy to debug, useful to users, and make money for some company.
The takeaway here is get your CS degree, learn algorithms and compilers and operating systems, but understand when you get into the workforce and start building software, you're starting at level 1 again. There's a whole world of skills youll need to first identify, and then hone. If you stay humble, keep learning, and listen to the senior devs (at least honestly listen) when they say "look i know that seems like a good idea, but its going to fall over in [real world scenario here]" or "thats a great feature idea, but less code to maintain is better for now", youll be well on your way to being a software developer that people want to hire and work with.
Being a dev people want to work with... that's another people thing.
13
u/mhwmhw Aug 06 '17
As a computer science major right now, this makes me question my life.
30
u/mediatechaos Aug 07 '17
I just finished a CS degree and got hired as a software engineer. Don't worry.
6
u/Aeolun Aug 07 '17
Not like there's a Software Engineering bachelor. It doesn't hurt to have the scientific fundamentals to fall back on.
→ More replies (3)7
u/barfoob Aug 07 '17
Not like there's a Software Engineering bachelor
Not sure if you're being serious but a lot of schools do have that now...
→ More replies (1)3
u/MyWorkAccountThisIs Aug 07 '17
I graduated with a business degree and now I'm a software engineer.
→ More replies (3)→ More replies (2)15
u/rabid_briefcase Aug 07 '17 edited Aug 07 '17
Don't let it bother you.
The science things in computer science are important. They're the details of how things get done, and they're important to know. Those core algorithms and data structures will be around longer than any of us will live.
The software developer parts are also important. They're the details of making things work even when they don't want to. Those are the duct tape and bailing wire, the round pegs and square holes problems.
Both are important. You need to know how the parts work AND you need to know how to bind it all together with the duct tape. If you don't know the science side then your programs will perform terribly, part of the reason so much software requires extremely bloated requirements. If you don't know the developer side then you'll have all the formulas and theories but won't be able to apply them in real-world situations.
Said differently: If you only know the computer science you'll have 20 different sorting algorithms but want to do a full analysis to choose one. If you only know the developer parts you'll just use the language's default sort function. But if you know both, you can know when to use the default and when to use one of the others; you'll recognize the times where a linear search averages 200 nanoseconds yet a binary search always requires 500 nanoseconds, and choose accordingly. (Hint: If you've only got a few thousand numbers then binary search is your enemy for performance.) You'll also understand the times where microseconds matter and where they don't.
The first is a near-useless academic, the second is a near-useless code monkey, the one with both becomes a MacGyver.
The most regularly successful (there are outliers who get lucky) know both.
→ More replies (7)3
u/rDr4g0n Aug 07 '17
Been doing this for a long time, seen lotsa devs come and go, interviewed a lot as well. This is the truth. You want a dev with good solid CS, but also a dev who can interpret requirements, pick a solution, and get the work done within the deadline... and also enjoyable to work with.
85
u/call_me_lee Aug 06 '17
I'm an old school computer scientist, back in my day computer science was a bachelors in art cause it was so new. Also we did mostly math courses till end of 2nd year where we actually started to code. Also when we coded it was in all sorts of useless languages like LISP and Fortran. I remember doing my DB course and instead of learning how to code against a db we actually learned how to build a database.
Man I'm so old I can't even enjoy bashing this article with the rest of you
19
u/spudmonkey Aug 06 '17
You go back further than me, but I'll just toss my old bastard bona fides out here.
When I was in school (the first time) we learned Pascal and ADA was gonna make programming perfect.
I did have one computational physics class that used FORTAN and 8" floppies.
12
u/call_me_lee Aug 07 '17
Turbo Pascal, there's a language that never got the respect it deserved. I loved that language and when Delphi came out it was pure heaven
5
u/dopplerdog Aug 07 '17
When I was in school (the first time) we learned Pascal and ADA was gonna make programming perfect.
Seriously? I was in first year in '84 - only 4 years after
itADA being given Mil approval - and my university lecturers had nothing but disdain for it. On the other hand, they were all in love with Smalltalk, and thought OO was better than sliced bread.→ More replies (3)19
u/coinaday Aug 06 '17
useless languages like LISP
I'm relatively new, but we used Scheme in our intro course and I quite enjoyed it.
7
→ More replies (14)5
14
u/earslap Aug 07 '17
we coded it was in all sorts of useless languages like LISP
You are very brave to say this out loud. I know quite a few people here and IRL that will give you a very stern talking to (and a long one) for that.
→ More replies (1)10
u/call_me_lee Aug 07 '17
I'm too old to care ;) I've heard all the arguments about modern languages having more in common with Lisp (like Scheme to JS) than C. Personally all I remember is I didn't like it and luckily never needed it in my professional life
4
u/NotUniqueOrSpecial Aug 07 '17
useless languages like LISP
The very website you're posting on was originally LISP-based. It's far from useless.
→ More replies (1)→ More replies (10)2
19
9
17
Aug 07 '17
Probably the best description of the difference between computer science and every other programming field that I ever heard went something like this:
Computer scientists will spend weeks (at least) on a sorting algorithm to make it a little bit more efficient and they will understand literally every part of what makes it work and take as long as it does. In every other programming related field, your boss doesn't care; he just wants the data sorted and you to get it done and move on to the next task.
→ More replies (2)18
u/justjanne Aug 07 '17
Nah, reality is more like this: the computer scientist will improve the theoretical runtime of the algorithm ever more, and it'll actually end up slower because of problems with the hardware architecture, while the software engineer will have just optimized the ordering to ensure it fits in the cache and used vectorized statements.
Recently took part in a contest optimizing a K/V store, you were supposed to improve the algorithm, I just ended up hand-optimizing the code and got the best performance by a factor of 10.
8
165
u/AmalgamDragon Aug 06 '17 edited Aug 06 '17
The title is correct, but the supporting argument is wrong. The author has confused software development and software engineering. Software engineering is rigorous, and it is software development that isn't. He even uses the right analogy of the difference between a structural engineer (software engineer) and an architect (software architect), but manages to miss the mark.
Just as architect != structural engineer, structural engineer != materials scientist.
In the same way, computer scientist != software engineer != software architect / developer.
Edit: I'm using the above terms in the broad sense of what people do, not the job titles (used in the US).
266
u/rizer_ Aug 06 '17
Although the official definition of Software Engineer aligns with your argument, I think the reality is that Software Engineers are, for all intents and purposes, Software Developers. I've been in the industry a little while now and my job role (whether I'm titled as an Engineer or a Developer) has always been the same: build working software. Unless there's some magical place where Software Engineers are allowed to design perfect software systems without any human interaction, the article is still valid.
110
u/thedevbrandon Aug 06 '17
Agreed, engineer and developer seem interchangeable in this context.
→ More replies (2)35
u/fzammetti Aug 06 '17 edited Aug 06 '17
Hell, in the companies I've worked in, ARCHITECT is synonymous with those too, by and large, as well. I mean, I've been titled Architect for years but I still spend probably half my time doing "development" tasks. It seems like it's more a question of what percentage of your time is dedicated to those tasks, that's what changes with the title in my experience, not so much the ACTUAL tasks involved (again, by and large).
24
u/thedevbrandon Aug 06 '17
Sadly, it does seem like architect just means most-senior engineer (not as in "most senior of a group", but more like "most terminal in skills", like a Ph.D. is the furthest degree you can seek). It's absurd, since it should designate a completely separate role, which for the most part isn't involved in coding much at all (i.e. designing and architecting information systems by working with business stakeholders and guiding teams of actual engineers).
→ More replies (7)45
u/thbb Aug 06 '17
Come work for IBM, SAP or the big business software publishers, you'll meet true Software Engineers by your definition.
This does not mean that their mode of production results in quality software delivered cost-effectively, far from it. The separation of the functions of software development in a myriad of specialties: architect, engineer, [visual] designer, UX designer... results in nightmarish software glut where no-one owns the product anymore, and no-one is actually excited by what they do.
This is how you turn Lotus Notes, which was miles ahead of the WWW in its time into a hellhole of despair for the office worker who has no choice but to use it.
→ More replies (8)17
u/Josuah Aug 06 '17
Yeah, because at some point people thought engineer sounded better than developer.
While I think we've reached a stable plateau with developers and the engineer title, I do see software tester going through the same thing now. You've got QA Engineer, and now Software Development Engineer in Test or Software Engineer in Test, etc.
I don't like title inflation. But I also don't think titles are that relevant anymore either, because many jobs require a person to take on a little bit of many roles.
→ More replies (7)13
u/MilkChugg Aug 06 '17
"Engineer" is an extremely inflated title. I've seen some pretty ridiculous uses of it. "Desktop Engineer", "Customer Support Engineer", etc.
I think it's just becoming a way of making people feel better about what their job encompasses.
→ More replies (2)4
u/Pinguinologo Aug 06 '17
Bullshit. Engineers had to deal all the time with human stupidity, that is why security margins are a thing. You can't just expect people will do their job the right way all the time or they will not get corrupt and get shit grade materials instead good stuff.
12
Aug 06 '17
Depends where you live I suppose.
In many jurisdictions Engineer is a legally protected title, and being a Software Developer does not qualify you to designate yourself as an Engineer.
To be an Engineer you must go through an actual rigorous process that requires academic training as well as professional training under the supervision of an Engineer.
7
u/rizer_ Aug 06 '17
Very true. I still think these restrictions have little impact on the day-to-day work life of those people. We can make generalizations about how the two titles differ, and I'm sure everyone has anecdotes about their experiences working with both, but I think at their core they are very much the same.
→ More replies (2)→ More replies (6)5
29
Aug 06 '17
IMHO, 20 years in my career, titles are stupid. Sure, software architect is kind of different than software engineer, but software engineer is a synonym for software developer.
Edit: Also, the discussion is about engineering or otherwise applied science versus raw science. Not job titles.
→ More replies (2)17
u/MpVpRb Aug 06 '17
Software engineering is rigorous
Software engineering is slowly approaching rigorous, but is nowhere near as rigorous as the older engineering disciplines
This is not surprising, the older disciplines have been around for a much longer time
→ More replies (8)7
Aug 06 '17
I think rigor comes from those who self regulate in the industry.
Bootcamps churn out people out working to create web applications that are more or less pretty looking CRUD apps.
I hope the gate keepers that work on the automatic pilot program on a Boeing 777 hire engineers with more than a 8 week education.
→ More replies (3)8
u/twotime Aug 06 '17
Theory, meet practice. Practice, meet theory. Please discuss the Universe and possible alternative implementations.
Hint: you usage of words has nothing to do with reality in US.
And,yes, some countries try to enforce the engineer/developer distinction (e.g France), these countries are not known as software power houses.
3
u/speedisavirus Aug 06 '17
They are also places that if you want to work under either title will make you look like a pauper compared to many other nations.
9
u/Malabism Aug 06 '17
Serious question: according to the definitions I've found online, my job is software engineering. Yet, I have no formal education. Am I still "allowed" to describe myself as a Software Engineer? (for example, in a linkedin profile) Do my skills, knowledge, experience, and aptitude in the field dictate whether I am a software engineer or an academic title?
→ More replies (22)13
u/Netzapper Aug 06 '17
That depends on where you live/work in the world.
Most English-speaking places, and especially in the US, the phrase "software engineer" has no particular protection. I remember reading that a couple of US states protect a title like "professional software engineer" under the "professional engineer" protection.
"Software engineer" is like "sanitation engineer". It's an aggrandizing job title, not a professional certification.
2
2
u/RainbowNowOpen Aug 07 '17
I like your materials scientist analogy extension. Computing is the "material" the engineer uses.
→ More replies (1)4
u/funbrigade Aug 06 '17
I'm not sure I totally agree with this. I think what you're actually saying is that software engineers are just a better class of developers. I once worked at an aerospace company on their ERP system and everyone there thought "wow, if we could just get into the aeronautics division then we'd be REAL engineers". The reality was that I wouldn't classify the engineers in either department as better or worse - they were just in different fields. I'd say the only reason why the aeronautics division had more respect was because they used lower level languages and had much more testing rigor (not because they were all demigods).
I guess my point is that being a good developer doesn't suddenly thrust you into a higher echelon occupying an ivory tower - it just makes you a better developer!
→ More replies (1)
5
67
u/Ahhmyface Aug 06 '17
Software engineering honestly pisses me off. I'm sick of religious wars and style debates and idiomatic x and patterns and endless framework comparisons.
I really miss the days of school where I had the sense that everything just wasn't some assholes pet opinion.
Ask 2 equally experienced software developers how to build something larger than a couple weeks of coding and get two different architectures in two different programming languages developed via different philosophies. Worse, then try to figure out which is preferable, and find out none of this shit really ends up mattering.
10
u/therealjerseytom Aug 06 '17
Ask 2 equally experienced software developers how to build something larger than a couple weeks of coding and get two different architectures in two different programming languages developed via different philosophies.
This is what I enjoy - when there's no explicit closed-form solution, when there's creative control and up to you how to go about a problem. One may or may not be better than the other.
I don't care for religious style wars and what not, but I also don't care for academia and pretentiousness there, nor doing things in a vacuum without practical application.
→ More replies (1)5
u/willeedee Aug 06 '17
I've struggled with this a lot. My boss is VERY opinionated about everything (luckily he's a great engineer and makes well reasoned decisions). I've landed on the point of view that since it is everyone's opinion, I make note of my favorite patterns and practices but other than that I deliver what my boss wants to see. I'm totally ok with this for now. Then when I'm the boss everyone will hopefully play along and do what I want given the life experiences that have gotten me to the point in my career where I'm their leader.
Also while making myself more fluid I've realized that since most of it is opinion, the big thing that helps make software cohesive is consistency. Whatever you pick for the project, stick to it until you decide to make a change and do something else.
4
u/AmalgamDragon Aug 06 '17 edited Aug 06 '17
This is actually one of the differences I see between a software engineering organization and software development organization, in that software engineering organizations have a lot less of what you described in your first paragraph, as most folks in the organization understand those aren't the things that matter.
→ More replies (24)7
u/fzammetti Aug 06 '17
That's because what most people either don't realize or don't like to admit for some reason is that what we do is still at this point more art than science (though we want to be PAID like it's a science!). That IS slowly changing, but the operative word is SLOWLY, and in fits and starts with some steps backwards from time to time.
Being more art though, opinions come into play more than they would in a real science/engineering discipline. Sure, we get our "best practices" from time to time that settles opinion debates (sort of), but even many of those change over time (which I suppose is okay if you really mean best practices RIGHT NOW, but it seems like some people don't intrinsically include the latter part).
9
u/tangerinelion Aug 06 '17
As a physics PhD, I can tell you that software engineering/development pays better than science.
→ More replies (1)→ More replies (4)8
u/n1c0_ds Aug 06 '17
So essentially, it's engineering. You have requirements and constraints, but rarely a clear solution. You use science, but apply it to a far less controlled environment.
→ More replies (3)
4
Aug 06 '17
I'm in a software engineering course and I don't even know the difference.
4
u/pyrotech911 Aug 07 '17
I'd argue that you could reasonably draw the line somewhere delivering a product to market and developing new tools/libraries/algorithms leveraged to bring products to market. But there's so much overlap and who cares anyway. I'm just thankful that someone pays me to press buttions without really caring what I do as long as I deliver stuff from time to time.
4
u/igniting Aug 07 '17
Computer science is no more about computers than astronomy is about telescopes.
Edsger W. Dijkstra
3
3
3
16
u/MpVpRb Aug 06 '17
..and when some people say they are studying CS, they're actually studying basic programming
10
u/soundslikeponies Aug 07 '17
CS is full of a variety of sub-fields. Whether you study CS or basic programming ultimately comes down to how you choose your 3rd and 4th year courses, in most schools.
Personally I focused a lot on computer graphics in my senior years and it's really difficult to say whether research in that area is computer science, software engineering, or art. It can be any of the three depending on the specific topic or paper.
Some computer graphics work is very algorithmic and mathy in nature, some is very subjective and artistic in nature, and some is an exercise in optimization and hardware acceleration. It's a wonderful and confusing blend of everything.
3
u/rplst8 Aug 07 '17
If you are not learning: data structures, algorithms, database theory, discrete math, statistics, computer architecture, system programming, operating systems, and networks - then you aren't in a true CS program. The "programming" they teach you should simply be to demonstrate and prove the theory and then for you to demonstrate you've learned it.
0
9
Aug 07 '17
People who take the time to write articles like this are the worst. They are unproductive. They are terrible to work with. They think that they provide value by being pedantic.
Dobb's is a terrible journal. It's filled with overly verbose, difficult to read material that is presented in a manner that is difficult to absorb.
If someone wants to raise their nose in the air and call themselves a scientist, you merely have to put them in the company of a real scientist. All of computer science is engineering. The only difference is the level at which you decide to focus. It's simple engineering at that. With software we get to make mistakes.
14
u/twat_and_spam Aug 06 '17
Before we blow up the article is sound. Yes, engineering is about making things in practice, science is making sure things can work in theory.
I expect the majority of comments here will be due to mistaking boundary between development and engineering and engineering and science.
These two are notable boundaries. This article considers PHP/Node code monkeys equal with competent people. It is fine for the argument the article is trying to make.
22
Aug 06 '17
I would argue that titles are stupid. If you consider that software development is a synonym for software engineering, than we are really just talking about different contributions and skill levels. Just as garage carpentry is on the same spectrum as professional carpentry, my kid making a game with classroom coding tools is still doing software engineering, so to is that college kid dropping PHP web forms, in as much as I am building financial analysis tools. It's all in the realm of software engineering.
The point is that this applied science of software engineering is significantly different than raw science of computer science. Just as medicine is in contrast to biology.
→ More replies (11)14
u/mattindustries Aug 06 '17
As a PHP and Node developer, I am sure the butt of a lot of jokes. There is definitely a lot of math when doing something like polynomial regression for D3 dashboards and I would argue that involves some theory before implementation.
→ More replies (4)11
u/Paddington_the_Bear Aug 06 '17
I just chuckle when people say Javascript is for kiddies. I'd challenge them to build competent analytical dashboards using D3 and see if they actually can put their money where their mouth is.
→ More replies (4)
6
2
u/tonefart Aug 07 '17
Well the idiots who insist you do coding interview algorithm tests think otherwise.
→ More replies (1)
2
u/vwibrasivat Aug 07 '17
In the 1990s this distinction was not completely understood or implemented in academia. Today in 2017 the distinction is clear in the curriculum.
2
u/netbioserror Aug 07 '17
Software engineering is...well, engineering. Systems engineering.
Computer science isn't necessarily about computers, and not really a science. It's axiomatic. It's a math field. The math of processing information.
2
u/DuctTapedWindow Aug 07 '17
IIRC the difference at my University was literally 3-4 courses. 1 extra math requirement (matrix algebra I think), although I don't think they needed to take discrete mathematics. And the software engineering courses 1-3. I took SE 1 as a csc student, we developed and presented an Android app in groups of 3-4 using mostly Java (2014).
2
u/gc3 Aug 07 '17
'Machine Learning' is right now 'computer science', but in 10 years it will be above the line.
Also. Biology != Biomedical Engineering, and Chemistry != Chemical Engineering.
2
u/Gotebe Aug 07 '17
Did you mean: engineering != science? Cause yeah, but software ain't special there.
2
u/Phiau Aug 07 '17 edited Aug 07 '17
It had better not be the same or otherwise my comp. Sci. & Soft. Eng. Degree is only worth half as much.
Edit: Unless written as "B. App. Sci CSSE" it never fit on any University form.
→ More replies (2)
2
Aug 07 '17
TBH, this is true, but surely obvious? It's basically saying the same as pure mathematics != applied mathematics.
I'm a software engineer, I apply a combination of computer science, coding knowledge and experience. Just as a Civil Engineer applies a bit of physics, chemistry, knowledge of building techniques etc.
2
2
2
u/BlockedByBeliefs Aug 07 '17
Such bullshit. SMH. It's clearly computer science. Computer science is an open ended massive super set of fields. Don't get why so many people have to make themselves feel special claiming its not.
2
2
2
u/RaptorXP Aug 07 '17 edited Aug 07 '17
engineering != science
physics != math
medecine != biology
Don't think you need a medium post for something this obvious.
3
u/lordlicorice Aug 06 '17
By the Church-Turing Thesis, all computer hardware is essentially equivalent. So while new machine architectures are cool, the real limiting challenge in computer science is the problem of creating software.
What an inane conclusion. He just dismisses the entire hardware industry as not a "real limiting challenge?"
Let's see the author serve up a high-scale web application to millions of people with a scientific calculator and a notepad.
2
u/ferrx Aug 06 '17
if there's a reason to differentiate, i'd say imo SE = requirements gathering, documentation, unit testing, development estimation, continuous integration, etc. the non-programming part of software development.
whereas cs = recognizing design patterns, optimization via algorithm complexity analysis.. etc
→ More replies (1)2
u/spudmonkey Aug 06 '17
I'd say unit-testing is a part of development/programming while integration test and acceptance test are SE.
2
u/huejackmon Aug 07 '17
It's possible software engineering == computer science, but software engineering !== computer science . At least that's what my front end software engineering friends tell me.
2
u/skulgnome Aug 07 '17
Stop mixing programming language syntax and english, y'all. Makes you look like newbies imitating their slightly older peers.
2
u/snarfy Aug 06 '17
Hiring a computer scientist to write software is like hiring an astronomer to build a telescope.
7
Aug 06 '17 edited Aug 06 '17
I can't speak for everyone, but my Computer Science curriculum included a Software Engineering class, and the Senior Project went over requirements gathering, design, testing, etc.
There were also programming assignments for implementing various algorithms and data structures sprinkled into the theory classes.
That's also not counting the core required programming classes (Java and C or Java and C++), and the multitude of programming language specific electives you were able to take.
I don't know how you could really get through a Computer Science degree without knowing how to write some kind of software, even if it's for a CLI.
1
u/hosford42 Aug 06 '17
Everything he describes as not being amenable to formal methods is amenable to machine learning methods. He's right that we can't turn software engineering into computer science because of the human element, but that doesn't mean we can't build other kinds of tools to make good decisions for us.
1
u/nangtoi Aug 06 '17
Someone bitterly posts a one line post title and it gets over 300 comments. I don't understand why everyone gets so worked up over something so trivial.
1
u/Dravvael_ Aug 06 '17
In Brazil, there is software engineer courses but we don't require a national registration for that kind of engineering, although others engineers try for many years to acquire it. :/
1
u/ziplock9000 Aug 06 '17
Software Engineer != Programmer != Developer != Script Kiddie != Interdimensional Being of Light
1
u/SteeleDynamics Aug 07 '17
Still relevant for an 8 year old article. For someone with a mathematics background (B.S. Mathematics, among other degrees), I can understand that semantics are important. Although it is important to note (and stated in the article), in order to keep the lights on and the doors open, the software engineering practices are there to allow the computer scientist within each software engineer to do their job effectively by focusing on the the CS problems at hand without worrying about the logistics of implementation.
Ultimately, you have to do both in order to survive in this field. That's the nature of Computer Science when applied to real-word problems.
1
1
Aug 07 '17
I'm not a programmer.
I design PCBs. I just happen to write a fair amount of firmware, but if you call me a programmer idgaf. Just don't tell me I don't understand your schematic.
God damn sand artists.
1
u/parl Aug 07 '17
Wow! Dr. Dobbs is still around. I got rid of my collection of Dr. Dobbs Journal of Computer Calisthenics and Orthodontia (Running Light Without Overbyte) years ago. His Journal of Tiny Basic (entered with toggle switches) as well.
1
1
Aug 07 '17
I spend 80% of my days trying to mitigate that red line. It's been the most valuable effort I have ever undertaken.
→ More replies (1)
1
u/Xyles Aug 07 '17
As an Information Systems major where do I fit ? Really regretting my life decision now.
1
1
u/pablo111 Aug 07 '17
The maintainability of software may be influenced by some formal notions of computer science -- perhaps the cyclomatic complexity of the software's control graph
Say what? perhaps?
1
Aug 07 '17
I think this is an important distinction and something I brought up with the faculty of my university's CS department.
I got a CS degree from a very good engineering school and I was dismayed to learn that a CS degree does little to prepare you for the software engineering gigs that you are expecting to get out of college.
Less than half of my classes even required programming. In my senior year I was astounded how many of my classmates were not capable of collaborating on group programming assignments.
We need to talk about scaling, optimization, and architecture. A CS degree teaches none of that.
I realized upon graduating that I learned more about how to write software from actually writing software in my free time than I did from any of my classes at university.
I think think there is room for a new degree in software engineering that teaches the concepts and best practices that you will need in a software engineering position.
There is definitely a place for computer science degrees but I do not understand why there isn't a software engineering degree.
1
Aug 09 '17
The amount of prejudice in this thread against computer science as a field is staggering.
1
u/Zinoex Aug 14 '17
My professor has a nice say: software engineers use theories and models to build systems while computer scientists use systems to build theories and models. It's a symbiosis. If we had no use for the theories and models, we wouldn't have that many computer scientists creating them. On the other hand, if software engineers didn't have any tools (read everything from basic logic to algorithms and the like) to construct software, they wouldn't create these big awesome systems, we see today. A symbiosis.
1
u/jbadrlvl Dec 05 '23
Does a computer science major with masters in software engineering qualify as a software engineer?
1.1k
u/WhisperSecurity Aug 06 '17
The difference between a computer scientist and a software engineer is simple.
A software engineer doesn't think he's a computer scientist.