Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
Someone within my organization has started pushing for us to pilot the CMU SEI's TSP process (see website here). I have an instinctual aversion to any attempts to cure software development illnesses with alphabet soup, but I would like to know if anyone has experience with this process and can provide tangible facts.
I used to be a fan of SEI's CMM. I even read Watts Humphrey's "Managing the Software Process" book cover to cover. I haven't used TSP but I suspect it has similar strenghts and weaknesses as the other software processes.
Definitely read about it and what they claim it can do and how to implement it, but be vigilant about keeping your software process small and flexible. You need one, but be careful about taking processes from someone else.
good luck.
We've been using this process for a few months now and I'm not particularly impressed. This process is only suitable for a strict command and control style of management where programmers are essentially bean counters. Most of the good parts of this process (size estimates rather than time estimates, self reviews, detailed plans, logging time against plans, and keeping a log of defects and errors for later review) can be implemented without throwing a bunch of money at SEI.
Related
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 7 years ago.
Improve this question
I'm developing a preventive maintenance strategy for an industrial plant based on RCM (Reliability Centered Maintenance) methodology. For this job, I need to choose one CMMS (Computerized maintenance management system) among several options but I need to do it in a clever way.
Is there some technical procedure to make a Comparative Assessment of Software Programs and get to know what is the better CMMS option? Any standard, table or matrix?
Thank you so much
I found an insteresting document with a Comparative Assessment of Software
Programs very useful for me developed by the IRIS Center at the University of Maryland.
Comparative Assessment of Software
Programs for the Development of
Computer-Assisted Personal Interview
(CAPI) Applications
This scientific article could be useful as well:
Comparative Assessment of Software Quality Classification Techniques: An Empirical Case Study
EDIT
There are Sites like Quora that are better places to make this kind of questions
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I have been trying to learn the basics of software engineering principles, but I have come across a question that I cant find enough detail on to answer, any help would be appreciated:
For each of the process models (i.e. waterfall, incremental, prototyping
and spiral), how does the model handle a significant change in requirements late in the
development?
Thanks in advance.
I think this question can be simplified - broadly speaking there are two types of software development life cycle:
Iterative (or agile) methodologies like Scrum and Extreme Programming.
Sequential (or "big design upfront") methodologies like waterfall.
The iterative methodologies rely on the experiential feedback from within the project. In Scrum, the sprint review provides guidance concerning what can be achieved in the next sprint and the review of the product backlog can promote the latest requirements to the top of the priority list. In iterative methodology, the evaluation phase of the increment can feed into the planning for the next iteration.
These two examples show a clear point at which the methodologies can adapt and react to new requirements.
There are of course some specific details beyond this broad stroke explanation. For example, a Scrum team wouldn't actually change scope until the end of the sprint - unless the sprint was completely abandoned. As a result there could be a small delay before new requirements could begin implementation.
With the more traditional methodologies such as Waterfall, accommodating adaptation is more difficult because you are constrained by the current phase of the series of phases. To adapt requirements it's likely going to involve non-optimal design and implementation because of the nature of the change being bolted on. If the changes in the requirements were significant enough the entire development may be abandoned and restarted. At least with the agile methodologies you will have already developed, or in fact shipped, some increment of business value.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I hope this is not a vague/broad/subjective question. If it is, please close it.
Anyway, at several programming competitions (like Google's Code Jam, Facebook's Hacker Cup and so on), by the time I've successfully understood a problem and have an inkling of how to approach it, I see that half the questions are already solved by many people.
My question is, how do these people get so good? Is it pure genius? Is it experience? Is it the ability to think really fast? How would you suggest I improve my skills? I would say I'm a competent programmer. I can eventually solve some of those questions.
Additionally, whenever I inspect the code of winners, I see a LOT of macros being used. This implies to me that they sort of have a template (like #define for loops to some abbreviated version) which they use to program faster. Does this make a significant difference?
The thing is, you're competing against people who've spent massive amounts of time mastering their skill to compete in these competitions. You're unlikely to catch up any time soon, but...
How do these people get so good?
Have the theoretical knowledge to solve the problems and practice, practice, practice.
Is it pure genius?
It can be, but practice can to a reasonable extent make up for it.
Is it experience?
Yes.
Is it the ability to think really fast?
Not really. Practice allows you to approach the problem correctly and skip insignificant details in the problem statement.
How would you suggest I improve my skills?
Get the theoretical knowledge and practice.
Do macros make a significant difference?
It may cut 10% off of your time, but probably not much more.
Statistically speaking, any programming competition with a large enough audience will attract super-talents who can churn out nice and elegant code at super-speed. It's like running the marathon. Running it in 4 hours is really good, even if the world record is around 2 hours. Don't worry about it.
Focus on code quality and elegance instead, instead of being able to churn out code at super-speed. Practise, have fun, and don't look too much at how fast other people are working.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
Scrum is one methodology in agile software development right? What are the main activities in Scrum?
I hope this will help.
Nains...
Scrum is indeed an agile software development methodology.
It's more then a set of activities - there are a set of core assumptions and ideas that underlie the activities. Nains' answer contains a cheat sheet explaining very briefly the important concepts.
To answer your question in the most basic sense.
Gather user stories
Determine priority within these stories, chop them up in small, manageable tasks.
Code-code-code
Every day: short meeting where team members explain their progress, what they're working on, and where they get stuck on.
Every two weeks (or week, or month... depends on your project): deliver a working copy of what you have.
Return to step 1.
One such loop is called a Sprint. The essential step is that you begin by revisiting your assumptions what the software needs to do - the user stories, and their priorities.
Also note that this is a short cycle, within a very short period of time, the users get feedback.
Note that there is a lot more to be said about Scrum - if you want more details, I recommend a good book, or at the very least reading the Wikipedia article.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
Ruby coders: How do you monitor your productivity?
I'm curious to know what you use to keep track of how much you do and how well you do it.
For any programming task, the best way to track productivity is by tracking requirements/features delivered. Every agile methodology puts emphasis on delivering working software [read meeting part of the requirements each sprint]. So indicators such as number of lines etc. is moot [when you have a person pair programming most of the time and checking in code with the other person's login].
As with an language, you must set goals/milestones for your project. You then break those goals down into individuals tasks. The smaller and more specific a task is, the easier it will be to track your progress. I use a project management web application called Redmine to keep track of these tasks. After I have devised the tests, I begin creating the code tests that will outline the code criteria for each test. My primary use of Ruby has been with Ruby on Rails which has excellent support for testing. Once I am done with the tests, I begin coding the application. When the application passes all the tests for a given task, it can be marked as completed.
At the beginning of a project, you can judge by the relevancy and number of tests. Afterward, the number of passing tests.
Relevancy is the key word, of course. If the code doesn't do anything yet, or doesn't deliver any value, then getting it to that point is your number one test of productivity.