Friday, June 5, 2009

Software Engineer: Issues and Challenges

Software engineers in the industry are faced with different challenges in building quality software applications. Although these challenges shaped the way engineers build, they pose a great threat towards satisfying the needs and expectations of clients. Here are some of those biggest challenges:

(1) Complexity
The evolution of technology has made software applications becoming larger and complex. Unlike before wherein software is encapsulated in complex algorithms and pseudo codes, external factors including project stakeholders contribute to it. Stakeholders in the project have varying demands that it became impossible to achieve project success. In addition, clients nowadays are more involved in product creation and they are more demanding of the features for a product. Scope creep normally happens if changes to requirements cannot be tracked and evaluated.

(2) Unrealistic estimates
The complexity of an application makes it hard for an engineer to accurately estimate the schedule and project resources. The latest FBI Virtual Case File is an example of it. Just imagine the case wherein software is paid for but not delivered on time. In addition to that, changes to requirements contributed to it and to think that they can't be avoided. The absence of a mature process to define measurement of efforts and productivity significantly affects the prediction of the actual effort exerted during project execution.

(3) Non-productive costs
Crosby said that in everything we do, we need to "do it right the first time" to eliminate the cost of doing it again. For years, engineers tend to do repeat the same mistakes over and over again. We know that it is very expensive to fix the code when it was already delivered to the client and later on, reported that it had defects on it rather than fixing it early in the development process. Due to immaturity of organisations towards best practices and process maturity, the software processes remained unstructured and undefined.

Though there can be many challenges in building a software product, the above mentioned were just a few of them. It is essential to understand and assess their risks to your current software projects. The question that we need to ask ourselves is: why is it that we don't have time to do things right the first time but we always have time to do it again?

10 comments:

  1. We went to school to be trained. To have a better vision about reality. We went out to socialize. For us to have an idea on how to relate with people. Why did I said such phrases? Because we imagine things and turn it into ideas due to our experiences.But sometimes, due to our immaturity, we make decisions that are not realistic(This is true, right? "IMPULSIVE"). Organization in a project is really a big deal. I had this experience that I did not consider all the factors for my project to fail. For that, I failed. I was Embarassed. It was a project that involves large number of people. I learned it from the hard way to consider all the posible factors for a project to fail. I may be still a college student, more to prove.. But then, it's not nice to be..IMPULSIVE. What about those who are managing or doing large projects that include the world? IMPULSIVE?.. Hope not...Good luck..

    ReplyDelete
  2. Software Engineer: Issues and Challenges.
    Software Engineers seems to have a hard time in building software applications for clients.
    A software application that a software engineer builds needs to satisfy the needs and expectations of clients.
    In order to satisfy the needs and expectation it should have specific requirements and the changes to the requirements must be tracked and evaluated
    The main reason for not meeting the required requirements and needs is the changes to the requirements which meant to change again the target date or to develop faster which affects the quality of software.
    Other reason is to fix the problem when the application is delivered. To eliminate the cost of fixing the problem is to it right for the first time, so that you don't have to fix any problem.

    ReplyDelete
  3. Maybe the "issues and challenges" that Software Engineers will encounter in the job depend on what resources he had, like his/her knowledge and skills in solving or analyzing specific things. For me there's no complex problem to a person who already knew how to deal will it in the first place. But the greatest hindrance that I observe is the quality of education that is delivered to Software Engineering students not only locally but around the globe. Like what I had learn from my director in high school that most schools especially universities only train students what only fits on the "school requirements". Actually the real thing is we should "Study for life not for school" from Msgr. Alden Bolivar. So "issues and challenges" only test the Software Engineers what they only knew. The very fact is "What makes things complex is based on what the person only knew".

    ReplyDelete
  4. Some issues and/or challenges software engineers or other related field is somewhat linked together. The complexity of the software is just the beginning of these issues. Another factor is the client; some clients do not know what they really want for their software, some of them would change some of the functionalities of the software in the middle of development. This is where the “unrealistic estimates” come in, because of the changes; it would result to the extension of the deadline, and thus, more resources are needed. The project team has to decide whether to have overtime or hire more people to do the job to meet the deadline. This would sacrifice the quality of the software project, although the project has been finished, there is a possibility that “bugs” exist. The problem of fixing the software is again returned to the project team, thus, another waste of resources.
    Software developers cannot blame the client for their problems; they should guide their client to know exactly what they want to avoid these problems.

    ReplyDelete
  5. The issues and challenges of software engineers are becoming bigger and more complicated because of the worldwide competition facing by their respective clients. It is important that engineers and clients must work hand in hand in implementing software applications to reduce impossible products and outputs, minimize cost expenditures and reduce development time consumption.

    Software engineers should also act like lawyers by correcting impossible requirements made by the clients, looking forward what would be the outcome of the client's expectations and desires ,and to estimate how much funds is to spend in developing the software.

    ReplyDelete
  6. Of course Issues comes in before challenges. Without those issues puzzling in the mind of a person, there will be no challenges. In software engineering, there are 3 major issues, and this 3 are somewhat in series or linked to each other. The first one is the Complexity. Complexity won’t come in the development if the team and the client had an agreement between them. This complexity comes when the client demands an additional feature or wants to change something on the software he wants. To avoid this, you must have an agreement between you and the client. The second one is the Unrealistic Estimates. This one results from the first issue which is the complexity. For example you haven’t made an agreement between you and the client. The client will now have the freedom to demand an additional feature or to change or to delete some features on the software he wants. This new demand or change will result to an extended deadline, which will need new resources. These resources can be in the form of personnel or budget. If the team decided to have it on time, either the team will work overtime to finished it or add an additional personnel to work for them. This two for sure will affect the budget for the development. The third is the Non-Productive Cost. This will be the output of the first two issues. If at first the team made an agreement between them, there will be no more changes happening to the development, no more extension of the deadline, no more additional budget. If this happens, the product for sure will be delivered just on time and working great. The team had already estimated how many months to finish the software. And with that span of time, they had already made the essential things and methods to assure the quality of the software. The software must be do it right the first time. But still, issues and challenges depend on the team handling the development.

    ReplyDelete
  7. The problem is that the three challenge are contradicting or making the other hard to obtain.

    First, Complexity. Making the software must be complex with its functionality. But, making in complex must be supervise by the clients demand. If the client is not satisfied, you have to change them. The result is contracting Unrealistic estimates because you need to modify it but still the same deadline and Non-productive costs because changing it would require more resources to spend and making the first settings wasted.

    Second, Unrealistic estimates. Being on the time and punctual is very necessary to the industry. But, it makes the software's creation in a rush. In a rush mode, there would be things that will be accidentally forgotten that could make the client dissatisfied and will ask you to repeat again. Moreover, you'll spend time and resources again to start over the modifications.

    Third, Non-productive costs. Being accurate in making something makes the resources spent less and to reach its perfection. But, as time goes, the demand of the client could change or even alter it. Doing the right thing could be the wrong thing for the client. If that occurs, you need to change those what the client demands and making it more complex of what was done. Therefore, the software that was created is imperfect. Even if the software will be made "perfect", it will take too much time to "perfect" it which will contradict Unrealistic estimates since there's always a deadline. With a deadline, perfection is impossible.

    ReplyDelete
  8. These issues and challenges in software engineering have a lot of factors why these are happening. For example is the fast evolution of technology. Every time technology advances, the SE process needs to cope up with the standards and need to satisfy the needs of it. Considering that technology advances like annually, it is hard to maintain the said standards for software engineering as it will also annually change. Another factor is the never-ending needs for satisfaction of the clients. As the client asks for more requirements for a project, delay and costs increase. Technology affects this because as it advances, the expectations of clients flow as technology continuously develop. All of these may result to non-productive costs. As said, the absence of these stable standards results to these non-productive costs that should have been “that” productive as the software engineers expected it to be.

    ReplyDelete
  9. From the very first time it is already a challenge to develop software that is right. In complexity, demands has no limitation it only depend on the market trend, expect it. challenges and issues is always a part of the project. as long as humans exist there will be changes and adjustment.Challenges and issues is not a surprised, it is expectation and desire.

    ReplyDelete
  10. The greatest challenge to software engineers is to surpass the new innovations in technology by creating/building quality software applications to satisfy man’s needs and wants. Three of the biggest challenges software engineers facing nowadays are complexity, unrealistic estimates and non-productive costs. Unstoppable changes in software applications made it larger and complex. To get rid of these have a scope and limitations of the project. Unrealistic estimates, frequently the project haven’t reached the schedule of the submission of the project. These often happen if the project has many changes and has affected the time management of the team who creates the software application. Non-productive costs, in creating a project, the money allotted should be spent wisely so that it will not be worthless. The repetition of the project failed was a waste of time, money and effort. Doing the project perfectly the first time around is the most significant thing we should set in our mind. Our clients will be satisfied with what we’ve done and we could gain their trust effortlessly and for them to give us more projects to do.

    ReplyDelete