• Coding
  • Examples of Hard Things to Program

I was thinking the other day of challenging things to program, and what's primarily is hard about programming from a human point of view (rather than an analytic complexity point of view).

It seems there are different connotations and feelings I associate with:
- Tricky problems
- Boring problems
- Architectural issues (early decisions effecting things to be done in the future)
- Algorithmically hard
- Pace issues (how fast you can do a certain thing)

I am still brainstorming this issue. I want to come out with a project idea that has most of the "hardest" things to do, to go into my portfolio.
PS: I could go do Topcoder round matches all day and night, but still I would be going through a narrow slice of what is modern development/programming.

Ideas?
@GN90: Looks like a really fun thing to try out!
What do you call challenging and hard? Here are the tasks I find most challenging about programming. They all are difficult for very different reasons.

- Designing a good and innovative UI.
- Organizing large teams of programmers, or even worse, large heterogeneous teams of programmers, designers, marketers, ...
- Code anaylsis, developing tools that would know your 'executable' better by reading your 'source'.

- Dealing with large data and high precision.
- Programming in restricted resources like in embedded systems or in high load servers. (like this guy for instance, who wrote the smallest 'Hello World' x86 ELF binary)

I would also strongly recommend Project Euler. I did the first 10 problems, and they're okay. It gets insanely difficult afterwards. Example of problem:
Peter has nine four-sided (pyramidal) dice, each with faces numbered 1, 2, 3, 4.
Colin has six six-sided (cubic) dice, each with faces numbered 1, 2, 3, 4, 5, 6.

Peter and Colin roll their dice and compare totals: the highest total wins. The result is a draw if the totals are equal.

What is the probability that Pyramidal Pete beats Cubic Colin? Give your answer rounded to seven decimal places in the form 0.abcdefg

Note: Your program should give the answer in less than 1min.
rahmu wrote- Designing a good and innovative UI.
That's probably the toughest part about programming, from my personal perspective. I was actually going to suggest you build a library of UI controls (Silverlight maybe?).

Add to that, integration with foreign API's. That's also something I find very difficult, especially when that API is poorly documented and/or build in a technology different than the one I'm using (hence, in most cases, their documentation is in the language they used to build the API).
Kassem wrote
rahmu wrote- Designing a good and innovative UI.
That's probably the toughest part about programming, from my personal perspective.
I don't think that this is a programmer's task. Unfortunately, in small projects the programmer is also the designer which generally leads to horrible user interfaces. A UI Designer, and perhaps a UX designer will definitely make things look nicer, more intuitive and easier to use.

For me, the worst thing to do when programming is the code optimization process. No one can write an optimized code from the first attempt, therefore, 2 or more rounds are required. To make things even worse, try doing so with a poorly written code.

On a side note, why don't we resume the halted exercises under the programming section?
Georges wrote
Kassem wrote
rahmu wrote- Designing a good and innovative UI.
That's probably the toughest part about programming, from my personal perspective.
I don't think that this is a programmer's task.
No, you probably misunderstood what we're talking about. The designer prepares the PSD/AI file then hands it over to the programmer. In some cases, the designer does the XAML as well. But the thing is, you have to program the functionality of the control and that's the hard part. Especially when you have to add some eye candy (complex animations) to the control.
Kassem wroteNo, you probably misunderstood what we're talking about. The designer prepares the PSD/AI file then hands it over to the programmer. In some cases, the designer does the XAML as well. But the thing is, you have to program the functionality of the control and that's the hard part. Especially when you have to add some eye candy (complex animations) to the control.
A Programmer should only implement. Thinking about functionalities is the UX Designer's task.
We usually do things the other way around.