Pair Programming as a Training Practice ?

This new development team that I joined recently is a staunch practitioner of Agile Development methodology. So it is quite natural that the team does not have a lot of documentation (Easy to get outdated, expensive to maintain) and frequent practice of pair programming. For the past two weeks I have been pairing with different developers almost everyday.

I find that pair programming as a training / initiation tool is quite effective. I got to see how developers perform the daily task (code / build / deploy) in their "natural habitat", instead of some dry documentation which the nuance of those steps are lost to words. You can pick up new techniques of doing things, new key shortcuts in different tools, and learn about the whole IT infrastructure (settings / server location) within the firm. Besides pair programming is a great way for the new guy to quickly bond with the rest of the team.

Loading mentions Retweet
Comments (0)
Posted 2 days ago

Agile

One interesting thing about my new job / development team is that they follow a very strict Agile development practice. A new release every two weeks, continuous integration, test-driven development, full coverage on regression test suits, and even pair programmig session. This is the first dev team I have worked with that employ all the agile development practice. Very interesting, yet surprisingly welcoming to me even at this early stage for my time there.

Loading mentions Retweet
Comments (0)
Posted 6 days ago

New Job, New Challenges

So, back from my trip to Spain and have started on my new dev job this week. As far as the working environment and the type of work I will be doing, they are quite similar with what I used to do in the past, except for one thing. This company is big on open source technology (Yah !). Almost every open source tools that I use before they use, unlike my last company which they write every Java library themselves (even logging ?!). So instead of a 3-months task of reading through all the internal documents, I quickly get up to speed with their system and development environment. One thing I have to re-learn is they used IntelliJ instead of Eclipse, looks like I have to re-map all the key combos I have hard-wired in my brain ...

Loading mentions Retweet
Comments (0)
Posted 10 days ago

Light Traffic

The traffic on this blog will be light in this week or so. I am traveling in Spain for my before-starting-new-job trip. Taking lots of photos but don't think I will be writing anything insightful.

One thing I am glad is that WiFi connection in Barcelona is excellent !

Loading mentions Retweet
Comments (0)
Posted 23 days ago

The Friction of Planning a Trip

Throughout last week I was planning a trip to Spain for 12 days. Naturally I am doing most of the hotel / transportation reservations online. However this exercise reminds me how much friction there still is when it comes to planning a trip online.

In Hong Kong there is no real local travel sites like Expedia or Travelocity, so if you want to find the best deal on flights, your best bet is still through a travel agents. The system they are using to search for flights seems to be from the 70s. It took my agent literally 15 minutes to find a flight from Hong Kong to Barcelona, and he had to use several different, and incompatible, systems to perform a global search across all airlines. In the era of Google and instantaneous search results this is purely unacceptable. However since the airlines are like a cartel, no technical solution can be created as long as they don't provide the flight data.

In Barcamp HK I remembered a tech startup founder said that developing the tech is only 1/3 of the problem, finding the necessary product and market data might still be the hardest problem you will face. Especially when your startup is competing with established industry, yet requires open access to their business data. (Real estate industry comes to mind)

Loading mentions Retweet
Comments (0)
Posted 29 days ago

We Are Weird

In this article the author wrote that software developers are naturally weird:

Everyone that works in IT is weird. Admit it – us techies all have quirks in our personalities and our approach to our work. The level of weirdness is just a matter of opinion, interpretation and context.

Something in the techie DNA results in more weirdness than mere mortals (non-techies). Perhaps this quirkiness is because a certain type of personality is drawn to the techie world. Or maybe we’re somehow transformed over time by our darkened working environments and exposure to computer screen radiation.

I can certainly agree that software developers, or scientific / logical mind people in general, will just behave a bit different from the rest of the population. We think more purely in terms on logic, less on emotion. We see things in black and white. We notice inefficiency, and illogical behavior, and will actually try to correct that. All of which will make us, in the eye of the general public, anti-social and inhumane.

However it is also these traits that make us so good at what we do. In a more and more technical and scientific world, it is traits like these that are more in demand. So we should never hide it and always be proud to wear our "Weird" badge high.

Loading mentions Retweet
Comments (0)
Posted 1 month ago

In the Cloud

One thing the Danger/Microsoft disaster can teach us is that cloud computing or not. You should ultimately be in control of your data's destiny. Google has started the initiative to allow you to download all your private data from all their cloud service. I think other online services will follow suit.

Loading mentions Retweet
Comments (0)
Posted 1 month ago

Bring On the Socialist !

According to TechCrunch, Finland has become the first country to make broadband a legal right:

Starting July 2010, every person in Finland will have the right to a one-megabit broadband connection as an intermediate step, says the Ministry of Transport and Communications. By the end of 2015, the legal right will be extended to an impressive 100 Mb broadband connection for everyone.
According to Wikipedia, Finland is already one of the more progressive countries in the world, with the government providing universal health care, free education up til university. Yet with such a "socialist" society, Finland remains a highly market driven economy with GDP per capita one of the highest around the world.

If this is Socialism, then I say Bring On the Socialist !

Loading mentions Retweet
Comments (0)
Posted 1 month ago

Concurrency and The Rise of Functional Programming Languages

For the past two weeks I have been reading up on Scala, a new Object-Oriented / Functional programming language. The curiosity is started from the fact that conceptually I am hitting a wall when I was developing on Java. Writing large scale, concurrent system in Java is getting harder and harder. Even with the new JDK 1.5/1.6 libraries and the built-in language constructs you will still be spending a lot of time synchronizing different code blocks, and thinking about every piece of code and whether it is thread safe.

With functional programming languages like Scala, Erlang, or Haskell, the languages will directly support various immutable behavior and function objects, and in Scala case directly provide actor-based threading model. With these features built into the language they will force you for write code in a more concurrent manor.

For example in Java it provides a thread safe ConcurrentHashMap, which multiple threads can access the same object, with critical section synchronized off. However this is still a very procedural / imperative way of thinking. If I have to develop a data structure that is shared by multiple threads, I probably would have wrapped the structure behind a collection of actors threads. The only way to work with the data structure will be through these actors message queues, which are guaranteed to be thread safe. In addition because all access is through actors, all operations are now asynchronous.

I believe in the post Java/C/C++/C# world all large scale system will become message based, with very little shared memory object access, and very little part of the code is blocking or synchronized.

Loading mentions Retweet
Comments (0)
Posted 1 month ago

Five Tech Subjects I Want to Learn

The tech world is moving so fast, if you are not learning constantly you are already behind. But what to learn next ? Here are ten things I want to learn in the near future:

  • Scala - Out of all the functional programming languages I have looked at. Scala seems to be most compatible with what I have known in the past (Java). Plus Scala can take advantage of all the infrastructure and environment Java has created. I think it has the best chance to succeed in both tech companies and corporate world in general.
  • Human Interface design - I want to learn a bit more about how human interface design is influenced by psychology, and how to design better web and mobile interface.
  • Agile - I want to learn (re-learn) the whole Agile Development methodology and how to truly run an agile development project.
  • Distributed Caching - With the whole NoSQL movement (plus my own experience), I think the days of relational database is numbered. The next generation large scale system architecture will be truly distributed, with the performance and throughput requirements that relational database will not be able to provide.
  • HTML5 - A couple of years ago I want to learn a bit about Flash/Flex so I add more interaction in a web page. However with the arrival HTML 5 (plus CSS3 / AJAX) most of the functionality provided by Flash is present in HTML 5, without the extra plugin requirement and the security / instability issue that comes with any browser plugin.

Loading mentions Retweet
Comments (0)
Posted 1 month ago