DEV Community

loading...

Take a Business Approach for Learning a Programming Language

gruberb profile image Bastian Gruber ・7 min read

The one most overlooked aspect of every field is to merge ideas from other areas of life. A business approach runs mostly contrary to programming. Business is outcome focused, programming is, for most of the time, done out of joy and the input (for the compiler) you are creating.

However, every field runs and behaves like any other. Teaching has mostly the same problems as programming, which has has the same complications as investing. You just have to dig deep enough, cut out the complex and look at it from different angles.

All fields share humans, and humans share psychology. What we also share is to improve, create and change. We want things faster and cheaper. This will always be true, no matter where you go. We also share our appetite for convenience and pleasure.

Birds eye view

In economics, macro is always deciding micro. Which means: How a country governs, the age and distribution of a population decides how successful a company operating within this border will be. On city level, being for example in San Francisco at the right time has a bigger impact on a companies success then having a superior product in a poor country with no access.

So what makes a company successful? You could say that they have the right market fit. They brought out a product at a time when people are ready for it. When the underlying infrastructure is there. Smartphones and mobile banking are two examples. Once there, not successful, but the idea came back and now everywhere.

If Rust would be a company, would you invest in it?

When investing in companies, investors generally ask themselves:

Will this company play a bigger role in 5 years then it does now?

If this answer is yes, then you are on the right track. So first we have to ask ourselves: Will Rust play a bigger role in 5 years then it does now?

Lets make a few assumptions:

  • IoT will play a bigger role. Factories start to get into IoT, they want to improve processes. The amount of money saved is not comparable to customer applications. Speeding up production line by 1 hour each day has a massive impact. Much more then speeding up a web page by a few seconds.
  • The last 10 years were focused on e-commerce and the creation of basic CRUD applications. The next 10 years will focus on moving assets, getting real time information and processing a massive amount of information.
  • At the same time, services will be more centralized and more de-centralized at the same time. Look at Googles Stadia gaming service. And think about Blockchain applications. I don't talk about money, but some form of Blockchain environment will be out there.
  • Applications will run almost exclusively in the browser, and the underlying operating system will play a smaller role.

For the past 10 years, NodeJS and JavaScript enabled a massive push towards the web. Picking up Node and creating a web service is super easy. And there will still be companies out there who will use NodeJS. There are still companies out there who need COBOL, PHP and C++ developers. But the push happened, e-commerce happens in the browser. The next move however will be to digitize assets, to put sensors on machines and humans, calculate the data and give feedback.

Two movements in the current programming environment

There are two movements happening right now:

Instead of just being a new programming language, Rust wants to be safe and fast. If you process billions of MQTT messages per hour, you want to rely on a fast and secure application stack. With more complex applications, you want to reduce server costs to a minimum, since you will host more on servers then in the last 10 years.

Rust can be compiled to a single binary, with statically linked C libraries.

In combination with WASM, which follows the trend that more and more applications will run in the browser, you can enable the feeling of using a native application. You could say that the browser is our new operating system. If there is no browser installed, how do you get your work done?

Just look at Atlassian, Google Docs and others. WASM will enable many languages to compile nativaley to WASM, which will then execute the bytecode in the browser. The web as we know it is long dead. There is just a limited space for "Inspect Source". Which doesn't need to be bad, there will be tons of other tools out there which can teach you to code and dig into things. People generally just have a hard time saying goodbye to once loved tools and environments.

WASI takes this idea even one step further.

What is our Macro in Programming?

Software is not really depended on countries (at least to some degree). So instead of countries, our macro are corporations. So if corporations push towards IoT, streaming games and processing much more data to be able to target customers, the company which does that in the most reliable way will succeed.

Lets look why Mozilla (and others) want WebAssembly:

The wasm format makes it possible to support graphics-heavy games in a browser without plug-ins. It can be used to port scientific simulation and other compute-intensive applications to the web platform. It also has non-web applications such as the Internet of Things, mobile apps and JavaScript virtual machines. (source)

So our Macro is companies who want to charge you a monthly fee by running their applications. And what is easier then distributing a product and charging for it through the browser? You also have less gatekeepers since the mobile platform is pretty much owned by Apple and Google.

Many languages will compile to WASM, so you could say it will help other languages stay alive as well. The trend of processing billions of messages, reducing server costs and having one language for the whole stack (embedded, server, frontend) brings Rust into a leading position.

Steve Jobs goal with NeXT was to to bring powerful computing into education. Well, maybe we are there now: You can spend 200 Dollar on a Computer but run a high-tech simulation program within your browser. Streamed from more powerful servers, rented for a monthly fee.

Which languages will thrive in this new macro environment?

Certainly Go has a big share. Why? Because companies use it to develop deployment pipelines and tooling for operations. Just have a look at DigitalOcean. Deploying software will play a bigger part in the future then it does now. So where Rust doesn't thrive, Go will certainly stay and take a piece of the pie.

As we said before, the next generation of companies who were at the sidelines are moving into the market as well. Manufacturers.

For these companies, one minute of downtime or production halts can cost millions. Creating reliable software, creating reliable data stores is worth a fortune. Rust with its low level, safety and speed focus will thrive in this environment. In addition it will soon be able to run on embedded devices as well.

Will one language rule them all?

No. The reason is that it's too expensive to switch every stack in the world. An example:

The Deutsche Bahn in Germany, which runs the rail roads, discovered, that if they increase the width between the tracks just by a few centimeters, the train would run much smoother. Easy solution right? Not so fast. The cost of this improvement outweight any gain. So it wasn't done.

The same happens to programming languages. Once a product earns money and supports workers, it will run until the company dies. There will be a fair share of NodeJS, Python, Ruby and other languages out there until you retire.

But, the question is: What would you teach your children? Which language (if they would like to become programmers) would you advice them to learn? Under this assumptions from before, I assume it would be Rust.

Which languages are a safe bet?

Under my current assumptions, languages with the biggest leverage will be Go and Rust. Go is straight forward, is reducing discussion time with developers and with its type system is easier to handle then JavaScript.

Rust will thrive due to its focus on safety and speed. Both of these things will be even more needed in the future then they are today. Just think about running async web servers. NodeJS was so much faster and easier to use then anything before. It focused on the right metrics. Rust does the same for the future metrics.

TypeScript, Python and Java will still be there. It doesn't mean you won't find jobs, but under the new circumstances, Go and Rust outshine the rest. I wouldn't advice Junior Developers or colleague graduates to focus on Java or TypeScript at all.

Summary

Take some time every now and then and take a strategic approach. Reading The Economist or Financial Times can be as valuable as reading a programming blog. Companies will decide in which environment you are operating in. The once who can leverage technology to fit the current needs will be the once who strive. But never forget:

Tools don't solve problems, people solve problems. You use the tools to solve problems.

Discussion

pic
Editor guide
Collapse
jonathans profile image
Jonathan Sundqvist

I'd still say that python is a great choice, and will be for many years. It has a lot of mindshare, which won't decline, and to be honest it's a good language to learn at first.

Learning rust takes time. I find there is a lot elegance in the language, but I still find it a lot harder to grasp than say python.

Collapse
codingcapella profile image
Amanda Capella

This was really insightful, thank you. Being aware of the environment within which be are building is crucial not only for deciding what languages to tackle, but also in designing applications.

Collapse
cod3raspire profile image
Olamide Agboola

Insightful, powerful and enlightening. I must act on this. Thanks @gruberb