My Blog

In this post, I will write about the motivation behind my blog. The why. Why do I want sit on front of my computer after a long day, sitting in front of my employer’s computer? The reason is simple. I want to document my skills. I want to re-ignite my passion of hobby programming.

For that, I need a project. So here is my idea. With literally hundreds of websites that I use requiring account registration, I am in dire need for a good repository that keeps track of my accounts. Storing simple things like URL, User Name, and Password, and a few comments. Obviously, there is a need for robust security. But I will not focus much on that, as my main aim is to research, implement and measure different platforms, not develop commercial applications.

Research – the different platforms. Implement – the concept in the different platforms. Measure – benefits, performance and ease of use.

Possible application platforms are as follows:

  • .NET windows application – using some of the really popular third party tools like Telerik, DevExpress, etc.
  • HTML5 applications – Microsoft MVC, Sencha, Telerik Kendo UI.
  • Native Android App.
  • Native Apple iStore App.

Please stay tuned for my next post – where I will be looking at different tools to make and share my videos.

An Update

Wow! I was looking back at this and a lot has changed since my last post back in August 2009.

I moved from New Zealand to Australia. Went to Portugal for a conference where I presented my paper on Steganography (more on this in later posts).

Published a book on Steganography (http://www.amazon.com/Inaudible-Secrets-Improvements-Audio-Hiding/dp/3838357701/ref=sr_1_1?s=books&ie=UTF8&qid=1321665701&sr=1-1).

Meanwhile, started work as an Applications developer here in Townsville, Queensland.

On a personal front, I now have a beautiful baby girl, Seher.

So while it has been busy.. there was still something that was keeping me from posting. You know how it is.. an obstacle that keeps you from doing something.. and while you intend to remove it and the obstacle itself is very small, it takes a while to finally come around and address it.

In my case, the obstacle was formatting of code (C#, VB.NET, SQL). I found it quite hard on these posts, and was just short of writing CSS files to prettify it. But just today, I stumbled upon http://www.manoli.net/csharpformat/ which is a great tool to convert source code and display pretty HTML. So looking forward to using this to prettify my future posts 😉

Cheers.

What makes a good software developer?

I have often thought about this – “What makes a good software developer?” The answer to me, is not that straightforward – in fact, I may appear to be contradicting on some points. I will attempt to go over them (in no particular order):
A good software developer has to have:
  • The ability to see the bigger picture (or as my senior colleague used to say “the ability to see the forest through the trees”) as well as pay attention to detail. As a software developer, one is required to keep the overall architecture in mind, and design and program solutions that are in harmony with the bigger picture. The bigger picture may also be extended to mean that it is not necessary that all business problems or needs are met by software solutions – that sometimes changes to business processes are required to fulfill a business need.
  • The ability to be pragmatic while preserving the integrity of the software solution. This can be a bit of a gray area – you have to be pragmatic to a certain extent to deliver what the users require, and you have to maintain the integrity of the solution to have clear boundaries and a clean architecture. In some cases, these may be a bit mutually exclusive – for example, it is of no use having a realtime application going through five web services for a simple business function – while this may maintain the purity of the solution, in practice, it is unworkable and a pain to support.
  • The ability to keep an open mind, being receptive to new ideas, at the same time, not pursuing infeasible or bad ideas. Sometimes it may require you to investigate new ideas, sometimes it may require you to completely trust your team members, but the overall objectives need to be kept in mind – what we are delivering (the intention and the scope of the delivery), and the limitations or bounds in terms of time and resources.
  • The ability to filter out unneeded “noise” and be solution-focused. Many people go around in unproductive circles, get involved in the “drama”, rather than being solution-focused, having a plan, and resolving issues effectively. A good software developer needs to look at things objectively and be driven by sound skills and principles which help in delivering a solution.
  • The ability to work well in a team, as well as work well individually. This may seem easy.. but it can be challenging – especially working in a team made up of people from different technical backgrounds. I think that for a team to function properly, the roles and responsibilities of the team members need to be clearly defined. A healthy atmosphere needs to be created where productive discussions about different ideas are encouraged and an atmosphere where people move away from autonomous to consensual decisions. Working individually has its own challenges – you have to have a broader skill set, to name one.
  • The ability to contribute to, adhere to, and support processes/standards, and question them when needed. Processes and standards are put in place to make our lives easier. When a process/standard hinders software development rather than aid it, it needs to be questioned/improved/rectified.
  • Finally, a good software developer has a passion for the IT industry. It is quite essential for the software developer to be actively involved in new technologies, take an interest in current trends (eg cloud computing). Have a good understanding of where technology is at and being aware of how particular business needs could be met by fit-for-purpose technological solutions.
Most of the above points are not necessarily specific to software development – they can be taken out of the software development context and be applied to most industries.
Any comments, thoughts, discussion are most welcome.