Ask Slashdot: Developer Or Software Engineer? Can It Influence Your Work?
ctrahey writes "Many of us disregard the impact of our titles on various aspects of our lives, both professional and otherwise. Perhaps it's appropriate to ask two questions about the difference between a couple titles familiar to the Slashdot community: Developer vs Software Engineer. What are the factors to consider in the appropriate use of the titles? And (more interesting to me), what influence might the use of these titles have on the written code? Have you observed a difference in attitudes, priorities, or outlooks in talent as a corollary to their titles?"
Unless you have a degree in Software Engineering, it's both misleading and might be illegal to use the "Software Engineer" title in your country.
I'm officially titled Software Engineer at work, but will probably have to change to Developer if my state's "Engineers must be licensed" push goes through.
A programmer (developer?) writes code that hopefully works. A software engineer writes code that is designed to work.
I like to just say programmer.
Programmer.
Programmer.
Programmer.
I develop software and engineer it. I'd be unable to do either without the other.
Just like saying, uhm, first post?
Software engineers make more $ than developers or programmers
source:
http://www.modis.com/clients/salary-guide/
Easy.... Use software engineer. It sounds richer so gets more babes ;)
Do you speak it?
I remember we discussed this in University. From what I remember, to be an engineer, you typically have to be registered in your country. To do so, you have to pass a test, including a piece on ethics. It makes sense - you want to make sure the guy you hire to build a bridge knows what he's doing and has the ethics to do it right. Therefore, I'm not sure calling yourself a software engineer is even legal in all countries.
Also makes me wonder, if bridge builders or aerospace engineers require an ethics test, shouldn't the guy who writes the software that guides the rocket also require a similar test?
I am looking forward to seeing how /. parses this question...I'm sure the answers will be beneficial.
As the for question itself, it is posed in a very superficial context. They use a lot of marketing buzzwords and quasi-coder jargon.
They also assume that everyone agrees that those two titles are the only two titles the people who write code have. I know of journalists, animators, artists, scientists and accountants who code **regularly** on a myriad of languages.
Coding is what is in question here. I *love* the idea of *finally* deciding on definitions for these terms across the industry. I do *not* think the context of the question is intellectually rigorous enough to provide that answer...good thought question though!
Thank you Dave Raggett
Software Engineer: can build a flexible, properly designed application architecture and has grown past the schooled "everything fits within some methodology X" phase (i.e. can think outside the box).
Developer: will usually be able to make something that works, and even write quite nice code when given good direction, but can create a mess when given a chance to be a cowboy coder.
It is an interesting question. From an HR standpoint, job titles aren't nearly as important as job duties.
In other words, HR often gives out job titles instead of raises, because the work being done is more important (from a business standpoint) than what someone is going to write on their resume.
- Nec Impar Pluribus, or so I'm told.
Of course, many programmers are somewhere in the middle, usually leaning more towards "engineering" when the deadline is months away and "developing" when the deadline is days away.
Palm trees and 8
I was a "Senior Software Engineer" before I got a promotion, now I'm a "Lead Developer". Aside from providing guidance to other engineers I still do the same job. Personally, I wanted my new title to be "Mr. Manager" instead, but no one seemed to like that idea :(. Seriously, I've worked in states where it's illegal to give someone without an engineering degree the title "Engineer", but I've worked with engineers who didn't finish college and found them every bit as good (sometimes much better) than the ones who didn't.
It doesn't make sense that a software engineer would need a degree in computer science. They are two different domains.
Maybe software tends to be so buggy because it isn't always engineered to be reliable. It's cobbled together in the lab, and if it works in the lab, the assumption is that it will work in the field.
Any sufficiently unpopular but cohesive argument is indistinguishable from trolling.
It would only be illegal if there was a public certification. There is no legislative authority in college program accreditation, or in determining titles. As long as someone is not misrepresenting their resume, there is nothing illegal with any title. I could call an employee "King of England" if I wanted to.
I would argue that a Software Engineer's role encompasses that of a Developer, as they are generally can also be expected to handle design (high and low level), testing (functional, unit, system), along with the writing of code. A Developer tends to fit the image of the guy with the keyboard cranking out code - software engineering is so much more than that. In fact, it is estimated that a Software Engineer will only spend 20% of the time actually writing code - due to the other responsibilities.
"Software is the difference between hardware and reality"
Software Engineer, Dev, Coder, Programmer, and Computer Scientist all have been ruined by idiots. Computer Engineering is the only one with respect left.
Having been officially both a (senior) software developer and software engineer (at the same time) I prefer a different term entirely: Software Development Craftmaster (and the related Software Development Journey(wo)man and Software Development Apprentice).
I feel it more accurately reflects what I do. There are elements of engineering (in particular the discipline which takes years to develop) combined with high levels of creativity.
Just wish I could claim it legally, but there's no Software Development guild here.
Here in Canada, you have to be a licensed P.Eng to call yourself a software engineer. Even though I have an MSc from an EECS program, I would have to satisfy all the academic requirements of an undergrad engineer, work as a supervised engineer-in-training for between 2-4 years and pass a professional practice exam to qualify.
"Have you observed a difference in attitudes, priorities, or outlooks in talent as a corollary to their titles?"
No. We disregard them.
Whenever I hear the engineering school/degree types get up in arms over it, it just conjurers up all those "realtor" commercials. Developers and Engineers have exactly the same duties. The "lower tier" I would call a coder or programmer -- people who can implement the system, but who can't be trusted to properly design it, which is almost everyone these days, or so it feels like.
Women need to like the job of the guy they’re with. If they don’t like the job, they don’t like the guy. Men know this. Which is why we make up the phony, bogus names for the jobs that we have. “Well, right now, I’m the regional management supervisor. I’m in development, research, consulting...”
Men on the other hand – if they are physically attracted to a woman – are not that concerned with her job. Are we? Men don’t really care. Men’ll just go, “Really? Slaughterhouse? Is that where you work? That sounds interesting. So whaddaya got a big cleaver there? You’re just lopping their heads off? That sounds great! Listen, why don’t you shower up, and we’ll get some burgers and catch a movie.”
Are you licensed by the state? Does your profession have a code of conduct? Are there standardized tests for entering the profession? Is there an accepted body of knowledge?
Sadly, the answer is no to all of these. The person who cuts your hair has more certification than the person who writes pacemaker software.
From TFA in big fucking letters:
Metal Toad Media is a digital strategy agency.
So, what the fuck is a "digital strategy agency"?
Outside of the countries where "Software Engineer" actually has a legal meaning and requirements to claim it (while "Developer", "Programmer", or whatever doesn't), the difference is largely that one sounds better than the other. People like to use "Software Engineer" even if they're in fact nothing of the sort, due to the connotation that comes with it.
It's not hard to find people calling themselves Software Engineers that aren't doing anything resembling engineering, just like it's not hard to find people calling themselves Developers that are really doing software engineering. In the end if you're able to do the job well, nobody gives a damn what you're calling yourself.
-- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
I don't think I could take a person seriously if they called themselves a software engineer. I'm not even sure if you can call yourself an engineer in some places legally without having the proper certification.
Job titles are just labels, but there really is a big difference between software developers and software engineers. Apparently, anyone who can learn a few syntax rules and become familiar with some cutting edge tools that someone else wrote can be a software developer. Software engineering is much, much more. To the extent that, to quote a Harley-Davidson tee-shirt, "If I have to explain it to you, you wouldn't understand."
A (Chartered) Engineer is someone trusted by society and the law to get things right using state-of-the-art scientific knowledge. If their solution fails due to not using the "best practise" known at the time then the Engineer responsible is liable for a charge of professional negligence. Eg, A bridge collapses killing people, and it is found that the welding technique chosen by the engineer responsible for the design is outdated and known to be dangerous. That engineer faces a prison sentence for negligence.
The key difference is that an Engineer is held to be a professional, much like a Medical Doctor. They are trusted. Compare and contrast with, say, a Nurse, or a Mechanic. You would trust a mechanic to fix a car, but not to design a roadworthy model.
A professional is someone who is part of a legally recognized professional body which is responsible for setting the relevant standard of work, and who can kick out any member displaying incompetence. The Law generally requires one to hold a license from such a body in order to practise, and getting one always requires proving competencies to the body's requirements.
Ergo "IT Professional" is an oxymoron - there is no such thing. (apart from the Journal itself). Anyone can do IT, no license is required. In fact the only relevant body for setting such licensing standards would be the existing Electrical Engineering bodies.
Yes, the title "Engineer" is getting quite diffuse these days, as is the title "Doctor". But so long as the law makes a distinction, then common language will just have to bow before the law. Remember, ignorance of the law is usually not a valid defense. YMMV, it probably depends where you live, and what your Law says.
The whole issue is complicated by the fact that sales of software licenses have managed to sidestep the most basic consumer protection laws, such that "buyer beware" is the way things are. If a PC crashes, then who does the owner blame? Themselves, for not doing something correctly? The CPU vendor? The motherboard vendor? No, probably whoever they paid for the thing, most likely Dell, Apple or whichever shop they brought it from.
Shouldn't a certain number of crashes just be expected? Yes, BUT: Digital Computers allow for no entropy increase, therefore would be immune to the second law of thermodynamics. Except for physical damage, manufacturing tolerance, radiation damage, and operator error. (most notably, programmer error). Generally the first two are caught early, long before the final customer sees the device, and the third only really applies if the computer is going into space or is to be deployed near a strong radiation source.
The last is really a combination of the user and the programmer. The reason things are the way they are, is that preventing bugs before they surface is essentially impossible. And so computer engineers work down in the details - making only subsystems which they can test to their satisfaction. (eg, your car, your microwave oven, etc - how often do they "crash"? )
So, if you consider yourself a "software engineer", then you'd better be determined to use the most recent techniques, and only the best tools, and you'd better be prepared to take responsibility for any fault in your product... otherwise you're being fraudulent. If you're not prepared to put the effort in to use the very best techniques, then just call yourself a "developer" and be done with it.
Is there such a thing? I deal with PEs nearly everyday in the construction field it took them many years to get that license. As more software is on mission critical system like self-driving cars, automated plants, and etc there should be some licensing board. This will insure job is done right because engineers will held liable for their own work.
I have a Bachelor of Science Software Engineering degree. The school I went to is an engineering school and they also had electrical and computer engineering degrees. Also, with the jobs I have had, I have been on teams with electrical engineers, computer engineers, and mechanical engineers. So I feel pretty comfortable with the software engineering title.
I don't think all programming is software engineering. Programming is often done in IT, hobbyist, mathematic, and scientific contexts. I don't have some strict criteria for what is software engineering -- it generally is pretty obvious to me. If a programming job isn't obviously engineering, it is likely to just be programming in a different context.
There is nothing bad about being called a programmer or developer. Software engineer isn't somehow higher than those titles (just like software architect isn't either). It is just using programming in an engineering context. That is just my perspective, HR departments and the general population may have other ideas.
Both places I've worked in my 11 years as a professional didn't really distinguish. I have a Computer Science and Engineering degree. I write and design software. I'm in the research and development arm (or the Engineering arm) of the company. It's several ways to say one thing.
Yes, some distinctions can be drawn, like whether you interface with customers, who does the architecture or design, etc., but in general the people I work with are all over the software life cycle, from beginning to end. We do development (of software) and the official job title has always had "Engineer" and sometimes "Development" or "Software" in it.
Terrorist, bomb, al Qaeda, nuclear, yellowcake, kill, assassinate. Carnivore is dead... long live Echelon.
In my opinion, those are just titles my friend and I see no reasons why we should ever consider them anything more.
"Sockets are the standard networking API, also useful for stopping your eyes from falling onto your cheeks" zeromq.org
You could just call yourself "wizard". Like 90% of the population treats either title differently than "wizard" anyway.
Whether I call myself a developer or software engineer will not affect my income. I'm old school (over 40) and I think that people building systems as long as I have tend not to care about titles. I'm not even sure there was a "software engineer" title when I started programming.
What I can say is that people that are coming out of college today calling themselves either tend to not have a clue what they are doing. (Of course there are exceptions, but the truly good people are hard to find.) And don't forget the recent title of "Software (or Data) Architect..." This idiots conceptualize a system, charge a ton of money, and have others build it. When it fails, they blame the developers and/or run to another job.
Then there are "Front End Developers," which are nothing more than a graphic/web designer that knows how to add some horribly written jQuery to a site and changed their name to developer in order to get paid more.
Essentially this whole debate is really about one huge issue: Large Companies are trying to turn the entire development process into something that can be done like an assembly line. They are chopping it up into little pieces so that anyone can perform the same monotonous task. The smaller your piece is, the more people that can focus on that specific area, the more people that can do it, the less you are worth. The less the companies pay, the happier they become. The more pieces there are, the more titles.
Unfortunately, (or fortunately if you really know what you are doing) the development process is not easy to break down into pieces. While certain pieces can be farmed out, the overall system will work best when one person knows how to build the system as a whole and can take the project from the requirements to a working application. (And companies rarely want to pay for these good people.)
Looking for a job?
Want your resume written professionally?
DON'T USE TUNAREZ!!!
I've always broken it down into those two groups. People who write code tend to either integrate and maintain existing code (mechanic), or build solutions from scratch (engineer). Both write code, but I find very few people who call themselves software professionals are good at starting from a blank sheet.
If I had some plant that was failing at 3:15am and costing me a fortune, I know which I would prefer to have on site.
-- In the beginning was the WORD, and the WORD was UNSIGNED, and the main(){} was without form and void...
What if you just ramble on about .Net and quibble over which IDE is better, all the while saying words like "Scrum" and "Agile"?
Sure you'll get a job, but you won't ever actually produce anything.
I want to delete my account but Slashdot doesn't allow it.
If professional programmers risk revocation of their right to program in their state if injury or damage to property occurs due to poor practice, then by all means call them engineers and require them to meet state-mandated licensure requirements. ;-)
If the field of programming practiced is unlikely to cause injury or damage to property, require only clients' preferred certifications.
A skilled programmer in either position should be paid well regardless of title.
If programming was easy women and children would be doing it
I'll be your candy shop of infinite deliciousity if you'll be my discotheque of endless rump-shaking.
In my experience, the difference is merely Company A calls it one thing and Company B calls it another. I have a degree in Computer Engineering, which required taking all but 3 of the required courses to be an electrical engineer, as well as all but 3 of the courses required to get a computer science degree (2 of which I took for fun anyway). However, I've worked with people who went to other schools where Computer Engineering was much less technical, closer to what I've seen called Information Systems elsewhere. Without more consistency in degree programs, who can use what title is irrelevant.
a programmer will code to where it works. an engineer will code to where it works to its best performance(refactoring, algorithm analysis - big theta, etc). will come up with a mathematical solution to bottlenecks.
Here's how I've observed some terms used:
- Coder: a person who knows how to bang out some software code; often used disparragingly. cf "Code Monkey"
- Programmer: Any person who makes software for a living. Used mostly when speaking with non-technical people, because they immediately understand what it means.
- Developer: Neutral term for a person who makes software.
- Software Engineer: A developer who favors a heavily-planned approach to making software.
- Software Architect: Someone who designs applications or systems. May be "hands on" and themselves write significant parts of the application; or maybe more of a management role.
Most of the positions I've held had the official title of "Software Engineer" or "Senior Software Engineer". It implies a certain "rigor" relative to "Software Developer". That said, the implication is frequently extremely illusory. I've never done anything approaching "engineering" in these positions and often I'm not even that "senior" with respect to the technologies I'm working with. If you can write your own title, though, I'd go with "Software Engineer" if only because it sounds better and might get you more looks when applying for jobs in the future.
I am a developer when telling other developers what I do.
I am a Software Engineer when giving my role to other non-developers.
Realistically, the two are interchangeable, and snobbish people tend to use "Software Engineer" when talking with other developers (or when on interviews).
Software Development as an industry is not really in a place you can really have "Software Engineers", at least not in ways that any real company besides NASA would use them as engineers.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Because it pisses off the stick-up-their-ass Professional Engineers who think they own the word, which existed long before their little guilds got formed. The original engineers were military engineers. Next came the general meaning of the term, then the train drivers and the steam engine operators. The PEs are johnny come latelies from the 20th century -- and where Professional Engineering starts, innovation ends.
I believe the only state in the US which demands a P.E. from a Software Engineer is Texas. The utterly "reasonable" requirements? A C.S., engineering, or other degree accepted by their board, 16 years experience, references from 9 people including 5 P.E.s, and a bunch of other educational credentials. Screw that.
Large Companies are trying to turn the entire development process into something that can be done like an assembly line. They are chopping it up into little pieces so that anyone can perform the same monotonous task.
The title software engineer may make a potential difference to HR in many corporations when applying for a position. Like a ticket presented at the door, performance matters. By some accounts, the term is presently an oxymoron, in that true standards that can be leveraged, as in all true engineering disciplines, do not yet exist for software on any level. The pace of change favors the true developer who can adapt and innovate on a project=by-project basis. All such projects have a lifetime. All systems have an end of life.
In the 1990's programmer salary ceilings were pushing the enverlope.
So, the many companies opened up a new category: "Software Engineer".
In the period 2005-present, the new high salary/rate title is Architect.
This was probably partly done because, IMHO, "Engineer" is misused in most corporate settings and "Architect" is more suiting but this also allowed salaries to be somewhat increased for inflation.
Unless there is a PE exam (http://ncees.org/About_NCEES/News/News_Pages/New_PE_Software_exam.php) for software, it's all just a title.
There is a reason people laugh and mock people who call themselves Software Engineers outside of the IT World. They are fluff titles. Even at its best, Computers Engineering is just a subset of Electrical Engineering focused on the designs of hardware from the CPU/GPU/DSP, etc., and their interaction with Software.
Whether it is Mechanical, Electrical, Chemical, Biomechanical [Applied ME with Biology], Civil, Structural, Materials Science Engineering disciplines are grounded in mutable laws of engineering extended from the laws of Physics, Chemistry, Biology, through all applicable languages of Mathematics Disciplines.
Bill Joy has long wished for Software Engineering to become factual by taking cues from Mechanical Engineering [though since he never has been a Mechanical Engineer I doubt he realizes how impractical that wish will ever be], due to the innate Art behind Computer Programming, Computer Architecture, Computer Software Design, etc.
In order for Software Engineering to be a recognized Engineering Discipline via ABET one would expect them to take Thermodynamics/Thermodynamic Systems, Dynamic Systems, Materials Science Engineering, Finite Element Analysis and more where one applies the various electives to writing Software applications to apply said disciplines--the exact reality all Engineering disciplines due for zero credit or recognition.
You want an Engineering Degree, then get one. You want a Computer Science degree and it's several specialties than get one. Stop pretending they are equivalent. None of my former CS majors ever compared our CS degree curriculum to my Mechanical Engineering curriculum. Mechanical Engineering is a very broad and deep curriculum now with several areas including Tribology, MEMS, Robotics [Applied Kinematics with EE/ME control systems], along with their many other tracks in Machine Design, Fracture Mechanics, Dynamic Systems, Heat Transfer Disciplines, etc].
Stop calling yourselves Software Engineers. You aren't designing solutions that adhere to Computer Science Laws. You are designing to Best Practices, Design Patterns, all centered around Semantics/Linguistics/Discrete mathematics, applied logic and other Art disciplines. Embrace the Art. Stop pawning yourselves off as Engineers.
The Engineer in Training Exam provided by every state in the United States is a comprehensive exam [8 hours] over your past 5 years that allows one to reduce the time it takes [under a Principle Engineer (Often mistaken as Professional Engineer)] to then qualify and apply to become a P.E., from 12 years under a P.E., licensed and bonded down to 4 years.
The lack of understanding the IT World has for the parent worlds of Engineering is staggering.
edit: Computers Engineering -> Computer Engineering. mutable laws -> immutable laws.
A programmer looks at all aspects of the problem, works with the users and designs and implements a solution to address the problem. A software engineer draws lots of diagrams that don't mean anything, manages a massively over complicated project that doesn't accomplish anything, and does lots of reports to management about the project that never actually address any of the issues. Some time later the project is cancelled. See the parable of the two programmers.
When building a bridge to take a 10 ton load, you better use 15 ton beams just in case one is under spec. When building a circuit to switch at 10 MHz, use components designed for 12 MHz just in case one is under spec. It's called "tolerances" and is the underpinning of all engineering, and is a great idea for those fields where once it is built the requirements generally stop changing.
Except in software engineering. Tolerances in software are called "fudge factors" or "heuristics", and they always result in unmaintainable spaghetti as requirements constantly change over time.
I use the term "Software Developer" for myself because I refuse to "engineer" software; i.e. build crap. My most recent contract involved fixing problems in embedded systems code written by an EE major. Total nightmare - no unit tests, no code comments to speak off, mysterious algorithms with no explanation as to where they came from, references to "see datasheet" for the component that was used three board revisions ago but not any more, and so on. The circuit? An absolutely beautiful example of balancing requirements and managing tolerances. But the code to run the circuit was rubbish that would get stamped "go back and do that again" by the code reviewers in any software development shop.
The ironic thing is that the term "Software Engineer" was coined to give developers the air of professionalism. Perhaps the engineers could learn something about professionalism from the developers instead? Like how to design a system that won't fail the minute the requirements change.
Calculus, Differential Equations, Strength of Materials, Thermodynamics, Electrodynamics, Mechanics, Circuit Theory, and other engineering disciplines.
To me, a programmer is anyone who just sits down and bangs out code, with no concern for architecture, coding standards, best practices, etc...
A Software Engineer is someone who plans, designs, follows best practices, coding standards, etc... They care about error handing, usability, reliability, and maintainability.
Visit the Arcade Restoration Workshop @ http://www.arcaderestoration.com
Ever since I called myself Code Ninja all the code I've written have been ultra compact, high performing, and bug free. Girls started to talk to me and my family invited me to dinner every week. It makes a huge difference. Try it.
"Software engineer" is a euphemism for "programmer", just like "sanitation engineer" is a euphemism for "janitor".
It has nothing to do with rigor or professional standards. It has to do with making your title look better. I'm a programmer and I'm glad to call myself that.
I'm not one, but I think that software engineers use formalized approaches (Requirements Elicitation, etc.) to not only solve immediate problems, but also recursively improve those processes so that they're always benefitting from what they've done in the past, making them more responsive and nimble.
Also, and this is just something I've noticed: I see a lot of people identifying themselves as "Java developers" or "C++ developers" or giving some other specific language(s) in their title. I don't remember offhand any software engineer doing this. I would expect software engineers to be conversant in multiple languages and frameworks, and be comfortable in learning new ones (or even creating their own as needed), so that they can pick the right tool for the job at hand.
Get off my launchpad!
While I think there's a lot of truth to the "It's just a title, call yourself whatever you want" comments herein, I think you've captured it correctly. The difference here is really one of skill sets and responsibility. As a hiring manager, if I want a software engineer, I'm looking for the well-rounded skill set to not only develop the system, but to consider all the various ramifications of system design, serviceability, performance, maintainability, virtualization, multi-tenancy, operating system choices, hardware and network impacts, etc. Not to mention a healthy respect for the roles of others, from UI designers to system and test engineers.
But if I'm looking to hire a developer, I'm looking for a different skills set - the ability to code (and code well - with proper documentation, structure, boundary checks, etc. by target deadlines) and be able to at least do the necessary unit testing of their own delivery for quality purposes.
Just like architectural firms have both architects (who can see the grand vision and make sure that the buildings have all the appropriate HVAC and electrical characteristics as well as meet the codes for hurricane and earthquake, but give the building its unique characteristics that attract tenants) and draftsman (who do the specific work to ensure the floor loads don't exceed the support bracing underneath, and figure out how to route plumbing and electrical to enable services while maintaining the desired aesthetics set by the architect), Software Engineers and Developers have their own specific value-adds.
But I'd be one very unhappy employer if a developer sold themselves as a software engineer, but couldn't deliver on the scope and breadth of knowledge implied by that title.
I'd like to be called Software Guru or Evangelist.
I make software. I have a degree in engineering. I call my job playing with computers.
***Rock Star***
I remember at one job I had to call up HR once and ask them what my title was. But it did gradually dawn on me that you don't want to be a title step lower than people who are equally or less skilled than you are. It does affect how others see you in the company and ultimately may affect your salary and promotion prospects, although I don't believe my own career has been derailed much by not caring.
I have a degree in electronics. In the UK. Unfortunately it doesn't get professional status as things like law do. Nobody cares what institution you are affiliated to. I am more a software person now - C++ and maybe c#. I'd prefer microcode to x86 assembler. Java seems to be getting worse than VB6. I say I play with computers for a living, or just I write software.
What was that about exams? http://ncees.org/About_NCEES/News/News_Pages/New_PE_Software_exam.php
It's a meaningless as "guru" or "architect" since it really has as little to do as engineering as building houses or running a cult.
I've had endless arguments here with "software engineers" that can't even grasp the high school level concept of polar co-ordinates (among other things expected of someone before they even enrol in a course), so whatever it is there is a million miles between it and any sort of engineering.
Call me a Simple Country Technician and we'll get along fine.
My dad, who works for IBM doing tech support for some sort of commercial warehousing software, is called a software engineer by IBM.
That's what I do. I wrote my first line of code in 1982 and I have the carpal tunnel to show it 30 years later. Now get the fuck off my lawn
No sooner do I get over one, then you put a better one right next to me. Bastards.
I tend to personally refer to myself as "programmer" or "software dev(eloper)", but it really depends on the employer. Some companies hire their devs as "programmer" or "programmer/analyst", some use "software developer" or even something like ".net developer", while others do use "software engineer". Some states do not allow the improper use of "engineer", while others do (my current one allows it, and my company refers to me as such). And then, there's also the can o' worms known as "software architect", which is high-falutin' synonym for "tech lead", IMO.
I'm just going to jump in here and mention that over the past dozen years - I have had the following 3 titles:
"software developer"
"software engineer"
"software designer"
3 companies. 3 titles. same degree. same job.
It's fairly arbitrary these days what the job titles actually mean, and is more just a matter of convention or something historical.
Developer says - "we don't really have to use this here, this here, and this here!".
Engineer says - "we have to use this here, this here, and this here!".
Thanks for all the feedback so far; I'm quite happy about the quality of this discussion. Avoiding for now the perhaps unavoidable consideration of legality, I'm interested in hearing about the influence the title decision might have on how the talent actually performs their work. To what degree does the choice influence the technical culture? How do the roles contrast when both are present on a team in cultural and technical terms where you work? If I'm being frank about the question, it goes like this: Will a young developer start to think about their work more robustly if I tell them that that we are grooming them for Software Engineering vs. Software Development?
I posted a response indicating how all the titles can be used interchangeably, but I wanted to also comment on what my experience with folks w/ different degrees has been. my background is mainly telecoms...
-electrical engineer - these guys design PCBs, FPGAs, hardware systems. they write some software, and are good with DSP algorithms and other stuff that is close to the hardware. would I trust these guys to write device drivers? maybe the better guys.. would I trust them to write a standalone DSP controller of some sort? absolutely! these guys are very good at what they do, but specialization can cause them to be ignorant in other areas.
-computer scientist - these guys have math or CS degrees. concerned with formal proofs and correctness, etc. I wouldn't necessarily trust these guys to layout a PCB, but maybe they've got enough experience to do an FPGA design... after all, that's just software, and these guys specialize in understanding software... any language. it's all the same to them. would I trust them writing drivers or operating systems or compilers? yes -- because they understand the theory and can extrapolate to whatever platform they are handed. writing mission critical stuff? they can tell you when what has been designed will or will not work, and can make guarantees on things. this seem pretty scientist-y.
-computer engineer - somewhere in between the other two.. maybe didn't dive as far into PCB design in their engineering education, and decided they'd be more comfortable with software. understands the tenants of engineering, and has spent their career engaged in software instead.. why didn't they become computer scientists? probably because they didn't like all the proofs and theoretical stuff (I know I didnt like it too much at the time, but I've since grown to appreciate it).. these guys are pretty hands on and can build practical working systems, but with reckless disregard for whether their algorithms will be able to execute in polynomial time or not. I'd consider this a best of both worlds, but at the same time a worst of both worlds. would trust these guys to write drivers and such, but I don't know whether I'd want them designing optimizing compilers, etc.
just my 3 cents... your mileage may vary...
as for web programmers -- aren't those the guys who flunked out of business school or something? ;)
...is Rock Star
is what I went with. Has a nice TLA.
Typically, they'll want a PE to sign off on your drawings for a building permit, for instance.
Or if you want to hang a shingle calling yourself an Engineer.
Of course, with the industrial exemption, it's whatever HR seems to think might be an engineer, which may not overlap with what the licensing authorities think.
(from a licensed PE, but because of HR, can't be an engineer at work, and has to be a technology specialist, because no "degree in a related field".. whose wife is a Poli Sci major and was a software engineer before she wound up managing software engineers)
In my area the jobs are looking for "software engineers" when they mean developers. To get past HR drones the resumes need to reflect this. They could call the role turbo monkey chicken designer and I would claim that title as well (provided I was qualified for it of course).
well IT sysadmin / network / desktop / work should be cut from 4 year degrees / CS and moved into apprenticeship / trade school like setting.
I'm a coder, I write code. Or call me a programmer, a developer, or software engineer (just don't call me Shirley)
They all mean the same thing. And no there is no "a programmer bangs out code, and a software engineer "designs" it first. They both do the same thing. A programmer writes code, which involves "engineering" it first. A software engineer also writes code, which involves "engineering" it first. There is no distinction, although some people like to think there is.
But really does it matter? If my boss wants to call me "master of the universe" then great, I still write code.
What it comes down to, when people ask what I do, I say "I am a programmer" or "I am a computer programmer." Pretty much everyone knows what that means. If I said 'I'm a developer' people thing I own land, and develop it. If I said "software engineer" people would think I drive trains or build bridges.
You write code, stop being so stuck up!
You don't need a degree to be a Railroad engineer
But you need to pass a test / get certified and re-certified every 2–3 years
and the career progression is one that starts as an assistant (brakeman), conductor and finally, engineer.
They are the same thing. Lot of job titles are software development engineer so that they get applicants who call themselves one or the other.
Better question is what constitutes a senior engineer...
Thats right bitches... if you work for a little shit company (LSC) your title is worthless.
Unless your sittin pretty in a large (well known) organization you should expect a future employer to ignore your previous title outright.
"Software Design God" is my preferred title.
Table-ized A.I.
http://www.youtube.com/watch?v=d_AP3SGMxxM
Table-ized A.I.
In order for Software Engineering to be a recognized Engineering Discipline via ABET one would expect them to take Thermodynamics/Thermodynamic Systems, Dynamic Systems, Materials Science Engineering, Finite Element Analysis and more where one applies the various electives to writing Software applications to apply said disciplines--the exact reality all Engineering disciplines due for zero credit or recognition.
There are Computer Engineering programs recognized as Engineering Discipline via ABET and their Engineering Accreditation Commission, which is different than programs accredited by ABET's Computing Accreditation Commission. These Computer Engineering programs can qualify for an EIT exam, but in practice, it's not done very often.
The big secret to computer science is that the degree doesn't help you get any experience for APPLIED computer science, so your proposition is invalid. Despite what I would have wished, two of your 3 sections were covered in my program at all. The network class was a single, very academic course. There's no fat to cut out of CS and into any apprenticeship. We actually need more of these put INTO cs programs or labeled properly into their own field. Actually, I think "CIS" programs have been doing that, but they're only available in some colleges without any explanation to parents and college-aged but experience-less teens of what the difference is. I was confused when looking at program descriptions in my own days and even leaned toward Applied Math rather than CS.
Much the same way as the Operating Systems course barely touches batch files, spyware or system building, there is no actual tech-training in any course I've looked. So you mostly get programs designed to get you a certificate like A+, to work on something that you STILL have no formal way to work your way into. The hands-on CISCO training programs you see allow you to take the test, but unlike a real doctor's education, there is nothing to give you the boost needed to be considered a real worker.
CIS was almost nowhere to be seen in private college programs, so I didn't know CS was the wrong field for what I wanted. I unknowingly guessed the right step was to work for the IT helpdesk in my obligatory financial aid self-maintenance portion. There, I honed my desktop skills and got some light network knowledge from people who actually had home switches, routers and linux. Not sure where one would place the line between desktop tech and sysadmin, but I doubt an apprenticeship will yield more than a front-end position to someone who is just stating out.
Given that IT sysadmin is a self-taught field, social media can save a lot of time through videos, howtos test-prep and even interview questions. The Times said my graduating year had only 20% of people in IT with a degree backing it up. I wonder how numbers have changed ten years later.
The way I look at it is:
Software Engineer: uses frameworks to analyse the problem, Designs the spec/requirements, writes the software.
Developer: takes the spec/reqs and builds the software.
Where I went to college it basically was. We called it Management Information Systems and it was a separate degree in the School of Business.
We also had Computer Science which was much more theoretical and focused on natural sciences as well.
Computer Engineering was far more technical and focused on hardware, and was basically Electrical Engineering with programming.
Software Engineering was also a separate degree and was a compromise between the CS and CE programs.
Nah, not developer. Not even software developer. Not senior software developer either. Not even lead software developer. Principal Software Developer? nah sounds too much like some boarding school in UK. What about Senior Lead Principal Software Yahoo. Nah, it is going bankrupt. What about Senior Lead Principal Chief Software Architect? May bet. This is what I am going to call myself. Please dont tell HR.
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
> I could call an employee "King of England" if I wanted to.
This is your cue to comment.
I'm not a lawyer, but I play one on the Internet. Blog
When a non-IT person asks me what I do, I say I'm a programmer.
When someone in electronics or computers asks, I say I'm a software engineer. All my titles in jobs have been "software engineer". Which I think is fine, because I have degrees in computer science, and electronic engineering. So, I'm an engineer who does software. Software engineer.
Women need to like the job of the guy they’re with. If they don’t like the job, they don’t like the guy. Men know this. Which is why we make up the phony, bogus names for the jobs that we have. ”
You are correct except for the first word... a forum of MEN going on and on about their job titles -- not a first on Slashdot. Oh, the irony.
These forums are a boon for psychologists, but sometimes I get some great humor thrown at me, too.
I like to guide my flocks of 1's and 0's around, hoping I don't loose some in the process.
Sig?
As a coder who has largely done what I'll call "engineering", I think the word is misaligned in all its disciplines. Real "engineering" occurs (or should be occurring) in endeavors that require the efforts of multiple people to build things that no single person alone could practically build (yeah, don't engage me on where to draw THAT line...). Real engineers, IMHO, spend their best time making Effective Communication between practitioners in all the disciplines in order to build big stuff with "quality" and "reliability" (yeah, don't engage me on how to define THOSE words...)
So there.
Look online at the software engineer and developer job descriptions posted by respected companies.
Then pick the title where most of the descriptions generally match up well with what you are good at doing.
+1 if you make an algorithm that does the match ranking for you automatically and can demonstrate it during the interview.
While I agree with the premise that those without engineering degrees should not call themselves engineers, you should probably be aware that Software Engineering is a legitimate engineering discipline. It is a relatively newly discipline, but very much a legitimate engineering discipline recognized by the IEEE.
My first two years were general engineering studies (I did take a number of basic mechanical and electrical engineering courses that are the foundation for all engineering degrees). I recently graduated with e Bachelor degree in software engineering, was presented with an iron ring by my camp and am currently designated as an EIT.
My current job title title does not contain "engineer" if that contributes anything to the discussion.
I'm a year shy of old school (39) and always wondered where all the Engineer, Architect and Developer titles came from. I started as a hobby in the 80s and it was "coder" or "programmer." You were either a new one, a decent one, a good one or a great one, depending on how much of the lifecycle you could handle, and if you could work through the tough algorithms and so on.
I guess it was for business people to be able to categorize the skill of employees they knew absolutely nothing about. Since "coder" and "programmer" really didn't indicate any sort of skill level other than professional and amateur, fresh programmers latched on to the titles to nurture their egos.
Professional programmers noticed the noobs were calling themselves software engineers and whatnot and noticed that these new titles sounded more experienced than their simple "programmer," so they latched onto the naming convention.
I just made all that stuff up. Am I an opinion engineer or opinion developer?
If that is not your degree, but your responsibilities are the same as one with that degree, aren't you still an engineer? And what if you have a degree in Computer engineering? What if you have a Ph.D. in computer science and an undergraduate education in software engineering was covered in pursuit of your degree?
Democracy Now! - your daily, uncensored, corporate-free
One is a geek, the other is a nerd.
They're all dorks. Either can be dweebs.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
No Degree = Software Developer
Degree = Software Engineer
Not really complicated.
From TFA in big fucking letters:
Metal Toad Media is a digital strategy agency.
So, what the fuck is a "digital strategy agency"?
Consultants who are paid to write bullshit by the word.
I think I speak for the entire field when I say that the software engineers you're putting down have accomplished phenomenal advances for the science as a whole, who cares what you think their title should be. You just want everyone licensed so you can limit the number of engineers and increase overall pay, you're one of *those* people and you make me sick. And, guess what it wouldn't work anyways because h1b's would just come into the country, lie, and get away with saying they were licensed in their country and take your job. The companies don't care as long as they get cheaper employees, even if it makes their products late or poor workmanship. So much for your weird engineer caste system then to elevate your silly salary, and good luck getting your product to ship with a bunch of academics who don't know how to make a real product to save their lives. Software isn't the same as the mechanical/electrical fields, and it never should be. They may overlap, and when they do, the software engineers you don't respect for not being "real" engineers have been hitting home runs that make your "licensed" work ship on time and of the highest quality. You sir, are a fool.
Having made a living writing software since 1985 (holy crap, batman, I'm old), I seen and held a variety of titles. None of these titles are standardized in any way. Anyone who is concerned about the titles you have held (unless they include the term "manager"), probably needs to clue in.
What really matters is the actual work that you do. Managers who have been in the industry long enough to know the industry will be more concerned with the work you've done than the titles you've held.
Funny you should mention ABET, because in order to get an ABET accredited degree in Computer Science, like the one I hold, you have to take all of the same sciences and all but 3 hours of the same math (we didn't have to take Differential Equations, but Physics E&M gave us a crash course in it and that was a required class) as all other engineering degrees are required to take. In fact, we had to take all the lower level computer engineering courses such as digital logic, computer organizations, etc. as part of our standard curriculum.
That makes no sense. First of all, IT is simply not "paint by numbers", except at the most junior level. The surface of what IT undertakes to do is constantly expanding. Anyone with intermediate to senior responsibility in the field has to master a very broad corpus of knowledge concerning the performance, scalability, integration, fault-tolerance, security, and usability of hundreds of different subsystems interacting in complex ways.
This has to be done not only within the limitations of today's technology but in anticipation of what is likely to emerge in future. IT is therefore very much an applied science, just as software development is. The published literature in both fields makes this clear. You have to recognize what's possible, what's optimal, and what's elegant, because nobody will be telling you the right answers. You and your professional peers will be proposing solutions to the problems of the day, and finding ways of measuring them against each other. Only at the end of that process will you know the right answer. (This is called science, by the way.)
Some few of those solutions become standard practice that can be reduced to "paint by numbers" and taught at the trade school level. But one of the things that makes these fields so active is that, once such solutions are established, they tend to become automated and invisible. Attention shifts to a new set of challenges made possible by the preceding technology. So trade schools are fine as far as they go, but the knowledge they offer to someone working with computing and network infrastructure has a rather short shelf life. If you want enduring payback for your studies, you have to learn the science.
Parity: What to do when the weekend comes.
"Unlike software, where usually the worst that happens is buggy software that needs fixing, faulty infrastructure can cost lives inmediately"
Are you out of your mind? Most machines and buildings made today are controlled substantially by software. Your car, your office building's CO2-sensor-based HVAC system, your hospital patient-monitoring and dosing equipment, your airplane, your traffic lights.... need I go on?
Where are we going and why are we in a handbasket?
It's more than just fees. Traditionaly being a Professional Engineer (and calling yourself an "Engineer") meant that you actually personally signed off on projects as being able to meet the stated goals. (Bridges, buildings, reactors, power stations, etc.)
Unless a "Software Engineer" is personally signing off on a software design and taking actual responsibility for bugs, I don't think they should be using the term "Engineer".
Incidentally I have degrees in Computer Science and Engineering Physics. I do software development for telecoms stuff, but I definitely wouldn't call what I do "Engineering".
I don't think that any of the titles that are often used to to describe our profession (building software, working or otherwise) really capture the correct metaphor.
Developer or programmer imply just that; we do little except for banging out foreheads into the keyboard. This would be akin to construction workers. It implies than without somebody smart to tell us how to lay out the entire system we'd do it wrong.
Software engineer implies that software development is an engineering process. Before everybody jumps on me, some software does need to be built to rigorous engineering standards. Life critical systems are definitely a great example of this. Most though, tends to take on a more organic growth than engineering would allow for. While it is possible to design an entire system up front, the uncertainty in the eco-system, be it technological or business requirements, mean that a large up front design tends to be a waste of time.
And let's not even bother talking about (system|software) architects. That's a metaphor that is wrong in almost every possible way. See software engineering for further argument. If your only skill is drawing boxes and arrows or waving your hands you have no place in the software development process.
So where does that leave us? It leave us looking for the proper metaphor to describe the role we play. Every trivial system that is built works quite well regardless of the amount of hackary that runs the system. In fact, one might argue that a 'good' programmer will be incapable of making a simple system because they will over complicate it. This is similar to the little planter I have hanging outside my flat. Tough to screw up, but it has almost died a few times.
When you step up the complexity from a simple planter to a real garden the complexity increases. The growth must be managed, the weeds pulled out, the garden must be laid out, harvesting must be timed. These complexities are where a trully skilled gardener makes their mark. As the garden grows, a skilled gardener will keep everything in check and allow the garden to continue to grow unbounded. A bad gardener will leave an unholy mess and waste everybody's time.
I am a software gardener.
For what it's worth, I call myself a "programmer" and I'm only 22. Anything else just sounds pretentious to me.
(I'd prefer "hacker", but that doesn't go down well with the general public)
I have a Computer Engineering degree from an ABET-accredited school in an ABET-accredited program. My curriculum was far more software-oriented than hardware-oriented. I work at a very large semiconductor company and my title is Engineer, just as it would be if I designed circuits (which by the way, in practice doesn't have much to do with physics, either for most of them). The people we hire to write software almost always have a EE, CE, or CS degree. By the way, ABET accredits each one of those degree programs. Texas does have a PE program for software, though you still have to pass the not-germane-at all FE test.
We build stuff on a very large scale. I write software to systems that I won't see for years to test, and through what is probably closest to an engineering process than any other, thousands of people's work converges to something that gets to our customers quickly, only with the help of carefully planned automation in testing, compliance, and build automation.
You can't tell me that the IPhone isn't a feat of engineering, and one that's moreso based on its software than its hardware. You can't tell me that solving problems in statics or fluid dynamics in order to make something useful is radically different than the problems Google solves to execute searches on such an enormous scale.
I call myself an engineer because ABET says I am. Because top-rated engineering schools say I am. Because the industry says I am. Because the products I contribute to say I am. Your dissent is duly noted.
I have a Computer Science & Engineering degree that is accredited by ABET; I haven't looked into the requirements, but if I could fit my work experience into the required (working under a Principal Engineer) I am eligible to sit for the Professional Engineer Exam.
Granted there are three "Computer Science" degrees where I went. The easiest was through business which is more an MIS degree. The middle hard one was through the Arts & Sciences College and was more your traditional Computer Science degree. Finally, you have the engineering one where by my sophomore year I had more than enough credits to graduate for most majors but hadn't taken all the required classes. By the time I graduated I was a class or two shy of a masters and could easily have earned two or three bachelors in other disciplines.
I have worked under a Systems Specialist, Systems Developer/Engineer, and now Senior Systems Manager job titles, so yes I feel I have earned the right to say I practice Software Engineering if I choose.
I've worked professionally as a developer/software engineer/product architect/technical prime my entire professional career and I have no idea what the difference is supposed to be. The work has been more or less the same regardless of what the title is.
The one to be careful about is manager because that will usually involve having to babysit other people and if that's not your thing you'd do best to avoid it.
Very good material before my post.
What is to design software and what is to develop it?
I could say that some people create the concept, the blueprints, define the specifications and coordinate how the work must be done, calculating if the resulting product would be able to support one user or one million users concurrently. This is engineering work in any part of the world, the same range of work as the civil engineers do when they design bridges. Others, develop the stuff to accomplish the designated purpose.
My experience says that the big problem is that employers don't understand this difference and they hire engineers to perform development work, or developers to define how the products must behave. What this produce is a lot of over-stressed people trying to go out of the big mesh.
On the other side, people accumulates experience and knowledge, and the particular characteristic of the software being an immaterial product, permits that a person with very high talent and knowledge be able to craft a piece of art without carrying out many formal stages. But this is a very strange exception, and when the software doesn't pass some type of engineering phase, the result is usually a disaster.
What I am? ... some times an engineer, some times a developer. My degrees? ... mm, let me see ... Bachelor in Computing Science, MSc ... oh, I am not an engineer on paper, what a surprise :-D ... although I had been in charge of many formal engineers on my working life. On paper I could say that I am a Scientist on Computing Knowledge that performs some times engineering tasks, consulting and others make source code.
10 PRINT "Programmer"
20 GOTO 10
You don't need a degree to be a Railroad engineer
But you need to pass a test / get certified and re-certified every 2–3 years
and the career progression is one that starts as an assistant (brakeman), conductor and finally, engineer.
Railroad Engineer is a Conductor, not an Engineer.
... but I don't think the title actually influences the work you do. What it may do is influence what work you get.
Personally, I insist on "engineer" because - to my ears - it implies an amount of verifiability (of the output against specifications, however implicit they might have been) that "developer" does not. According to the job interviews I've been in and led over the years, that seems to be roughly the expectations of most other people, too. [Not everyone, though: I've had one person explain that "engineer" sounds more like "code monkey" to him, whereas a "developer" sounds like someone who can basically do everything to get from zero to a finished product, including UX design, etc.]
I think my thinking stems from the assumption that code shouldn't just "develop" organically. You should have some (implicit or explicit) specs, then deliberately write your code to meet or exceed those specs, then test your code to verify that it meets the specs - that is, you should engineer code. [Note that this does not preclude iterating until you reach a desired result - it just requires planning and forethought for each iteration, whereas some adherents of iterative processes seem to want to do away with that altogether.]
All in all, though, titles in software aren't something I pay a lot of attention to.
I always assign myself my own title and enter in the company's Exchange Global Address list, the place this outfit stores titles for people. I make it "System Programmer", my favorite old school IT title, or if I'm feeling expansive, "Master of the Devices" or "Final Interpreter of the Dogma".
There is no God, and Dirac is his prophet.
When various forms ask me for a job title, I pick completely randomly between "programmer", "software developer" and "software engineer", because they're all the same thing and I can't remember which one is the official name for the position. (I just checked, it's "software engineer". Now I'm going to forget again.)
Well, and sometimes to people who know what it means, I say "codemonkey", which to me is a slang but not at all derogatory term that means the same as the above three, except explicitly not being responsible for the actual design of any large systems, which is fine, as I don't really want to be responsible for the design of any large systems (smaller subsystems, though, sure. Everyone does that.) That is clearly not going on any official titles, though.
Anyway, Betteridge's, etc.
I came into this thinking "Uh oh, an article about job titles, HERE COME THE SNOBBY ENGINEERS!" and I was not disappointed.
It's better to vote for what you want and not get it than to vote for what you don't want and get it.
- E. Debs
Just a note, but Software Engineering has been around since the late '50s so unless you at or nearly 70 years old then there is little chance you were programing before the term existed, and certainly not professionally. Of course in the '60s and '70s professional software development more closely represented engineering than the cowboy coding hack jobs of today. Software Engineering still happens today, though not usually at the ever growing number of start ups, and even rarely in your average business application.
Human Resources (HR) generally defines your title in companies larger than a couple of people. This means they try to align the job name with the function based upon standards for this.
In the course of creating programs, I've been called Systems Developer, Software Engineer, Systems Integrator, Professional Systems Analyst to name a few. It seems to change every few years - dependent upon reorganizations for the most part.
Is just a slightly more arrogant software developer.
I haven't thought of anything clever to put here, but then again most of you haven't either.