Huawei 5G Security Ban – I mean the US-China Trade War!

Huawei 5G Security Ban – I mean the US-China Trade War!

Being someone who has a reasonably good grasp of technology, I found it very strange that Huawei is banned from selling 5G networking technology into the US market. The official line from the US government was “China could have back doors into these systems which would create a national security risk” – that’s a great way of scaring people in the general population, but it did not make sense to me from a technical standpoint.

In practice, its quite challenging to sneak stuff like that into a system and hide it away, or to look at it another way, it’s quite easy for the buyers of the equipment to apply more diligence in its inspection and security assessments to avoid such a risk. So I have always had my suspicions about the real reason.

So turning the cynical part of my brain on, I start to think about the world stage for big Chinese tech companies, because they are beginning to gain ground globally, or at least are getting big enough to challenge the USA supremacy in the tech business. The USA is accustomed to being the only home of tech giants. But with the rise of companies like Huawei, Alibaba, and a few other rising stars, it is probably reasonable to think that the US might be getting a bit concerned about their global market stronghold. One aspect of the US economic domination comes from its ability to stay ahead of the game in tech, with the glitz and glamour of the Silicon Valley showboat (the Hollywood of the tech industry) being the shining source of all innovation in tech – at least that is what the marketing suggests.

Anyway, I read today that Donald Trump suggested in recent talks with China that Huawei 5G issues could be part of a deal concerning the escalating US-China trade talks! And this comes after the US declares a severe national security risk if Huawei is allowed to sell their technology for use in 5G networks and strongly encouraged its allies to follow suit and not use their equipment.

So what happened to the security risks then?

If you think about it, had Donald Trump instead said, don’t by Hauwai 5G networking tech because Hauwai are getting too big, and they have essential patents on some 5G technologies which means they will get a bigger slice of the pie from the global 5G roll-out, and we don’t like the fact that Hauwai is not an American company. With that positioning, I don’t think Donald Trump would have gained the support, either domestic or internationally, so it seems the threat of national security is a useful device to gain popular political support for something that would otherwise look somewhat underhanded.

I am generally in agreement with the idea that the US (and other countries) should fight for their rights and position in the global market; there is nothing instinctively wrong with that, and after all, I thought we are all aspiring to be in a free and fair global market. But there seems to be something sinister about misleading the world stage in the pursuit of this agenda and using your power and influence to force other countries to follow suit.

Now in the midst of this, you now have the likes of Google crippling the Android OS capabilities on Hauwai mobile phones. Is this an opportunity for Google to enhance the market opportunity for its range of new Pixel smartphones using the (eh-hem security threat) DT directive! There is that cynicism again! It is a dangerous game to be playing, and I would not under-estimate China’s ability to go-it-alone if they wanted to. There is an unhealthy belief in the US psyche that China needs US tech – I am not sure that’s true, but I am pretty sure that western tech needs China’s manufacturing capabilities and economic labor force.

The quality of tech coming out of China has been steadily getting better, and I am sure China is more than capable of building its own tech, every bit as good as what’s available already if commercial companies are supported/encouraged by a highly motivated government who have a political point to make.

I don’t fully understand the politics or culture in China, but one thing is for sure, over the last 50 or so years, the West has benefitted hugely from the low labor and manufacturing costs in China, huge companies like Apple have flourished because of this very enabling economic model. But as a result of this western consumption, there has been a lot of wealth created that has been flowing towards the far east, because we cannot get enough of the bargain basement stuff that we all love to have.

China is is a closed shop, it seems both complicated and prohibitive for the West to do business in China, easily at least, in the way we are used to at home, so it does feel like very one-way traffic, but you can’t help thinking that we must have anticipated this time would come. I do believe it is a good thing that China is challenged on this point, but I am not sure an outright and aggressively instigated trade war is the best way to go about this, trade should always be mutually beneficial.

Having a challenger to the US dominance in the tech area is a good thing as far as I am concerned, competition is essential, and I expect that the US could quickly lose its stronghold in this area. A country with the size and economic scale that China has, who is willing to make the big bets on rising global tech companies will create competition that to date, the US has thus far enjoyed almost worldwide exclusivity.

It will be interesting to see how the US-China trade war plays out; I expect this will start to dominate the headlines and will have an impactful effect on a lot of people globally. But the new headlines seem a welcome change, giving us in the UK at least, a much-needed distraction from Brexit!

Are you a Software Developer or Software Engineer?

Are you a Software Developer or Software Engineer?

I recently answered this question on Quora and thought this would make a good blog article, I think the question is quite interesting for anyone who writes software for a living.

Over time, software developers have become specialist language developers, in other words, you get .NET developers, C++ developers, Java Developers, etc… and there are several reasons for this happening. It seems like every week there is a new language that promises to be the solution for all the problems with programming languages that have come before, or a new design pattern that emerges because of a new capability in a given language. On top of that, languages have become so complex and so a fair degree of specialization is required to make good use of what is available.

The problem with this programming language specialization is the focus tends to shift from business focus to language/technology focus and this is what a lot of traditional software developers have become. For example, .NET developers want to use the latest .NET x feature, or C++ developers feel they must use the newest coroutine capability in C++20. Suppose I need to implement a function that takes a file and transforms it into another file, using std::filesystem instead of POSIX filesystem functions, that may well be exciting for me as a C++ developer getting to use some of the new C++17 features for the first time, but the business value of my output is no different. In truth, the business value I deliver would be lower because it will take more of my time while I figure out that new language feature.

Software developers tend to focus on their specialization, “I am a C++ programmer” or “I am a .NET C# developer” is how someone might describe what they do.

Software engineers are a different type of developer. The language one might use is really just a tool, an engineer might have tool(s) of choice, but actually care more (a lot more) about the needs of the business and the problems they are solving, than they do about using the latest language feature and the newest compiler to solve the problem. The output of a Software Engineer is always more aligned with business value delivered than that of a Software Developer (using the above definitions).

In my experience, quite a large portion of software developers get bored of creating the same old business value stuff, and are not “fulfilled” either personally or from a resume/career progression point of view, if the focus is not on using latest compiler features, patterns or new things that will define their skill set. This is because they are more engaged with the technology and specialization domain than the value they are supposed to be creating. The second most common reason for software developers to change jobs (the first being the pay, of course) is to take the opportunity to work on that new cool thing that will excite them. If you fall into this category, then you are a software developer, and you will ultimately be a commodity to the organizations you work for.

Being an engineer is much more about being engaged and aligned with your companies strategic aspirations and goals. If you find yourself believing in your companies mission; and you naturally interact with customers, and immerse yourself in the problems your customers are facing daily – and – you understand the overall systems architecture – and – you are employed primarily to write software; you are almost certainly a Software Engineer – the type that all good software companies aspire to hire.

A good way to think about it is this. If the product you work on is “your product” and you have to not only write it but support it, sell it and evangelize about it, these are the things you would do as a software engineer within a company. Ok, you might not go out and do the selling directly, but you would certainly have a stake in the success of sales activity.

Now you cannot just change your title from Developer to Software Engineer and expect to get more job opportunities or better pay! If you are going to call yourself a Software Engineer, then you need to exhibit the characteristics of one, people that look for software engineers are experienced enough to recognize them, and see through the ones that are only pretending/hoping to be an engineer.

More and more companies are looking to hire Software Engineers and not Software Developers, be honest with yourself and ask yourself the question: –

Are you a Software Developer or Software Engineer?