Software development is a very complex task, building good software requires applied software engineering principles. Some classic examples of not following software engineering principles which leads to bad software.
Classic mentality of a new software developer
Most software developers start coding with competitive programming where they solve a predefined problem with predefined constraints and predefined test cases. But that is not at all similar when they start working on real life project, where there is so much ambiguity, complexity, team work. There along with problem solving, applying software engineer principles are must, which a software developer tend to leave way behind while trying to improve problem solving skills.
Classic mistakes while managing software people
- Heroic attitude, emphasis on can do attitude, so this idea that one person by herself or himself can do everything and can make difference in whole project, unfortunately this increases risk taking and discourages cooperation, which is plain bad for the project. So it is important to have team work and cooperation among the different team members, without pointing too much on single individuals
- Not creating the right work environment. We all like to work in nice environments. Poor people management can lead to very unhappy personnel, can reduce productivity and result in people leaving teams.
Classic mistakes while managing software processes
- Unable to come up with realistic schedule. So to have an overly optimistic schedule, this is because we underestimate the effort involved and overestimate the ability of people involved.
- Bad schedule can lead a project being delivered late or delivered with very low quality.
Classic mistakes of software products
- Gold platting of software requirement, it is very common for projects to have more requirements then they actually need.
- More features lengthen the project schedule in an unnecessary way.
- Feature creep is another common mistake where features are developed not planned initially and not needed in most cases.
Classic mistakes of software technology
- Silver bullet mistake, to much reliance on newly advertised technology, for example a new technology, and the problem here is that we can’t expect technology alone to solve our software development issues. So we should not rely too much on technology alone.
- Another typical mistake is to switch tools in the middle of project.
- Lack of an automated version control system like git.
- 11 Dec 2017 Emberjs achieve two way binding with native input tag and discard input helper
- 11 Dec 2017 Ember js concatenate all third party js files present under vendor folder to vendor js
- 10 Dec 2017 Stakeholders agree to the requirement and then later on says this does not serve my purpose
- 10 Dec 2017 Sheet comparison of frontend js frameworks
- 11 Nov 2017 Why is it so hard to develop good software
- 04 Sep 2017 Is Graphql here to replace REST Api
- 05 Jun 2017 My awesome list of english songs
- 29 May 2017 Troll software intern
- 17 May 2017 What is icon font and why use it over png.
- 16 May 2017 Philosophical difference between ruby and python.
- 15 May 2017 Given an array, find number of subsets with k elements, where absolute difference between the maximum and mininmum element is at most x
- 15 May 2017 Automated testing of google autocomplete using cucumber and capybara
- 15 May 2017 How to manage assets in rails, difference between app, vendor and lib assets, what is asset pipeline?
- 15 May 2017 Swap elements in dom by drag and drop.
- 15 May 2017 What are the options with which protect_with_forgery is called?
- 15 May 2017 How to add csrf in ember app.
- 15 May 2017 Sessions and csrf in rails.
- 15 May 2017 Best practices while using ooor gem for making rpc calls to odoo(openerp) from ruby framework
- 09 May 2017 Integrate paytm payment with rails app
- 08 May 2017 Automated deployment on github pages using jekyll themes.
- 01 May 2017 How to add inline image in gmail.
- 01 May 2017 Undefined method `user_confirmation_path' error with devise rails.