What Should A Developer / Programmer Resume Look Like?
The Difference Between A Developer, A Programmer And A Computer Scientist I have often used those three terms almost interchangeably, yes, even computer scientist. After all, most of us have a degree in computer science, so what does that make us? However, recently I find that those three things have come to take on more and more distinct personalities in my mind. It has come to the point where if I think about someone I know – or know of – within the industry, they immediately fall into one of those three categories. Which is not to say that one person can't have attributes from all three, but regardless, they always tend to favor one most strongly and so I fit them into that category, programmer, It is difficult to define what each one should be, ( it is more of a gut feel rather than a strict delineation) they are very similar ( and rightly so), but I am going to attempt to do it anyway, cause I am a glutton for punishment :). Computer Scientist They write code ( yeah I know it's a bit of a bombshell). It may not be the prettiest or most well-factored code, but it gets the job done. It is not about the design of the code or " good" practices, it is about proving what they set out to prove. A computer scientist is as much a mathematician as they are a technologist ( they have 31337 math skills), they don't just need to know that stuff works, they have to prove it. Communication and people skills are desirable traits, but not emphasized. Software process and team dynamics skills are desirable traits, but not emphasized. They have good breadth of general knowledge of their whole field, but they deeply specialize in one or several narrow areas. In these areas they are considered world-class experts. They work on stuff related to their research in their personal time. Programmer Programmers write awesome code. Making it clean, well-factored and error free are very important concerns, but not at the expense of getting the job done. It is all about knowing the meaning of " good code" within their domain. They need to have some math skills, but this is not a paramount concern. They need to know of good (best) solutions to problems, but they don't need to prove it is the best solution. A good breadth of algorithmic knowledge is imperative. They have a depth of skill in a wide area of expertise and have reasonably good knowledge of related areas as well. Communication and people skills are desirable traits, but not emphasized. Software process and team dynamics skills are desirable traits, but not emphasized. They work on personal software projects they find of interest in their off time. Developer They write code. Making it well-factored and clean is important, but other factors often take priority. Math skills are very much optional, but it does help to be aware of common problems and solutions related to the domain they are in. Communication and people skills are paramount. Process and team dynamics are bread and butter skills. They are consummate generalists without any truly deep specializations. They are expert at finding ways around problems and plugging components together to fulfill a set of requirements. In their personal time they are either trying to build the next Facebook, or engage in activities that have nothing to do with programming, developing, or computer science. Developer are programmers to a greater or lesser extent. Computer scientists are programmers to a greater or lesser extent. Enterprise software is the domain of the developer. The Googles and Microsofts of the world are after programmers (and to a lesser extent computer scientists). The developers who end up there become product managers. RnD and academia are the domain of the computer scientist (and to a lesser extent the programmer) The thing to remember here is that none of the three is derogatory or " bad" in any way. One is not more or less desirable than any of the others. They are simply different dimensions ( with some crossover) of the field we are all involved in. Particular personalities will identify more with one but that does not mean that all three can't " bleed" into each other and combine favorably. It is entirely possible to be both an awesome developer and a great programmer ( although it is difficult with so many important things to focus on). In rare cases you may even get an all 3 in 1 type of deal, in which case I'd love to hear from you, cause we should start a company together, so that I can ride your awesomeness all the way to easy-street :). But no matter where you fall, it is entirely possible to be highly successful if you fit snugly into just one of the three. What about a software engineer? That's just a subset of developer. What about an architect? They design buildings and stuff, so I am not quite sure how that's relevant :) I do believe that I have thoroughly failed to communicate my meaning. No matter. I will throw the ball to you, dear reader. Do you see programmer, developer and computer scientist as distinct and if so are you definitions similar to mine? If not, then I'd love to hear your thoughts about them being one and the same. Share this: http://badalyan.com Alex Badalyan This is an excellent article. I can’t stop thinking how accurate you were about all three differences. I’d consider myself as more of a developer (after reading this accurate depiction) with a rudimentary knowledge of a computer scientist. http://www.skorks.com Alan Skorkin As I mentioned on twitter, I would consider myself a developer at the moment, but I’d like to fit myself into more of a programmer/developer, which is why I am working on being more of a programmer :). Slobodan Kustrimovic anom man, this article is sooooo stupid. what about architects? wow, those ones build houses…omfg…you are a dumb ass and an example of why software is so badly done. software architects are the most important part of the whole process Claudio … and what about “Software Engineers” ? He is very different from Computer Scientist. He want to “build things that work” and he focuses on the architectural and system aspects of the problem. Usually he is very concerned with finding the optimal solution (where the optimality can be related to different factors, like speed, time of development, and so on…) http://www.skorks.com Alan Skorkin Prashant Bob Software Engineers aren’t engineers, in fact, this is an oxymoron. The person you’re describing is a programmer. http://whitesocksai.blogspot.com SigmaX Software Engineers and programmers are very different. Software Engineers use software engineering processes and modeling, and are interest in things like design patterns, management of agile development models, etc. There are whole masters programs in Software Engineering, and textbooks and reference manuals hundreds (even thousands) of pages long — all covering things that the average programmer knows little of. Someone who knows a little VBscript can call themselves a programmer. Software Engineers earn the title with a decade (plus) of experience or a graduate degree. http://gboruk.com Gennady Borukhovich I have to agree with much of what you say here. In fact, I wrote a blog post that’s similar to this recently: http://bit.ly/axr4Z6. Also, you say that “One is not more or less desirable than any of the others.” I think that depends on what your need is at a given time. Now, the question is, what do you ask someone during an interview to determine which of the 3 categories he/she falls into? http://www.skorks.com Alan Skorkin Hi Gennady, Ah, that is a good question and infact if you can classify people into those three categories and know which of the three you’re looking for, it becomes easier to come up with good interview questions. You know what, you have just given me an idea for a blog post :), so stay tuned, I will definitely write about this. Alamgir Kahn crander I see software engineers as 1/2 programmer, 1/3 computer scientist and 1/6 plumber or electrician. http://www.joegaudet.com Joe Gaudet I would disagree on the Engineering comment, at least in so far as Canadian engineers are concerned. A software engineer is in no way a subset of a developer, they are required (at least in Canada) to have extensive math / science skills. I’d put software / computer engineers somewhere in the grey area between CS and Programming. Engineers (in Canada) have a huge focus on technical correctness, sometimes glossing over the exact implementation details. Finally, the statement about google further re-enforces that as I am pretty sure they employ an enormous amount of computer / software engineers. Otherwise great post. Hi Joe, Yeah, I have heard it is like this in Canada, which I guess would put software engineer in a separate category all together if you’re from there. Having said that, I don’t think the word engineer should even apply to software. As Ahmed pointed out below, Engineering assumes a “predictive” thing while Software is “un-predictive”. We can surely come up with many better ways to describe what we do, but unfortunately the weight of convention and tradition is against us. Vovka http://www.thinkbottomup.com.au Daniel Paull Neil I agree with the article on top. Software engineers should be considered as developers. Yes. I know that your software engineers study math extensively but… they just study it. They don’t create their own theories/maths. Ahmed Interesting subject. I think there is nothing called Software Engineer/Engineering, ’cause Engineering is a “predictive” thing while Software is an “un-predictive”. Definitions: Computer Scientist: Theoretical oriented mind, try to prove thing theoretically and see similarities between things to create a theory so that Developers and Programmers can understand the big picture easy. Developer: (Senior Programmer) worked on and knows all Software Development Phases (Requirements, Analysis, Design, Coding, Testing, Deployment and Maintenance). Programmer: Knows how to code without the big picture. Give him a task and he knows well how to do it. I think with “Agile” advent, there is no need for a programmer any more. You need someone – “Developer” – who knows and get things done in all Development Phases. Thanks, Hi Ahmed, It is interesting that you see developer as a more evolved form of programmer, I have heard this view before and I see where people are coming from. For me I see programmers as working at a level above (or below depending on how you look at it) developers. For example, developers use libraries when working in enterprise, but programmers write the libraries that developers use. There are many other examples of this sort. The way i see it there are junior developers and senior ones as well as junior and senior programmers etc. LAW I have the same view on this as Ahmed, which is totally different than your view. Most jobs I see have “programmer” on a lower rung than “developer” or “engineer”. From my point of view, a developer/engineer has a degree in CS and can design algorithms and thoroughly understand something, whereas a programmer will hack at something using libraries and patterns developed by others to make things work. SAm the_architect Max That little dig against architects made me lol. I hate that terminology. Almost as much as I hate the word “PC” to describe a windows machine. http://www.skorks.com Alan Skorkin http://karmazilla.net Chris Vest Engineering is the practical application of science, so software engineers would pretty much fall into your programmer category. You might subdivide the programmers into engineers and hackers, depending on the rigor of their process. That is, the level of discipline in the applied techniques, and how intentionally they are used. By that definition, the software craftsmen would be a subset of the software engineers. Perhaps not in title or preferred types of organisation, but in their way of working with code. Does this make sense? Hi Chris, I see where you’re coming from, although using your definitions I would have put the software engineer as a subset of developer still but more towards programmer and I would perhaps say that the engineer is a subset of craftsman rather than the other way around. But that is just semantics. Sam Douglas As a computer scientist-programmer who is pretty on software engineering, I’d place software engineering as a mix of all three categories; the capital E Software Engineer is certainly more computer scientist/programmer, generally with a good understanding of mathematics and logic, an understanding of concepts and technologies and the skills to work on a team and get the job done. http://www.straylightrun.net Gerard I’ve never actually thought about the titles of people who do software, though I’ve thought heavily about what is software. Here is my take on that subject. http://www.skorks.com Alan Skorkin Hi Gerard, You do indeed discuss titles quite a bit, and I do agree with you regarding the software craft analogy, I’ve written about this before: If you don’t live to read and write research papers, you aren’t a computer scientist. I also view “developer” as somebody with a global picture of the process of creating software, (who also codes) and a “programmer” as somebody which only focuses on the code. But maybe is just a matter of terminology. And never call somebody an “engineer” without a degree that proves it :) http://www.skorks.com Alan Skorkin Hey Gabriel, Too true about computer scientists and research papers :). As far as developer and programmer what you say is kinda what I was getting it, but a programmer would be better at coding as a result of the narrower focus (this is an aspect anyway). I do have a degree that says I am an engineer, but I still wouldn’t call myself one :). http://www.highpowerconsulting.com Jeremy Beckham Actually, you should never call someone an engineer with out a piece of paper saying they are a Professional Engineer, unless you also count EIT’s. The bachelor’s degree doesn’t make you an engineer, the professional certification does. http://www.skorks.com Alan Skorkin I’d be wary of applying that logic to every certification though, many certification don’t really make you anything, except owner of a piece of paper that says you’re certified in something. http://www.highpowerconsulting.com Jeremy Beckham That’s true. The PE and EIT “certifications” aren’t like normal certifications. They are more like passing the bar if you are an attorney. EIT’s have to work under a PE for several years before they can even take the PE exam, so we aren’t talking about a certification like MSCD. http://whitesocksai.blogspot.com SigmaX Pablo Viquez Hi Alan, Very nice post! I’ve always though of “Computer Scientist” as the guy who comes up with the new pattern idea, works on C/C++ and implements the newest image library with these new set of shadows and vectors. The developer takes that and build these set of apps that the engineer thinks “rrrr why I didn’t think of it in that way?” the developer uses the patterns in XYZ language and adds it’s own flavor. http://www.skorks.com Alan Skorkin Hi Pablo, That is not a bad way of looking at it, although sometimes computer scientists do come up with that good idea themselves and then we get things like Google as a result :). http://karwin.blogspot.com Bill Karwin Very good blog post and good comments. My two cents is that a software engineer is a superset, rather than a subset, of developer. Engineering does include designing “blueprints” in addition to putting something together. Programmers program to a specification, whereas software engineers write the specification (and probably also write code too). Architects in the software field may be even more concerned with designing the solution rather than implementation details. Architects are also frequently concerned with integration of multiple systems, in addition to implementation of any given system. But often, Architect is just a title with greater prestige, trying to make up for the fact that there’s no good career path for software engineers, besides moving into management. I’ve been told by some ex-Microsoft friends that they use “program manager” as the title for someone who is a general technical person who “owns” a particular project — this is sort of the advanced developer you describe. http://www.skorks.com Alan Skorkin Hi Bill, It is actually pretty sad that in this industry you pretty much have to tack-on architect at the end of your title after a certain number of years in the industry, otherwise you lose a level of credibility and earning potential. I believe the word architect should die as applied to software, it is not necessary and often harmful. Program manager is an interesting one as well since i’ve heard it used differently in a different context (i.e. a more advanced version of project manager :)). http://karwin.blogspot.com Bill Karwin I agree there’s a fuzzy line between project manager and program manager. I think it’s mostly due to traditions within one company or another. Sort of like “member, technical staff” can mean “entry-level grunt” or “superstar researcher” depending on what company you’re at. But the discussion of job titles may be off topic from your blog post. http://www.thinkbottomup.com.au Daniel Paull I’ve only ever heard of Program Manager meaning a person who manages a suite of related projects. Wikipedia seems to support this – http://en.wikipedia.org/wiki/Program_management. http://www.christangrant.com Christan Grant http://www.skorks.com Alan Skorkin Hi Christan, Well, it certainly might help clarify my thinking, but I do have an idea for another venn diagram post, which I was prompted by the reddit comments for this one :). http://nicholas.piasecki.name/blog Nicholas Piasecki So, in other words, I think that you’re saying something like the following: Computer scientists brave the wilderness, what was previously unknown; programmers carve out the homestead, taming the wilderness; developers build the railroad, connecting the world in ways previously unimagined. http://www.skorks.com Alan Skorkin Skip Scheepers Using Ruby on Rails no doubt :-) Great post Alan! Bob “in ways previously unimagined” makes jamming software packages together to accomplish simple tasks with gross inefficiency sound glamorous. http://whitesocksai.blogspot.com SigmaX @Bob: Code monkeys do that. It’s the simplest kind of innovation. Computer scientists do things that others couldn’t, because they lacked knowledge of the tools or mathematical dynamics of the problem. Operating systems, compilers, data mining tools, distributed and cloud computing — all these are things that simply could not be without computer scientists. They’re too complex for most of us to intuit our way through without immersing ourselves in a specialized, mathematical world. al What is the message behind the pictures? Only developers get laid? Or is it that women can be developers, but not programmers or computer scientist? I once knew a girl who was a brilliant computer scientist. She was very clever and beautiful. She was a mediocre programmer and a terrible developer. http://www.skorks.com Alan Skorkin No message, nothing about getting laid, I just chose pics that I thought would best reflect the impression I was trying to convey. And women can be developers, programmers and computer scientists, infact I wish there were more of ’em :). Zak Hoskins Oh course women can be developers, programmers, computer scientists, or a ubermensch mix of all three. As far as what you were trying to portray in the developer pic though, be honest dude. Taken in context with the other two pictures, it would seem to suggest there is a trade off between technical skill and perceived attractivess. There’s a reason for that, with the exception of those ubermensch males and females out there, it is sort of a sociological rule of thumb. I do applaud you though for only mentioning these three groups and not trying to define what “hacker” really means though. It seems like there is never a universal answer for that one; you’ve got to decide for yourself what that means I believe. http://realcnbs.com Vitali Carbivnicii Pingback: Différentes nuances | traffic-internet.net() Sonya Lowry If you are looking at this through the narrow view of application development, then it doesn’t appear to be too far off from reality. The one exception would be that I have come to view the programmers as not exceptional coders who really aren’t concerned with how clean and well-factored it is. They also tend to skimp on unit testing. There is another level of skill above the programmer who is concerned with these areas and is as much or more interested in the quality of the code than in the functionality it enables. If you broaden the view to include development of systems, some of your assertions fall apart. First, architecture is critical when building systems. I’ve seen too many instances where entire components had to be refactored because a developer or programmer didn’t adhere to the architecture and managed to slow parts of the system to a crawl as a result to be convinced otherwise. Because architecture by committee is not efficient and rarely effective, the architect role is not only appropriate, but required. But again, if all you are doing is building applications, it is probably overkill to say you are doing architecture. That would be like an electrician saying he is architecting a light switch. Second, software engineering is a reality. It is the application of a systematic, disciplined, quantifiable approach to development. There was a time when other engineering disciplines didn’t have governing bodies either. To say that without the governing body, they were not engineering disciplines is to put too much power into the hands of organizations of human origin. Whether or not I am practicing a systematic, disciplined, quantifiable approach to my work is not for anyone but me to ascertain. http://www.skorks.com Alan Skorkin Hi Sonya, You must have been exposed to some crappy programmers in your time. Who besides the programmer could possibly be more concerned with the quality of the code? I’ve see so many instances where the architecture was so completely nonsensical that it is impossible to implement because the architect and developers lived in different worlds. Most of the time in that situation the developers would make it work and the architect would continue living in a dream world. All architecture happens by some sort of consensus in any non-trivial system. Technically speaking, Facebook is an application, it is somewhat more complex than a light switch. Systematic, quantifiable approach to development? I am yet to see or even hear of it. Dalboz I have to agree with Sonya here. Remember that software engineering is the most immature of all engineering disciplines. We’ve been building bridges and buildings for centuries – chemical and electrical systems to a lesser extent. But modern software development has only existed for about 30 years. Add to that the much higher growth rate in software relative to other engineered industries, and you start to understand the lack of widespread adoption of engineering in software. Software engineering is still evolving as new systems come along such as the Internet, distributed systems, clout computing, social networking etc. Many programmers, developers, project managers, etc. will hesitate to adopt a certain architecture or expend resources to engineer a system when there is a very real possibility that all their work will be out of date in 2 years as something better has come along or the industry has moved on. So why then is rigorous architecture so ingrained in other industries such as mechanical, electrical and civil engineering? It’s a necessity. Without engineering, projects fall apart. There are no real consequences if your toy Web 2.0 app falls apart – maybe some commercial losses. But what if your un-engineered application was a control system for a nuclear reactor? A building, a bridge, or a train signalling system? Ouch. Alan, have you done any research into Facebook’s architecture? There are some brilliant videos and their engineering notes blog which describe it in detail, especially their focus on scalability. Services such as Google and Facebook could not meet their load demands without a scalable architecture. This kind of architecture will not “evolve” out of a consensus – it has to be designed. I worry that your attitude of “Architecture is not used, therefore it’s not needed” is counterproductive and will only serve to reinforce the already observed industry-wide skepticism about engineering in software. What’s missing from this post is the acknowledgement that people can fit into one of the three categories but still be bad at what they do. Not all programmers “write awesome code”. Not all computer scientists have 31337 math skills. Not all developers have awesome people skills. I can only speak on my experience as a programmer — In projects without the discipline of clean, modularised architecture, programmers will often revert to worst practices. If they have the time, they might do some refactoring but in reality, in high pressure environments with looming deadlines and no architecture enforced by management, programmers will be expected to achieve their task as quickly as possible – and this is often at the expense of code quality and thorough testing. Will Rogers This article is pointless. A software developer and a programmer are the same thing. Attempts to distinguish the two are pointless. The term “software engineer” is a euphemism that helps us justify our pay. The term “computer scientist” should apply to any programmer or developer who regularly enlists the scientific method. In other words…all of us. http://www.skorks.com Alan Skorkin Hi Will, I appreciate your thoughts, however the general opinion from the other comments would tend to disagree with your assertions. Marek phobox hmmm sorry Alan, but I have a bachellor degree in Computer Science, and I agree with Will Roger’s comments. and btw, the “general opinion” doesnt mean ur right…. thats called a fallacy. so stop thinking that way. http://theal.deviantart.com TheAL Your logic has some merit, Will, but try not to take it so seriously. This article isn’t meant to be taken as cold-hard fact. It’s the author’s opinion. A lot of the naysayers here obviously read it, took offense to the distinctions they think the author is making, and then felt upset because they probably fit into one of the areas they think wasn’t glorified in the article. Also, I personally wouldn’t feel comfortable calling anyone a computer scientist unless they studied and/or have a degree in CS. Just feels icky and wrong. *shiver* http://whitesocksai.blogspot.com SigmaX I don’t think you understand the difference between what the different people do. If you think everyone is a programmer/developer, you are clearly not familiar with the the origins of compiler optimization, relational database management systems, operating system fundamentals, operations research algorithms, P vs. NP (i.e. tractability of problems), data mining tools, computer vision and robots algorithms, the Internet, distributed computing, etc — none of which we could have without the efforts of computer scientists to assemble theoretical foundations and understand specialized domains deeply so they can see how to break new ground. Furthermore, there is a huge different between a code monkey, a developer of small software projects, and a Software Engineer capable of handling the complexity and unique problems that emerge with large software projects. Standard programmers can go decades without ever hearing about agile software development, UML, design patterns, or reading a book on how to handle customer requirements competently. Software Engineers live and breath the bigger picture. Sukant Hajra I know it’s /just/ a blog post, but the subject is provocative in a way, because you are defining an ontology for us all. First off, designing a good ontology is often hard. Secondly, the ontologies we come up with are often so biased or flawed that they work against us as much as they work for us. As an example of your bias, if find it extremely odd that you talk about the computer scientist completely outside the context of academia and publications. There are economic ecosystems that drive the behaviors you’re talking about. A computer scientist doesn’t /need/ well-factored code to write a good paper. Many times that code is just a proof-of-concept or a benchmarking to put some numbers to an idea. My point is that the code is /not/ the primary artifact. It is the ideas behind it. Context is key. Anyway, I really question the value of defining descriptions for us all. Let’s just focus on good behaviors. Then it’s totally okay for a developer to act like a scientist and vice versa, provided the context is right. http://www.skorks.com Alan Skorkin Hi Sukant, I can’t disagree with anything you said. However you will notice that I didn’t say this was a definitive guide or the one true definition for the terms in the title. It is just my opinion, a snapshot of how I see the world at the moment. Everything anyone writes is somewhat colored by their opinion and experience, wouldn’t you agree? What you say regarding computer scientist tends to fit pretty well with what I have describe as far as I can see. But, you’re of course correct it is totally fine for everyone to step out of any defined boundaries, I myself to it all the time :). John blake I would have to label myself as a “Developer”, but I program. Having “clean code” isn’t alway’s good. You can have clean code, but what if your project doesn’t compile or run? Uh, you’re code is sh*t. http://www.skorks.com Alan Skorkin Agreed, clean code is worthless if it doesn’t work, but as far as I am concerned, that is implicit so there is no need to even say it. http://eswhy.com Sean I have no degree. I am not a programmer in the hard core sense. I take peoples ideas or designs, and develop them using programming and pre-built software w/ graphics and lots of coffee. and yes I have time to score chicks ;) http://www.skorks.com Alan Skorkin Hi Sean, You can certainly be a developer with or without a degree and you gotta make time to score chicks :) http://bashingdesigns.com Jonathan What about the web designer that has basic knowledge of the most common languages and aim towards the perfect markup and CSS while implementing snippets of JS and PHP where ever he sees fit? ;P http://www.skorks.com Alan Skorkin Hi Jonathan, If you’re a designer, then your primary focus is design, am I right? You may dabble in code and may be quite good at it, but you would still identify yourself more as a designer. If you were pressed to pick one of the three above, I would say developer would the closest. http://theal.deviantart.com TheAL I agree. Designers are primarily artists who plan and design website looks/interfaces with tools like Photoshop. They also make constituent graphics and do things like logos, business cards, brochures, image ads, and so on. If you are concerned with markup, and you’re one of those newage semantics-nuts, and you write CSS and even know what PHP looks like, let alone how to use it, you’re a web developer. At the very least you’re a front-end developer. http://www.skorks.com Alan Skorkin Front-end web developer sounds like a good title, which means you’re a developer if we take the myopic view of restricting it to the three things in the article :). http://whitesocksai.blogspot.com SigmaX Then again, I know of plenty of “backend” web developers who don’t have much more than a basic grasp on JS and PHP. Dustin I don’t know who’s code you have been looking at, but computing science people with 4 year degrees produce some of the cleanest code ever. I also get the distinct impression that the writer of this article views himself as a developer, and as such glorifies his description to a point where it is almost god like in comparison to the other fields. http://www.skorks.com Alan Skorkin Hi Dustin, Really, cleanest code ever. I could point you at a number of pages where computer science researchers have posted some code, and it is certainly not the cleanest code ever. More than that, I have a computer science degree and thinking and looking back at my code from years ago (right after I finished uni), it is far from the cleanest ever, infact it is downright embarrassing. You must know some truly brilliant CS graduates :). I do identify myself as a developer, however I am working hard towards becoming a good developer/programmer mix according to my definitions, focusing more on my programming skills. That should at least tell you that I don’t consider any of them inferior. I believe I gave pretty balanced descriptions with weaknesses and strengths for each I did also say that none of the three were better than each other. http://whitesocksai.blogspot.com SigmaX There’ s a lot of variation amongst academics. A lot of CS guys are used to just doing proof of concept, so they tend write things that “just work” and not develop good practice. But CSers rub shoulders a lot with Software Engineers (ex. both take their masters classes together) — who live and breath the ideas surrounding clean and well-tested code. The labs I work with as a Ph.D. student have, luckily, been influenced by several students who came in with a Software Engineering background. The group proudly develops frameworks that are quite orthogonal (i.e modular & modifiable) and well-documented. Ganesh Correct me if i am wrong, i think these three categories are actually some what of an evolution, one usually start of as person who is here to prove a point, or like u have said “they don’t just need to know that stuff works, they have to prove it” in a way, at one stage of our life we were like this, we dint care for how our code looked, we just had to prove a point, “yes its possible!!” But as time goes, i think we tend to shift to being a programmer and start to be more “sober” while writing codes, we try to improve performances (i think thats d quality of a programmer) and things like that, and finally we become a developer, where we are not alone, i think thats when things become more of team game.. once again, this is just a opinion , correct me if u think i am wrong.. :) I am sure some will :) http://www.skorks.com Alan Skorkin Hi Ganesh, It is an interesting way of looking at it, I don’t think most people evolve to or from being a computer scientist starting with programmer or developer. You might evolve into a better computer scientist over time, but if you’re one you’re one from the start so-to-speak. http://www.thehdblog.net HD Pingback: tekcastdesigns.ca » Blog Archive » The Difference Between A Developer, A Programmer And A Computer Scientist() http://Clickmobile.blogspot.com Steve Which degree program offers you access to become a programmer, developer, scientist.? I guest its cs. So they are all related b.sc&m.sc(programmer and developer) p.hd(programmer, developer and scientiest) cs degree gives u plat form for all even software enginnering. So it depends on where u major and what u do. Am a programmer and also a developer. All to profesional level, holds my b.sc m.sc in cs. Thoug u need some raw knowledge(pratical knowlegde outside school)and certifications, to get the real deal. All will give u what u may need in lyf. Nice article Prashant pls telll me more about software engineers and also of programmers i want to learn more so that i can choose one option for me pls tell more about their studies and languages important http://www.aowanders.com Adam Thank you for this. It was very informative and helped me to try and understand what my course curriculum was actually trying to tell me. I was wondering if you would/could recommend an online school to become a programmer? http://www.rowdylabs.com Michael Langford I think the difference between a programmer and developer here is artificial. There are lots of glue level developers out there. They never write modules, etc. They only use them. Lots of those guys. There are ALSO lots of developers who make lots of libraries, and use them, and manage the whole process by which stuff is cutup and are the ones who deal with people. The last two categories feel like they’re trying hard to make exclusive categories where there aren’t. There are two skillsets: Development (the process by which a piece of software is created) and Programming(putting instructions for the computer together in the way that gets a certain outcome). You can be good at either while being only middling at the other. But they’re not mutually exclusive, and most people good at one are fine at the other and vice versa. There are corner cases out there were people are really good at one of the two but suck at the other, but those are oddities, not normal paradigms. http://benreinhart.com Ben I think you should add a fourth category of “Software Craftsman”… They would be very similar to your definition of Programmer but they apply their knowledge like a developer. They are very passionate about their 9-5 job as well as side projects, etc. Maybe only I can see that difference, just my two sense… Pingback: From the web #11 | Jamie Osborne() Ryan “One is not more or less desirable than any of the others.” I dunno, the last guy has two girls beside him… Based on the three photos, I think I’ll call myself a developer. xD And what about the “day time programmer” the guy who programs at work and ONLY at work, where its way more of a job than a passion. darchitect Rush Programmers do have to do their own laundry, cook their own food, take care of their children after work. CM Zeeshan Khan Eliza Wright I think in part it depends on where you live & work. Hwever, I would assume most of the respondents to this article are based in the US. I live & work in Australia & we obviously use the job titles & terminology a little differently than you, although essentially its pretty close & all of the above mentioned roles fall under a fairly small umbrella. Over here, the term computer scientist has pretty much died the last decade. Bachelor of Computer Science degrees as such are almost unheard of now & have been replaced by a Bachelor of Computing, the course content is still the same sort of thing though. I think it’s because Computer Science used to be a part of university science faculty’s but as the student demand grew so much the last 10-15yrs universities began establishing separate faculties for their computing courses. So as they were no longer were a part of the science faculty they altered the degree title from Computer Science to Computing. Interestingly the Information Systems degrees that are still very common here, which sure are pretty much the opposite of what we do, as in their graduates become specialist users of the programmes & software we spend our lives creating, are all still part of the business/commerce facultiies in our universities…. In recent years though, Bachelor ofComputing degrees which take 3 years have begun to incorporate more aspects of web design than in the past. Quite a few degrees are even offered as a 4 yr combined degree in Computing & Media, as sometimes called or Computing & Graphic Design. It’s also really common for people wanting to go into our industry as “software engineers” to study a Bachelor of Engineering (Software) which takes 4 yrs & the first 2 are made up of the same subjects as every other engineering student. That’s what I did & we weren’t able to select a specialty to study until year 3 so in the first 2 yrs we all had to do basic intro units in all engineering fields like civil, mechanical, aerospace & chemical plus Calculus, Physics & chemistry!!! So I’m a real engineer but qualified in Software & yeah I’m a 27 yo chick too!!! The tern Software Engineer is really common here & I think closest to being a cross of how you describe programming & computer science. I think the longer your career goes on too the more blurred your title becomes because it’s pretty normal to migrate from one platform to the next learning new skills & languages as we go. When I graduated I was more knowledgable about the client/back end side of things but I’ve since i graduated ive picked up PHP, Perl & Ruby. Plus I can of course write XHTML/CSS/JS & am now learning some Ajax & improving my SQL & Java. Ive moved around a few jobs the last 10 yrs so its allowed me to branch out more so I’m not actually sure I fit in any of your little boxes!!!!. Krecken I would like to read the entirety of your comment, but I am finding it difficult because you made it all one paragraph and hard to follow. It almost feels like a run on sentence but in paragraph form. Pingback: Phân biệt khái niệm: computer scientist vs. programmer vs. developer | hajimezhao() http://thetechmag.net Saad lol this is best defined so far, I was always in debate with my colleagues & friends, now I know how I fit in the developer category (technically)… =P