Archive for May, 2008

Farewell to Friendster Blog

Wednesday, May 28th, 2008

This is the end of this blog. I’m moving to new blog: http://kunilkuda021.wordpress.com

See you there.

Regards,
-kunil

Experienced and Not-So Experienced Programmer

Saturday, May 24th, 2008

How do you differentiate them? If you’re going to interview them, ask these questions:

  • Have you maintain other people’s program? What’s the difficulties that you have for doing it ?
  • What kind of versioning system that you use before ?

This is the rationale for these questions.

It’s unlike popular beliefs that only experienced programmer that can create good programs. All programmers actually CAN create good programs.

However, the thing that differentiate veterans and greenies are veterans CAN MAINTAIN old program, greenies don’t. Greenies tend to create new program(s) to replace old programs. Remember this golden word: "Creating is easier than maintaining".

If you think that the old program was rubbish, maybe it’s ok to replace it. Bur for most of the companies, that I know, the old program is considered as part of their investments. Therefore, replacing old program(s) is a big no-no.

The second question refers to their ability to cooperate. Cooperate programming is very difficult. Without versioning system, it is almost impossible. Most programmer that never use versioning system usually never create/maintain complex software, or programs that need to be maintained for years, or work with other programmers. Simply saying that they’re not professional software engineer.

Fast Food in Office(1): Milo Nescafe

Friday, May 23rd, 2008

This is the little fun in the office. I hope you don’t get fat because of it..Hehehe

Ingredients (for 1 cup)

  • 4 tsp of Milo
  • 2.5 tsp of sugar
  • 1 tsp Nescafe classic
  • Milk (full cream version, not the powder one…My favorite is Dutch Lady)

Directions

  1. Add Milo, sugar, Nescafe classic and a little of hot water. Stir
  2. Add milk until your cup is full (cold milk is better)
  3. Enjoy!!

Becoming Foster Parent

Thursday, May 15th, 2008

Ok. I’m stucked with this website (http://keluargapelangi.blogspot.com) that my friend sent me. So, now I’m a foster parent of a girl named Dewi (ok-lah, once upon a time, I would like to have real daughter too…but need to wait for the wive first…hehehehe).

So, here’s her first letter (thx for Dea from Keluarga Pelangi).
Daridewibuatdaniel080515

Write it NOW! We MAY need it

Wednesday, May 14th, 2008

This is very classic software management problem. Yes, it’s true that we may need it. But what if we don’t need it afterall ?

Software engineer is a bit different from other paper-work. We do similar work with the paper-work (typing, correcting, fill-up the form, etc). But the different is this. In paper work, the more that you type the less work that you will have. In software engineer, the more you type, the more work that you will get.

It’s true. Every piece of code that you’ve just added will add more complexity to your program. It means more time to review, test, and debugging (not to mention that any code that you’ve written will be kept forever as long as the product alive –backward compatibility requirement). At the end, clients will ask "how come making simple program takes so long?".

My suggestion for this kind of problem is to be procrastrinate. Keep the request in your mind (or in your design sheet if you have), but don’t put it there. Not until someone really-really needs it.

Structural vs OOP Concept

Wednesday, May 14th, 2008

This was actually the fairy tale that my lecturer told me years ago, before he started the OOP concept.

There were two man that worked for timber company. Their job were to cut down the trees. But the company only had two tools: saw (manual saw) and chain saw. The first person that saw the saw, took it right away and saying to the other person "I always work with this tool all of my life. I’m sure I can finish my job faster than you using this tool". The second person took the chainsaw, but he never used it or knew how to use it. But he didn’t want to be fired from the company. So, he managed himself to learn it anyway.

In the first few days, the first man who used manual saw looked very productive. He cleared out the forest very fast, while the second man still playing around with his chainsaw. But on the third day, the second man finally got an idea of how the chainsaw should be used. So, he started to work on that day.

In the end of the week, the man with the chainsaw could only finish 50% of what the man with the manual saw did. So, the man with manual saw said to him "You’d better replace your tool with mine", but the man with the chainsaw refused. He said "Let’s wait until the next week".

The next week, the man with manual saw worked slower than before. His human force didn’t allow him to work that hard for a long time. The man with chainsaw worked as fast as the last week. So, in the end of the second week, the man with the manual saw couldn’t cut anymore trees, while the man with the chainsaw was ready to cut the next forest.

The story is analogue with the procedural and OOP concept. Procedural programming allows program to be created easily, and faster than OOP one. But, while the procedural programming gains more code, it’s effectiveness is getting lower. The programmer that works with procedural programming spends his/her time to prevent the code breaking while new code is inserted. In the bigger code, such as OS kernel, programmer spends his time, not by adding new features, but by tracking defects and fixing bugs. At some certain level, procedural programming cannot be extended anymore and has to be terminated. This problem is the main reason why OOP was developed, to make the program reusable and extendable with less headache.

At first, OOP was just a concept and can be deployed using any procedural language. Then Eiffel (the first OOP language) started to put language barrier to force its user think in OOP concept. C++ was also developed to extend C language to implement OOP, but it never force its user to think in OOP. As the result, there’s a lot of people that use C++ similar like procedural programming. Sun was addressing this problem, by creating C++ compatible language but with strict OOP (think in OOP or don’t use this language), called java.

IMHO, programming language is not the main issue when creating a program. The main issue is whether the programer has such concept about quality, maintainability, extensibility, etc or not.

Programming In The Language or INTO The Language

Wednesday, May 14th, 2008

Addressed by Steve McConnell in his book "Code Complete".

There are two different programmers in this world:

  1. Programmers who program in the language: He/she limits their thought to the language features (eg. if the language doesn’t support OOP concept, then the OOP knowledge cannot be implemented).
  2. Programmers who program INTO the language: He/she decide what thought that they want to express, and then determine how to express those thoughts into their programming language.