Friday, August 31, 2018

Software time estimation

Software project time and effort estimation is difficult. One of the difficulties arise from writing low quality components. These components incur technical debt (or they might just be a mess), break the system at a later time when no one remembers their details, and require frequent revisits. Poor components are usually difficult to understand too. All this results in a lot of unbudgeted effort and delays. Even if you estimated the time for completing the messy version of the component, you would not be able to take into account the additional cost required to get to a clean/stable version.

The corollary is that you have to focus on quality before you spend any time on schedule estimation. To achieve acceptable quality, write unit tests, do code reviews (and at least rudimentary algorithm documentation) and use static analysis tools. Only after you have unit tests, documentation, code reviews and static analysis in place, you might try to guess when the project finishes.

Tuesday, August 28, 2018

Child education

Today we were talking with friends about our favourite topic, education of children. The gist of the conversation was that parents have limited control over their children and can "only" introduce them to different experiences. I criticized the use of the word "only" because a good introduction is not a trivial thing, it requires a lot of thought on the parent's part. The material has to match the child's ability to grasp and find it interesting enough to pursue it further on his/her own.

Examples:
  • Experience foreign languages via computer games, songs, movies and trips abroad.
  • Musical instruments. I played the guitar and keyboard in my younger years and know that playing an instrument is not a matter of talent but a matter of persistent work, i.e. not suitable for most young kids. Talent comes into play when one strives to be a professional.
  • Math, history, politics... All of these are extremely interesting but the wrong teacher can cause the child to be disgusted and block them out completely. I know people who refused math or history until they were 30 years old and found out that these were actually quite fun.
  • Sports, dance and other physical activities: See The Inner Game of Tennis
The first rule of a good introduction for any topic: What good is this for, where is it used? Keep in mind that even if your child is not immediately enthusiastic about the subject, he/she will have it imprinted in his/her mind and when the time comes, will have less difficulty in making that first attempt (which is usually the hardest psychlogically). Example: As a young child I observed how my father (a primary school teacher) was writing with beautiful hand writing his normally boring daily classroom plans. To this day, I like to write nicely. We don't want our kids to realize how everything is so mind blowing until they are adults, do we?

Thursday, August 16, 2018

Tavsiye: Pınar Sütkrem

Birkaç hafta önce tanıştığım ve çok beğendiğim Pınar Sütkrem ürününü bal-kaymak kombinasyonunu seven herkese tavsiye ediyorum. Bir oturuşta yarısını bitiriyorum.


Friday, August 03, 2018

Writing source code comments

A conversation I had today with a junior engineer:

Me: This code is quite complex, why didn't you write explanatory comments?
He: Since it is very complex, writing comments was difficult.

Lesson learnt: Review code of juniors as often as possible, don't let them off the hook (!)

Thursday, August 02, 2018

Solve Netbeans src folder missing problem

Recently we updated from Netbeans 8.0.2 to 8.2. One of my colleagues could not see the src folder in Netbeans. What you need to do is to right click on project, open properties, go to Sources, under Source Package Folders, add the src and test folders there.

Important Netbeans folders on Windows:
  • user/AppData/Local/Netbeans/Cache: Sometimes Netbeans shows error icons on files event tough there is no error. Delete the cache folder.
  • user/AppData/Roaming/Netbeans