Software engineering is an industry that has continued to mature over the years. With this maturity, the community is beginning to realize that it is important to recognize that Software engineers are involved in the process, which is versatile and complicated. This has led to focus on the human aspect of Software engineering and the factors that make either a good or a bad Software engineer. The people involved in the process of Software engineering include the software developers, the consumers, the teams involved and the organization. This essay looks at these factors, and how conflict that may occur during the process of software development, as well as how conflict can be amicably resolved. I will address the cognitive and social aspect of Software engineering with a focus on the characteristics that make good or bad Software engineers.

According to Benyus (2002), Software engineering has been the subject of lengthy debates. There are people who think Software engineering is an art while others view it as a science. Those who view Software engineering as an art have often pointed out to the beauty of the finished product. These aesthetic qualities, they say, is what qualifies Software engineering to be an art. As for the group that regard Software engineering as a science, they argue that it is a process that involves a lot of technicalities with a higher error rate. There are many people who see the intolerance for unreliability in the Software engineering field as a quality that makes it a science.

Creative freedom is not allowed in the field of Software engineering, and any product that does not perform as expected is regarded simply as a failure. Many analysts have argued that Software engineering is both an art and a science as it involves many aspects all put together. Sometimes it is totally amateurish while, at other times, Software engineering is purely professional. Different Software engineers have different approaches to Software engineering. Every engineer has a working culture or style, which he or she follows. Sometimes this results in good engineering and sometimes in poor software engineering. Apart from the technical aspect of software development, there are also the social aspects of software development.

Bad Points

Some Software engineers have an understanding and empathy for computer users who are not as experienced as they are. Often, when Software engineers get together to create new software, each person involved already has the idea of software they intend to create, in their minds. This is what makes harder for all of them to agree on a certain idea. There are those Software engineers who insist on creating simple software that any computer user can understand. Then there are those Software engineers, who are fascinated by complex software creation, and will only work on projects that they find exciting with no regard for the end user.

According to Cavanagh (2007), most software developers are relatively young. As a result of age, Software engineers are often rationalistic, idealistic, and most of the times come from the same background of colleges with a similar mode of education. These Software engineers do not have a wide understanding of the people and their needs in computer software. They are young and make the assumption that every computer user can understand software products. Some of them are not able to work well with their team members, as they lack the experience and maturity that is needed in serious and formal work places.

Most of the time, these Software engineers only get to know about the complaints that society has against the created software through video tapes of end users who either do not understand the software or find it difficult to use the new software. They often think that these users who complain about software are simply stupid and not able to keep up with technology. Sometimes it takes a lot of complaints from the society or from many users before the Software engineers can do something about the new interface.

In most cases, Software engineers are motivated by different goals. Sometimes software is chosen not because it is the best for the users, but because it is easy to describe to the users. Some computer software cannot be described on paper while others are easy to describe. Some Software engineers are careless, and sometimes this results in the creation of interface that users do not understand and, therefore, cannot use. Other complaints, which have surrounded Software engineers, pertain to their neglect and ignorance. Sometimes the society does not have a proper understanding of how the computer works and, as a result, the Software engineers are blamed for creating difficult software that cannot be understood by many users.

Sometimes the Software engineers are too concerned about making their contributions in the software known mostly by bringing underlying architecture of the software onto the surface. What bringing this underlying software to the surface does is that it makes the final product too complex for the end user with no programming knowledge. This development reflects the underlying desire of the Software engineers to get the society to recognize their contributions, which creates a problem, as the needs of the user are ignored, since more attention is given to the recognition of the efforts of the developer.

Software engineers often regard making the software understandable to the management as not very important. As a result, requests by the management for Software engineers to use a certain prototype, in order to make it easier for them to understand, are often ignored. A visible interface often attracts the attention of the management. Many Software engineers have realized that putting up screens and asking users to comment often achieves higher results, as compared to not very visible screens.

Good Points

Great Software engineers are those that are able to empathize with the society. They realize the problems that society faces and try to develop software that solves these problems. Good Software engineers are those that are pragmatic and yet know how to balance this pragmatism with perfection. The solutions they create are masterful, quick, yet elegant solutions for the problems that users of computers use every day. They also have the wisdom to choose an appropriate software solution for certain information technology problems. Unfortunately, there are those Software engineers that do not pay attention to the little details and the result is frustration by users.

When it comes to Software engineering, it is important for the Software engineer to have a healthy skepticism. Most good Software engineers design software, then test its usability and stop there. A great Software engineer is one who goes an extra mile to ensure that the software works perfectly. This involves a lot of testing of the new software by the Software engineer to ensure that it is functioning as expected. Data analysis is important and system administration will be some of the tasks that the Software engineer will be tasked to resolve. This ensures, at the end of the process, that the user enjoys the software, and it solves a problem.

A good software engineer is also one that can adapt to the needs of the society. Adaptability is very important because Software engineers have to work with different people with different needs and characters. Every single day new methodologies and technology emerge, and the Software engineers have to keep up with new developments. A good Software engineer is one that has a learning spirit and is willing to keep up with changes in technology. After a while, technology changes and Software engineers have to learn new things. Change will be needed at almost every stage of the software development process and as such, adaptability is an important quality that Software engineers must have.

Software development requires a lot of teamwork and constant consultations. Patience will be required of the developer as he or she works together with other people. Often, revisions are required, on the final product, to ensure that it fits all the requirements and expectations of the client. Again, patience will be very important in testing the software as a way of finding out whether it serves the purpose for which it is built. Users may complain that they do not understand the software and the way it works, in which case the software developer may have to work on it again and again.

Cavanagh (2007) insists that good Software engineers must always remember to deliver the computer software within the time agreed between them and clients. Once a deadline has been given, it should always be respected and the product delivered without compromising the quality. Any unnecessary delays may affect the business or community and permanently damage the reputation of the Software engineer. To maintain a professional image, the Software engineer should always communicate the progress of the software development process clearly. This will help solve any problems that may arise at the end and also manage the expectations by the management.

Software engineers have high productivity and always ensure that users are happy with their products. Great Software engineers are those that are able to maintain a great legacy. They are able to stand up for what they believe and will do everything in their ability to ensure that quality is maintained. Software engineers take the initiative to deliver their end of the deal, and they are always committed to high quality. Commitment is very important especially when dealing with corporate organizations. The Software engineer has to ensure that he or she portrays the proper image especially to his or her clients. When working with others, Software engineers must ensure that they maintain a team spirit at all times.

Mackenzie (2004) states that the field of software development is one that is full of compromises. Trade-offs are often necessary, because many Software engineers, management and end users have different views of how software should be created. The main goal of Software engineering is to create an interface that is usable and useful. Businesses literally depend on Software engineers and as such they must be people of great honor. Honesty will be needed for all Software engineers because, without honesty, no proper business can be conducted. Sometimes even people’s lives are dependent on these programs. This is the reason why society expects Software engineers to be people who are committed.

In conclusion, technological advances and new methodologies have been developed, and these developments make Software engineering much easier and faster. When Software engineers can use technology in the right way and stick to ethics of the industry, the society is a happier one. Proper communication and honesty are some of the most important factors that are important, and Software engineers must be inculcated in their everyday practice. Issues such as team work, relations between the client and the engineer and the learning process of the software development are some of the aspects that make Software engineering a social process.