Hacker News new | ask | show | jobs
by octo-andrero 856 days ago
Considering the upcoming advancements in AI, the more beneficial will be to give a hard focus to software engineering fundamentals: object oriented programming design patterns, domain driven design, system design etc. I personally expect that the number of required "coders" will decrease, whereas the software engineers will be always in demand.

Regarding an exact programming language, it really depends on what exactly you want to do. If we're talking about web development, Java as a language has one dishonest advantage: a very mature open source eco-system supported by the biggest world enterprises. They invest a lot there, because often Java is a heart of their internal systems. Sometimes I think, that in Java world there's at least 10 years old and very stable library for any feature I need: caching, object-relational mapping, validations, logging etc. When I say Java, I don't necessarily mean the Java EE. Spring or Micronaut also perfectly do the job.

If we're talking about AI world, the things become more complex. Python is widely spread for data analytics and experiments in the ML. Main reason for this is that there are lot of libraries to prepare data before you feed it into the model for learning. But if we're talking about libraries that actually do all the math under the hood or run neural network at scale, most of them are implemented with system-level languages, like C/C++. Mainly, because of speed. And in Python, you have only bindings, that allows you to call that native binaries from Python code. Same bindings exists for many other languages. As an effect, the python code for ML / Data analytics tasks resemble more procedural C code, for some weird reasons written inside python files, rather than nice object-oriented code you may face during web-development for python.

So, if you want to do machine learning and the web development, I would suggest you to think of them as about two very separate skills, that have nothing in common. If you want to do both, learn both independently.