IT Engineering Skills

Search Engine Optimization

It's an infinite loop: Because search results boosts traffic to web pages, webmasters are trying to get their websites displayed well in Search Engine Response Pages (SERP). And those who know the technical tricks are tweaking their sites to the maximum extent. Some of this optimized sites don't represent the most relevant findings when searching for a certain expression but ranked high in the result page. This is not what Google, Bing and the users want. As a counterstrike, search engine providers are permanently improving their search algorithms to avoid irrelevant search results and limit SEO misuse.

Unfortunately, this algorithm changes often penalise not just the bad guys but affect legitimate websites as well. And that what worked yesterday may not work today or even worse, could now damage a website's rank. When we launched our websites , , and others, I learned that by heart. Without a penny for advertisement we put all our efforts in SEO. Slowly but surely we grew the traffic up to a few million net page impressions per month. At that time our web sites belonged to the top 10K websites in the United Kingdom and the USA.

But there is no free lunch. Successful SEO demands ongoing analysis of your website metrics as well as keeping yourself open minded and up-to-date with the latest changes and trends in SEO. And last but not least it requires well-considered infrastructure, frequent software adjustments and thorough A/B testing. Round robin.

HTML, CSS

The book "Responsive Web Design" from Ethan Marcotte influenced my thinking when considering the technical principles of our new web services in 2012. At that time most of the websites have been designed for desktop use and provided a very ugly UX on smart phone devices. Of course big web services maintained distinct mobile pages. However, I never liked this concept as it requires much more resources and time.

Yes, I know, not all browsers supported the media queries well and the old Internet Explorer versions messed everything up. Plus, mobile websites should require less data traffic because of the limited bandwidth and so on. So what? We said "no" to a "graceful degradation" approach as we did not care about the old stuff which would have wasted our limited development resources just to keep a webpage up and running on outdated browser technologies.

Today this approach is undisputed, "mobile first" is what counts in every web development. When we started our service, traffic originated from mobile devices has been about 25%. Just two years later it was above 50% and this trend goes on. Even a low-cost smartphone has now the necessary CPU power to render complex web pages quickly and in the days of 3G, LTE and flat data, bandwidth and data volume are no longer an issue.

JavaScript

My relation to JavaScript is a bit ambivalent. Yes, comprehensive and dynamic websites depend on the use of JavaScript. If it's used for that purpose, everything is alright and JavaScript is great. But JavaScript is also utilized for purposes which a user is not necessarily appreciating: uncalled pop-ups, deactivation of context menus, display of obtrusive ads and targeting. However, this UX violation of the "Least Surprise Principle" or hidden tracking is always caused by the developer and not by the technology as such.

So far, I am using JavaScript more indirectly in frameworks and toolkits like Bootstrap or jQuery. It is interesting to see JavaScript nowadays also at the server side and solutions like the Node.js environment are really promising. So I will keep an eye on that.

Android Apps

I like Android apps for a couple of reasons. First and simple because Android apps are written in Java, a language I like. Second, because Android is running on the vast majority of smartphones. Depending on the country this platform is covering up to 80% of the smartphone devices. A big chunk of the potential market can be addressed.
IDC: Smartphone OS Market Share 2015, 2014, 2013, and 2012 Chart

On the other side, there are drawbacks: The impressive market share of Android divides into a lot of different Android versions, various vendors and numerous form factors in the field. All need to be taken into account, supported and tested when developing Android apps.

In January 2016 I refreshed my programing skills during a 1 month full time training for android app development.

iOS Apps

Still today, Apple provides with iOS and OSX the most consistent UX (user experience) in the market. And also from a commercial standpoint, a lot speaks for iOS app development. According to an IBM Watson trend report about the US consumer behaviour on Black-Friday, "iOS outpaced Android in many online shopping metrics...".
IBM Black Friday Report 2015, performance by Mobile OS

Typically iOS users seem to be more affine to execute e-commerce transactions on their devices and they spend more money.

Contrary to Android, most iOS devices in the field running an up-to-date iOS version. Apple's policy to provide even for older devices an update to the latest iOS version makes it much easier for the users to keep their Apple devices current and secure.

Developers clearly benefit in many ways from this walled and supervised apple garden. But it's not an open platform and Apple rules the game.

End of 2015 I participated in a 1-month full time training for iPhone development. I worked with the C++ API "Dragonfire SDK" using a Windows-PC and Visual Studio. It's a nice and clean Library and ok to develop 2D games. However, after working with the Dragonfire SDK I am not convinced to use this kit any further as the API appears not to keep track with the latest iOS releases and its new capabilities. However, it was a nice C++ practice.

Java

My fellow colleagues from the development lab are using Java for many years as their prime development language for complex services with high volume traffic. Today Java performance is not an issue anymore. So time was overdue for me to take a closer look into Java. During an initial two-month full-time training course for Java, I got a pretty good picture. I like the platform independence as it is neither Microsoft specific nor Apple proprietary. However, the UX using Swing for desktop applications appears a bit outdated. As I am focusing on Web and smartphone apps, this desktop-weakness doesn't matter.

The fact that Java is required for Android App development is what counts for me. Plus, Java can be used for all backend development running the business logic and keeping the data. Last but not least with Spring, Java got a powerful server-side framework to develop dynamic web pages and even JSP does the job pretty nicely for small projects.

C#

For projects in the Microsoft world, C# is a must. Often projects in the traditional enterprise arena require this infrastructure. Luckily for a Java developer, C-Sharp is not far different and .NET is yet another library to work with.

Swift

I am glad that Apple finally introduced a modern programming language for iOS app development with Swift in 2014. Personally, I would have preferred Java of course but at least Apple offers a new language concept as an alternative to their old Objective-C. I like the introduction of optionals in Swift as it causes a thorough handling of situations where a value may be absent or casting failed. Since Swift is meanwhile Open Source, it might attract a broader community outside the gated Apple world. As I am new to native iOS app development and therefore don't have to maintain older Objective-C versions, I am concentrating on Swift only.

C++

When I started a two-month C++ training course in summer 2015, I was asked why I am investing time into such an 'old' language. That's a valid question and my decision can be better understood knowing my technical background: Before my other life as a Business Development Manager and MD, I was a software engineer for real-time development. At that time the IT world was quite different and we still used Assembler language for time critical applications. Today C++ is the language of choice for real-time programming. Therefore I thought that C++ might probably the best starting point to bring my developer skills up-to-date.

And yes, it was the right decision. Pointers, memory allocation and release, all sounded quite familar to me. C++ made it easy to get adopted to the new object oriented approach and thinking.

PHP

Not much to say here. I briefly looked into this back-end language as it is used at many dynamic websites and content management systems. The principle is understood. At present I am not investing into PHP further.

Databases

<to be continued...>

Elastic Search

<to be continued...>

Bootstrap

<to be continued...>

Content Management Systems

<to be continued...>

Apache, Tomcat

<to be continued...>