Friday, June 5, 2009

I am a Software Engineer, not a Computer Programmer!

There had been a misconception that a software engineer is just the same as a computer programmer. In an advertisement, the advertiser would say that they are looking for a software engineer but if you just examine the contents of the job description, what they are looking for is a computer programmer position (e.g. who can code and test using C#, Java, etc).

The phases of building software applications normally consist of requirements, design, code, and testing. These four (4) major phases of software development are performed by people with varying skills, for instance, systems analyst for requirements, technical architect for design, computer programmer for coding and software tester for performing tests. As you can see, the computer programmer is mainly concerned with, say, low-level design to code and possible unit testing in a certain piece of software. It would be hard for a programmer to act as a systems analyst, for example, because of his inability to interact with clients for defining business requirements and their focus is more technical in nature.

On the other hand, software engineers are mainly concerned with the whole software development process. It is assumed that a software engineer understands customer’s problems and transforms it into a software application that can somehow address those problems. That is what "engineering" in software engineering really means. He should understand the requirements process, design methodologies, program codes, testing methodologies and even the maintenance of different software applications. He can even lead a team of developers to build a software product because of his orientation towards software project management.

The roles we chose in development are dependent on the skills we have and what we love to do. That is why, it is important to make a distinction between these two fields. It can prevent overlapping of responsibilities that can affect the quality of the software products we delivered to customers. Software applications are becoming larger and complex that a software engineer is needed. Programmers are not enough. In order to deliver the product that the customer really wanted, it is important to understand the customer’s business environment in order to solve the real problem of customers.

14 comments:

  1. I must say, I really hate when this keeps going on. Though I'm still a student studying in its course, I already experienced the misconceptions. People who knew my family think that my future outcome would be a programmer. Others are still asking what Software Engineers actually do. My aunt has even the worse thought of Software Engineering that for her, the course is "just a better version of Information Technology". Forgive her. She only thought of those because she boasts her son, an Information Technology graduate, was the best among all of us cousins. I'll make her dreadfully wrong and even surpass him when I become a true Software Engineer.

    The profession was established not too long ago so Software Engineers are mostly unknown to the public. People are only need to be aware of the existence of them. Both Computer Programmers and Software Engineers are closely related and that makes people confuse. Some also got confused on between program and software. Although Computer Programmers may think, act and do like Software Engineers but they will never be called and acknowledged as Software Engineers in the end. The two are still different things and it is a fact.

    ReplyDelete
  2. I am a Software Engineer, not a Computer Programmer! At first, I was also confused of what is the difference of software engineering from computer programmer. But later I found out that software engineering does not only deals with coding but also gathering the requirements, designing and testing the software application. Anyone who has an experience on programming can be called as computer programmer (even though you’ve learned it all throughout yourself). As a computer programmer, you’re only dealing with low-level or let say class level design to code and test a system. Unlike software engineers must have to take a lot of considerations when designing a system. Software engineers doesn’t only think of “what does this system need to do?” but instead “what are the things that the client need to have in this system?”, “how are we going to test this system?”, “how are we going to deploy this system?”, and etc.
    In software engineering, you can’t only be a programmer. You can be a system designer, a system analyst, a project manager, a document manager or a tester. Your role will depend on what skills you are best at.
    Software Engineering has a lot to do when it comes to discipline that’s why it was created under the engineering course.
    Nowadays, there are a lot of large software applications that a software engineer is needed. A computer programmer is just a part of software engineering. So you can’t say that a software engineer is just a computer programmer.
    If you’re still confused, just visit this link http://ezinearticles.com/?What-is-the-Difference-Between-a-Software-Engineer-and-a-Computer-Programmer?&id=1899417.

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. I agree that being a programmer, although it plays an important part in software development, is not enough to achieve good quality software. The things that make a software successful are actually not all programming/coding, programming is only a part of it There are lots of phases in software development, some are already mentioned above. For example the software design, which is one of crucial parts of software development, guide for the programmer, without it, it would make it hard for the programmer to code an efficient program.
    Based on what I have read, but I don’t really know if it’s true or not, most software engineers today have a computer science degree, not engineering. Maybe that is why there is a misconception between software engineers and programmers.
    I have also read an article which stated that the building software is like building a structure and hiring a programmer is like hiring a contractor. It is okay if that project is a small scale project like building a house, but what if you are building a sky scraper, would you still hire only a contractor? Of course you hire an engineer or an architect to plan the project and have the contractor help out building it. It is also true in software development; you need to plan out what you need to do in order to achieve what you need to achieve, in this case, good quality software. Like what I stated above about the design, it acts like the blueprint for the programmers to follow.
    It is true that software engineers need to be versatile, but we all have our weaknesses, so software engineers need to carefully choose what field and which part of the development they need to be in.
    My point here is that the two fields are related, but are not interchangeable, software engineers can be programmers, but programmers cannot act as software engineers unless they are knowledgeable on what a software engineer does.

    ReplyDelete
  5. I’m a Software Engineer , not a Computer Programmer !

    When I was searching for a course to enroll in I thought that Software Engineering, Information Technology and Computer Science are just the same. But later I realize that Software Engineering is somehow different to IT and CS.
    In this article defines the Software Engineer from a Computer Programmer.
    I believe that there is a difference between a Software Engineer and Programmer.

    Software Engineers could not build software without a programmer. But a programmer alone could not software applications by themselves; they need to gather the requirements which the analyst do, the designer for the design and the tester for possible unit testing.
    Even a programmer is a large part in software development process.
    In the field of Software Engineering, programming alone is not an essential skill.
    It also includes skills to analyze, to design.

    In a certain article I read from http://www.stevemcconnell.com/psd/04-senotcs.htm
    During the software development process a certain user identifies himself/herself as
    “During software design, I’m an architect. When I’m designing the user interface, I’m an artist. During construction, I’m a craftsman. And during unit testing, I’m one mean son of a b*tch!”

    ReplyDelete
  6. I think it is necessary to have distinction between Software Engineers and Computer Programmers. As far as I know the drastic misconception about the real worth of a Software Engineer makes the general public to traumatically truncate the eligibility of a Software Engineer to function as for where he or she was prepared for. The only thing that comes in my mind when thinking of this misconception is the deterioration of their morale due to misconceptions of their true worth in the industry to the public. But for me what makes it difficult to fix this error is the low capability of the public to “accept what is the fact”, because the public only believe on the idea first instill in their brains also the same as what Roman Catholic triggered as they believe that the public is just only a a bulk of scraps easy to manipulate with.

    ReplyDelete
  7. When I was in high school, I thought software engineering is a course which merely focuses on programming languages. I was surprised when I saw my prospectus that Computer Programming is just a subject in software engineering, and software engineering deals with the design and development of software applications. Some people have thought that in order to become a software engineer, you must master the programming languages needed in making software applications. But it is not necessarily mean that if you know how to program, you know how to interact with clients, design a software using software development processes and to develop a more secure and reliable application.

    ReplyDelete
  8. This field is really not just about programming. For it also includes designing and managing. Programming is just proramming. but software Enigneering does have a wider scope. A software Engineer does not just seat and program. They consult to the costumers and collaborate their knowledge. Programmers does just codes, but Software Engineers does it too and innovates it and desin. There's similarity but software Enineering have that far edge.

    ReplyDelete
  9. This comment has been removed by the author.

    ReplyDelete
  10. The misconception between a Software Engineer and a computer programmer is always been a problem. You really got mad if someone asked you; “What’s your course?” and you answered it “Software Engineering”. The first thing they will say is that “You’re a computer programmer” wherein computer programming is the job of a computer programmer who can code ant test it and it is a part only of being Software Engineer not totally that you only do programming using java, C++, C# and many other languages. A Software Engineer has the necessary abilities or skills for interaction that can be of best service to the clients. Specific functions like building and designing a software applications or developing a software using software development process in making and managing a big project. It is true that to prevent the overlapping of responsibilities between the software engineer and computer programmer we should make a distinction between the two so that we can avoid unnecessary issues or problems to arise and to produce valued products in the market.

    ReplyDelete
  11. This comment has been removed by the author.

    ReplyDelete
  12. The uncertainty of being a programmer or a software engineer affected my decision in choosing this course and will be affecting the decision of those who will be enrolling on this course. There should be a boundary that will separate the two. I guess the fact that Software Engineering (SE) is an engineering course, makes it different from plainly programming. In SE, concepts of engineering are taught and observed in contrary to the part of programmers. But because SE is still growing, its function is not yet that clear to the public. I think it is still a challenge to the next software engineers to make a limit between the overlapping roles of programmers and software engineers.

    ReplyDelete
  13. Nearly everyone misinterprets what is software engineering, including me. They frequently compared it to the computer studies like Information Technology (IT), Computer Science (Com Sci) and Computer Engineering.
    When I was in first year level, I thought the course I was taking can’t fit my skills or ability about software stuffs. Especially after taking up SE 121, it is more on programming. Obviously the subject description is about programming. I was planning on shifting to the other fields of engineering by the next school year at that time because I can’t force myself to a programmer. But something changes my mind. Engr. Robles, my teacher in SE121, gives us a piece of paper. It’s about job positions that a graduate software engineering can attain. I was surprised! Software engineering has many more to offer and it is beyond my expectation.

    As what is posted in the blog, in the second paragraph, I completely agree. Professional programmers are not the only main thing can a software engineering is. There are many fields or much higher than the position of a programmer. Software engineering is not only focuses on the codes. It more center on the development. To develop a project that fit the needs of the users or customers. To satisfy or to fulfill the project developed, programmers can’t do that all alone. And without the programmers, the develop project would not be successful. In the other word, it will FAIL.

    ReplyDelete
  14. “I am a software engineer, not a computer programmer!” I don’t know who the genesis of this tough quote is. This really give sense, a software engineering student I can say that programming is not supposed to master as long as you know the fundamental, it’s enough.
    In developing software, programming is not only the concern. It is oblige to understand the problem of a client and what he wants in order to proceed to the other process that is why it is software engineering.
    To make the project to be finish in short time it needs a pattern to be followed where the design comes. After that the programmer interacts for coding but that is not the happy ending of the projects there are many things that need to be done. The customer always wants efficient and cheap products. This area is to be analyzed of Software Engineer.

    ReplyDelete