Answering the community’s demand the article 50 common lifetime mistakes about software development has been created, such as technical, lack of knowledge, improper use of codes, copy/paste, anti-pattern, misunderstanding of the business among other topics. All mistakes from which I’ve witnessed and no doubt, in some cases, fell into them as well.
Without a relevance order, the list is:
1 – Hands-on mode.
Who have never seen someone start to coding without even planning the solution? Just turn on hands-on mode without analysis and detail planning. And when he reaches further must change everything or just drop it.
2 – Lack of knowledge about the business.
Without the knowledge about the business itself, just with a punctual requirement and a single vision about the functionality and with no idea about problems that could occur in the future.
3 – Unknown infrastructure.
Many developers don’t know or don’t care to know about infrastructure, as an example how does a web host works or the memory recycle bin among other subjects. Maybe if developers knew the basics on environment, solutions and programming would be different.
4 – Incapability to speak user language.
Most are extremely technical and unable to relate to the user language. Meaning, they can even understand programming, solving coding issues, but are unable to make analysis on the user’s requirements.
5 – Guilt free.
He never takes the fault! The guilt is always of the person that didn’t tested or of the guy that required that should be this way or even from the former developer.
6 – Estimate hours only for development.
The hours estimative are based on the amount of times a fly swings its wings divided by the turtle steps in a minute. Mostly the estimative have no real basis and it is forgotten they need hours for analysis and tests beyond the development hours.
7 – Fear of changes.
When a new technology comes out it’s like “Oh my god! It’s going to take a while to learn, it’s hard, I won’t be able to deliver…” goose pops show up even though he hasn’t looked up anything about it. Most of the times it would help way more thru knowledge as work quality.
8 – Overthink that others are better than yourself.
Developers a likely to think that the other developer is better than him. Nevertheless, he tends to forget that better is not always only knowledge but the role package, commitment, responsibility, punctuality, etc. Relax man!
9 – Want to create Web with Desktop concepts.
The developer who think that only the fact of knowing how to program in C# and have worked with Windows Forms is going to be able to develop a Web Application in MVC for example. Start to program using desktop concepts and get side-tracked at the client/server concept.
10 – Code Jealousy.
“What a beautiful code! Wonderful! Can I see? Don’t touch this! Don’t change anything in that part…” When someone is going to change something in the code that someone else created is always war and the manager must interfere.
11 – Want to create Mobile with Web concepts.
Another interesting point is when a programmer start to develop Mobile Apps with the looks or concepts of Web. It’s easy to realise that what has been done looks like a responsive webpage.
12 – Under usage of Design Patterns.
Design Patterns were created to be used. They were exhaustively tested before becoming a pattern. So, let’s not reinvent the wheel. Use Design Patterns!
13 – Don’t follow any software architecture.
Software architecture? What is that? Developers are architects of its own ego and ignore the basic principles of separating the responsibilities.
14 – Viewstate is the madhouse.
I’ve seen lots of developers use and abuse from the famous Viewstate of the Webforms, filling it up with dataset and almost a full database.
15 – Try and error, without reading the documentation.
Another interesting subject. Who have never seen a developer try, try and try without even looking at the documentation?
16 – Coding without comments.
/* NO COMMENTS */
17 – Copying and Pasting code unsure of what it does.
Many programmers say: “Copy and Paste that it should work!” And you ask: “What’s that for?” Answer: “Don’t know, but it works!”
18 – Don’t follow the best practices.
“Is it working? Yes! Good enough.”
19 – Don’t follow a pattern or logic.
Do something here in one way and the same there in another completely different way. “C’mon man, follow some pattern!”
20 – Don’t know Exception error meanings.
Exceptions are Hieroglyphs!
21 – Don’t handle possible null reference exceptions.
“We have a winner!” The biggest cause of errors and bugs on software.
22 – Public classes variables.
Properties where created as ways to access variables, so instead of leaving the variable as public, change it to private and create a property to access it.
23 – String concatenation using + signal.
Using + to concatenate small strings it’s ok. However, for a giant string is a bad idea. It’s proven that using StringBuilder is faster more reliable for this matter.
24 – Forgetting the IDisposable.
Creating classes without an IDisposable is not an entirely a mistake, well sometimes you can forget!
25 – Got an Error/Exception? Hello StackOverflow.
Just ignore what is written and search the error in StackOverflow website or google it! “C’mon man, read the error!”
26 – Not knowing how to debug.
Debugging is black magic! I shall not do that!
27 – Not studding, staying at the comfort zone.
Only do classroom course, have got to have a coach taking you by the hand to do everything? Grow up and go study!
28 – Not aware of the platform premises.
I strongly believe that the programmer, at the beginning, must know some premises about the technology such as programming language or platform. Therefore to be able to start developing something.
29 – Just say it: I don’t know!
I could say that this is one of the biggest mistake made by developers, or should I say, made by humans. If you don’t know the answer, be bold and just say it: I don’t know!
30 – Solve problems palliatively
“Use this. We will come back to this latter.”
31 – Run down someone else’s code.
“This coding sucks!” Everything is funny as long as it is happening to somebody else.
32 – First come, first serve implementation.
“Good enough, let’s implement the first solution” Will that be the best solution?
33 – Saying it’s easy or fast.
“Is this able to be done? Sure it’s easy!” When you look at it, it has been a month …
34 – Say it’s going to do one thing and doing another.
This really piss me off. It’s agreed to have something done, and something else is.
35 – Use switch/case for everything.
Switch/case oriented programming, I’ve seen codes with more than 20 cases. Tough to look.
36 – Recurrent code.
Why bother in creating a DLL? It’s better to repeat the code as many times, right?
37 – Say it’s understood, come back in 5.
“Did you get it?” “Yes! Sure!” 5 minutes later. “I didn’t get it.”
38 – Usage of Foreach with lots of data.
To use Foreach with a big amount of data can be a technical mistake. But let’s give it some credit.
39 – Not using version control in source code.
Just upload the code to the web and it’s all good. Shared code!
40 – Just do it, without questioning or suggesting anything.
Monkey see, monkey do. Even if doesn’t know what is doing.
41 – WOP – Workaround-oriented programming.
Workaround is a quick fix to a problem that don’t have an immediate solution.
42 – To use try/catch inside a try/catch or a try/catch in chain.
I’ve seen some try/catch chains that shocked me. It could be broken in more than a method and avoid a Cyclomatic Complexity.
43 – Web.configs are for AppSettings.
Is there anything else inside the web.config beside the connection string with the database and AppSettings?
44 – Excessive use of System.IO.
To use the disc System.IO instead of the memory.
45 – Forget design/UI.
“Design is for the Web Designer, I don’t want to know about that!”
46 – Not handling exceptions.
You know that at some part of the code it has a high chance to generate an exception. Well if you know, why don’t you handle that?
47 – Not enable cache for static files.
Leaving images, styles and scrips without cache configuration.
48 – Use more than one website or virtual directory at the same application pool.
The best practices tell to create on application pool for each website/virtual directory. Is that too much to ask?
49 – Not be a programmer.
Source code copier programmer.
50 – God complex.
Narcissism, delusion of grandeur, feels like you are above everyone and everything.