Wasted Time Matrix

Having programmed for almost half a century I have come to realize that much of my time is spent on common problems.  I will try to list the reasons, and try and make sense of how to improve software development. The objective is to remove all of this wasted time from programming.


  Reasons we waste time
1 Case sensitive characters
2 Wrong Index
3 Typing errors not caught by the compiler
4 Database connection strings
5 Using the wrong API function
6 Version dependencies
7 Invalid use of keywords
8 Client / Server incompatibilities
9 Poor or non-existent documentation
10 Conversion of data types
11 Determine the reason behind a failure message
12 Translations of character formats
13 Printing debugging development listings
14 Multiple computer languages in a project
15 Not understanding of a computer term
16 Having to rewrite a subsystem
17 Parsing known structures
18 Not being able to parse known structures
19 Determine and writing workarounds
20 Plurals and singulars
21 Looping through structures
22 Reading documentation
23 Rewriting algorithms
24 Reading and Writing files
25 Binary representations
26 Binary number limitations
27 Speed, having to write basic search, replace and management structures
28 Limited knowledge about a function or subsystem
29 Looking for software products to perform some algorithms
30 Unreadable code
31 Compiler and Assembler limited capabilities
32 Changes to the operating system
33 Limited access to the screen
34 Access to Hardware devices
35 Searching for system enumerated constants
36 No standard Install procedures
37 Security, not knowing, having to override in an unsecure way, or blocked
38 Limited programming character set
39 Limited memory logic
40 Exception handling, or the lack of, unable to trap, unable to get message, unable to understand, unable to hide
41 Hardcoded logic
42 Lack of conventions
43 Ever moving target
44 Dependencies
45 Limited source code data handling by the compiler
46 The C programming language
47 Icons, having to create, limited capabilities (on/off)
48 No font creation capabilities
49 Command line logic everywhere, unable to determine logic
50 File conventions
51 File name parsing
52 Software running modes, lack of (production, development, training, quest,...)
53 Components, lack of, having to settle for
54 Lack of pricing models
55 Obsolete or no longer supported
56 Path and file management
57 Locating or creating sample data
58 Locating source code (my own or others)
59 Backups, doing and finding
60 Incompatibility between vendors, (browser, compilers, operating systems,...)
61 Splintered logic at the compiler and data representation levels
62 Incomplete or wrong logic
63 Limited time and resources, having to implement shortcuts
64 Assumptions, not knowing making a guess, or think we know
65 Switching horses in mid stream,  finding out that a subsystem does not work, or does not do what is advertized
66 Debugging, and writing debug listings
67 Include statements, having to know what and where resources are
68 Incompatibilities of structures
69 Proprietary data structures
70 Incomplete system functions
71 Date format, unknown index and position of a numeric Month
72 indistinguishable characters  One (1) and lower case L,  Zero (0) and Uppercase O
73 Heteronyms, words spelled the same but pronounced differently, "Wind" - movement of air, and "Wind" - as to crank
74 inconsistent qualifier syntax