I have been programming for a couple of years now. I worked in teams which delivered ERP level software as well as small team which delivered tiny projects. Other than my regular day job, i usually spend time writing code for my own hobby project(s). I devote time for reading tech blogs and follow a whole bunch of technical experts. The bottom line is, i believe myself that i know some part of this field, software engineering.
There are a lot of people / organizatoins doing software development. Some people doing it in the right way and some does not. I am going to point out some symptoms of bad ways of developing software here. These are my personal thoughts and it could be absolutely wrong in another persons view. I don’t care what those people think and will definitely try to avoid doing the following bad practices.
Not Hiring a Designer for your UI/UX development.
If you are not ready to hire a UI developer and you want to build great software, you are thinking it wrong.
User interface obviously play a major role in keeping your end-user happy. It plays a significant role in your conversion rates as well. Nobody wants to use a screen which looks ugly or looks complex. Why did that happen ? because most of the time those were created by the normal developer!
If your company has a UX team, that is great. If not, you should hire someone temporarily who really does the UX job to get the base theme/layout of your app. This layout/theme should include sample pages( HTML & CSS version) for all possible scenarios the app could use. Once the UX designing is done and approved by the upper layer, that should stay as the foundation of all future developments which the programmer does. the dev team lead /manager should make sure that his/her team is strictly following the template defined by the UX team. If there is a requirement to create some page element which was not defined in the base template, the developer should not simply add it himself (unless he is an equally talented designer himself, which is not very common). The request for this new page element should be routed to the UX team and they should handle that.
Remember, if your application is not providing a consistent look and feel, believe me, it is the worst thing. Never do that if you are serious about what you are doing!
Not Providing the developer PC to your programmers
I hate working with slow computers as you do. I loose all my enthusiasm and excitement of writing code if my machine hangs when i build my project. It is quite frustrating.
You should make sure that your programmers are happy about their computers. It need not be the super computer in the office. But a fairly faster one where they should not feel that it is slow when they run whatever necessary apps they use for their daily job. If your project is taking more than 6 second to build/rebuild, it is time for an upgrade. If you are not providing a faster computer to them, you are not only making them frustrated, but bringing additional delay in your project. Remember hardware is much cheaper these days compared to the developer billing.
Faster computers increases productivity. There is no question about that. If you are an employee and your employer does not understand this, it is time to switch your job.
Reinventing the wheel
This is a debatable point. Should you develop your own libraries when there are similar libraries exist which does a decent job ?. I would not do this unless i am developing such a library to really compete with the existing providers in the market. What is the purpose of developing another logging framework yourself when log4net and Nlog exists ? These efforts usually ends up in creating a library which may not be perfect as the existing one. One added advantage of the existing libraries are , they are well tested -used by the developer community. so it is reliable.
Reinventing the wheel usually happens with people who are not aware of what is happening in the industry. They are not aware that there is an existing library exist and lot of people in the community is trusting it. You don’t see them in any community activities. They are not continuous learners, which is bad for your team.
Creating a project plan which includes Weekends and Late nights
If you are creating a project plan thinking that the developer will work in the weekends and late nights for the delivery, you are not fit for this job. You are not realizing that the productivity will decrease as the developer works additional time. Jimmy bogard has written a nice article about the 40 hour work culture. you should go and read it.
Remember, a good project manager should be able to mange his people too.
Thinking that the newly hired fresher will deliver same as the experienced senior developer
No! Big No, is the answer. The newly hired employee can talk whatever he learned in the book and might have convinced you that he would fit for the (fresher) position during the hiring process. But the knowledge, wisdom of what works better than other, which the senior developer has acquired during his experience is totally different. You can not replace that with a newly hired college graduate.
The bottom line is if you are hiring a fresher to replace a senior developer. You are doing it wrong!
There are a lot of other miserable things happening in the software development process. These are the few which i came to my mind because unfortunately i happened to experience few of these during my career. Feel free to share your thoughts on this.