Skip navigation.

Software Development

Correcting The Future

Is Programming Getting Easier?

Well, I'm glad to be back. I've started writing my platform again and it's going well. Sometimes, it's a mental lapse or just not being able to see things in the manner that your programming language wants you to that causes one to scratch his head. Is it me? Or is it the programming language that is giving me a headache?

Do you find your productivity going up? By productivity, I mean "correctly working software". This is a term I don't hear anymore. The only time I hear about it is when scholars talk about the holy grail of programming. As if it's not feasible. In plain C or C++, my software works correctly. Not to take a jab at Java, but I dislike the fact that it keeps running even after a critical error, making it impossible to trace the actual location of the error. I wish it would stop completely before causing more corruption.

Then there's the deal with user interfaces. Why must this be so complicated? I liked the VCL that comes with Borland C++ Builder and Delphi. Probably the easier and most complete GUI package out there. You can use standard MS VC style syntax or you can use the built in components or both. VC is anything but visual. MFC is bloated, incomplete and all but extinct. In Java, they created a real mess. Each iteration worse than the previous. On Linux, they use a Window Manager on top of XWindows. So depending on which Window Manager you are using, you will have to custom build your interface. You could also use QT or some other UI toolkit. But the fact that the Windows Manager has to work through another interface makes any interface slow as mud unless you have lots of memory and a powerful machine. Linux has another problem in that it's dead slow to link in shared libraries upon executable startup. I do like Linux when it works, but it could work a lot better. Personally, I like it when I don't need the clutter. It's super fast without all the garbage. That's why I like it for Internet server tools.

If you are to build an interface, what do you use? How easy is it to build? Will it still be around in a few years? Is there an interface designer provided? Does it provide events, or must you link in a listener? Or worse, do you have to check the message queue? There is something seriously flawed about how the OS sends information to an application. It doesn't actually send anything. The application must poll for this information. This is true of all systems I've seen. Even if it doesn't work that way in your programming environment, it works that way under the hood. You've just been given a wrapper that simulates a different behaviour. But you get into problems with other events when you need other parts of the application to update. Then you have to open up the books and find out how you can accomplish this without getting into a recursive loop.

Do you write software that uses the Web? What do you use? CSS, Javascript, Perl, Python, Ruby, C, C++, Java, ASP (which again can use mostly BASIC and C#), etc.??? Have you ever used POST when you should have used GET? Do you use sessions? Do you have a cron job that cleans up unused sessions? What database do you use? MySQL, MSSqlServer, DB2, PostgresSQL, etc.? What libraries do you use to link up to these databases? Do you even need load balancing? Do you support all browsers? What do you do when a certain browser just won't work correctly? Why do you tolerate hacks? Because most people use a certain browser? Call me naive, but that just enables the companies that create these flawed products to keep producing flawed products. I do understand the business aspect of it, but it's rather self-defeating, is it not? Support the flawed product and the product will continue to get worse. Don't support it and you lose profits and audience.

If you do build an application with a GUI, whether it's a web application or not, who does the design? Do you hire a professional designer and graphic artist or as a programmer, do you wrongfully assume that you can design interfaces. Here's a newsflash for those that still haven't gotten the memo. Programmers should NEVER design interfaces unless they have formal training. And I don't mean a computer interface design course. I mean a print layout design course that journalists and graphic artists take. When an application has an interface designed by a programmer without any design training, it shows. But there should be better components available for simple interfaces where anyone can put them together. The standard components are so ugly that it makes any kind of quick interface design repulsive. Why is the GUI world in such a bad shape?

Speaking of graphics, have you ever wanted to display more than simple GUI components? What about animations and other fast paced graphics? These kinds of graphics have been possible since the early 80's yet I still find myself scratching my head when trying to find a consistent library to use on all platforms. There are OSS packages that try to make this easier, but the OS themselves should provide this functionality. Instead, they give you the bare minimum API. Can your language execute fast enough for real time graphics? I don't know how many times I've seen a beginner come online and ask how to do a simple animation and then throw their arms up in frustration at something that should be incredibly easy. If you think about it, we can't do today what LOGO did back in the day. Why is this? Why are we falling behind?

Do you find programming easier? Are you really that much faster? Do you ever find yourself constantly writing the same code every time you start writing an application? Do you have a framework? If so, good for you. But what happens when you join a company and they do braindead things, but it's their main programmer's design? Do you speak up? Have you been involved in code reviews?

I, for one, am finding that I'm programming slower than ever before. Not because I'm personally slower. But because the industry keeps coming out with redundant API's that I have to keep looking up. I don't bother learning them anymore. In the past, you could be assured that an API was here to stay. Now, it's just a waste of time. I'll look it up. So to all those Java employers, if you see someone that knows tons of API's and packages, do them a favour and tell them to learn to program instead of learning API's. You just know there has to be a tradeoff there.

Something else that I'm finding is that people are into this feature hunt mentality. That all these programming tools should have this feature or that. I don't know when this became the norm, but I remember a time eons ago circa 1999, when a programming tool was the complete set of its features and how they interacted with each other. Maybe I was in a different crowd. Maybe it was actually 1989. I don't know. But today, it seems like people think that the individual parts are more important than the sum of their interactions. That's a very dangerous view. Just because one package has a feature or that you add this other feature, does not mean that it makes it better. How does this feature interact with what's already available? That's the real question.

Here's a simple example of what I mean. Build an application where I give you 10 frames of animation. I want you to animate them using a programming language of your choice. But you can't use flash or any third party tool. It's a simple animation after all. I also don't want any flicker and it must go at 30 frames per second. How many people know how to detect the vertical synch of your monitor? Can you tell what frequency your monitor is set at? These are basic things that should be easy to detect, but they're not. Everything we do on computers has a visual component whether in simple text or in graphics. So why can't we do simple things like a flicker free animation? Sure, I can do it. And I'm sure others can too. But it's not obvious. A beginner could not do it and there's no excuse for that. There are plenty of other examples like this.

From what I'm seeing, I'm not the only who's tired of the absolute crap that is being produced. There are many others out there that feel the same way. And it's not that programming is hard, because it's actually super easy. It's that the tools that let you accomplish anything aren't available. At least not in a format that is readily usable.

Do you find that writing software is getting easier? I don't mean programming languages or any of that. I mean finding the right tools to get your application completed and working correctly and easy to maintain without any hacks. Many packages aren't built to cooperate with other packages. So my take is that application building is actually slower the more API's are made available. There's too much bloat in the bloat. This feature hungry attitude has to stop before it completely cripples the computing industry. Because features that don't interact well with other tools just ends up being bloat.

Here's something that should be readily available at all times:

- GUI toolkit with visual designer.
- Graphics manipulation toolkit.
- Filesystem, socket and web toolkit.
- Standard Database API.
- Data manipulation helper tools. (Data structures)
- Math library with high precision capabilities.

This covers 99% of any programming that is done today. I left out threading because 99% of people shouldn't touch threads as they plain don't understand them. If you think a thread per socket is a good idea, you would have loved Java in the early days. This is the main indicator why I have no respect for Java. I have proof that their language and library designers were ignorant.

But if you had all of the above, you could get most all that you wanted. I didn't specify the details of these packages, but they would have to be a LOT more elaborate than what's available now. If you're thinking just now about this package or whatever that has these features, then you missed the entire point of what I'm trying to say. Packages today don't interact well with other packages and because of the ridiculous idea of data hiding (with OOP), it's almost impossible to improve upon these libraries. I'd like an entire package. Unfortunately, the OS gets in the way most of the time. Maybe I'll write my own. I've done it before.

In programming, there's another hindrance to proper evolution of tools. It's the first come, first screwed paradigm. Larger companies have the benefit that they can get more people to use their tools first. So although they may be crap, chances are that these people will never try anything else and at the same time will proclaim through complete ignorance that it is the other products that are inferior. It is a rather curious state of affairs. All this leads to better products being pushed aside in favour of inferior products. Not just inferior, but truly abysmal products.

Will this trend change? Will programming actually get easier (as in productivity)? Only if we stop the fanatism and blind accusation of all other products. Only if we stop to say this has such and such feature and start analysing the complete set of features as a whole. Only if we wake up. I'm optimistic. If only because I know now how to make my development a LOT easier. I know what my goals are and how to get there and I can instantly detect bloat. Cutting through the waste is just as important as being able write proper code. It's like they say, it has to get worse before it gets better. I'm hoping it gets a LOT worse. Only then can change happen. And change we must.

Back OnComputer Screen

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

Type the two words displayed in the image below:


Smilies

July 2009
S M T W T F S
June 2009August 2009
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31