Web Development in 2019

Published on June 10, 2019, 9:03 a.m.

The cloud has become a really important platform in recent years. Cloud computing, artificial intelligence and internet of things are some of the popular trends that are spear-heading the movement. But beyond those emerging technologies, on the personal side, I feel it is quite important for a software engineer in 2019 to maintain their own cloud. Having your own cloud means you can store a website, a portfolio, and many other tools that can help with daily coding routines. Plus it is good coding practice when you have something else to code up other than your main projects at work.

So with that in mind, I started reading up more and more about web development, and where to start. Then I found out that technologies to build a website are far more advanced than they were years ago. I was overwhelmed by the vast amount of frameworks and libraries available, and it was very easy to get lost. Luckily, I was able to get some pointers from this video, which is an excellent introduction to web technologies and frameworks in 2019:

After watching that video and experimenting on my own for a while, I was able to get a good feel for the pros and cons of different frameworks. I made my choice of the technology stack, and I started building this website that you are reading now. Along the way, here are a few things that I have learned, that I hope will prove useful to you as well:

1. Avoid PHP if security is your top concern. I get daily entries in my server logs telling me someone is trying to access common PHP admin pages. Even if PHP is fairly secure now, getting attacked daily is still quite annoying. You should choose a more secure server-side tech stack for peace of mind. As an aside, the attackers have Chinese and Russian IP addresses, if that is of any interest.

2. The video neglected to mention Java and JSP for server-side development, and I think that's a huge omission. I was recently on a job hunt and I applied to no less than 10 different jobs in which Java is the main server-side language. So Java is very much alive and well as a server-side technology. That means if you know Java, you are already somewhat ahead of the game. Silicon Valley still seems to have many companies that run on a Java-based infrastructure, so if you plan on working here, now is a good time to polish up your Java skills.

3. To get more JavaScript practice, you may be tempted to select Node.JS as your server-side framework, but I think that's quite naive. It is better to choose a framework that uses a different language (so either C#, Java, PHP, Ruby or even Python) because then you will be able to practice two languages at the same time. Trust me, you will get no shortage of JavaScript on the front-end. And that's especially true if you decide to expand beyond what responsive UI frameworks like Bootstrap provides. On top of that, there's also performance consideration if you decide to do more work on the back-end. This stuff creeps up pretty fast if you try something like AI or OpenCV.

4. SQL is still the dominant database tech, so you may be tempted to use it with your cloud. If you already know SQL or you are already familiar with SQL, though, I'd say... pick something else, like MongoDB or Redis, as your back-end. This means you get the chance to play around with new technology, and... please don't quote me on this, but the shift away from SQL still seems to be a trend in Silicon Valley. Many companies are hiring for positions where the developer has both SQL and noSQL experience, so I'm guessing they are trying to move on from SQL. Perhaps because there are some promising performance and resource usage improvements to be had with a noSQL database. On the other hand, if you don't know any database tech yet, definitely go for SQL first. SQL is rock solid stable and secure after all this time. It most likely won't do anything unpredictable, and you will most likely find more than a billion resources in a Google search on how to do one thing in SQL.

5. I would highly recommend you go with the cloud computing route and skip all those hosting services mentioned in the video. That means... dipping your toes into managing Linux/Unix environments in Google Cloud Platform, Amazon Web Services, Digital Ocean, etc... and essentially starting from scratch. This will give you full control over the security and setup of your cloud platform, and on top of that, you may also be able to make use of Git/Docker, etc... So at the end, you get to put more technologies under your belt as well. Trust me, it looks good to a hiring manager when they know you are familiar with more than just the codes that go into the interface of a website. Also, you get to be able to use your cloud computing platform for more than just your website, after all.

6. If performance is your main goal, don't lean too much on the new ES6 ways of doing things with JavaScript. Sometimes the native methods will just be the fastest, even when they may not be the prettiest. Despite widespread use and a lot of browser optimizations, JavaScript is still quite... slow in 2019. Perhaps it will get better some day, but for now, trust your own programming fundamentals over concise one-liners. On the other hand, if readability and maintainability of the code base is more important to you, then definitely try ES6 more, as it does help make your code look more like human speech and less like machine talk. Just keep in mind that sometimes, there are performance trade-offs, and they can be pretty significant when you start scaling up.

And that's it. I will most likely continue to add more information and revise this article over time as I continue to study web development. You can check the "About" section of this site to get a glimpse of the stack that I used if you need an example. But there is no right answer, so you are free to make any consideration to suit your own needs. The one thing I will tell you is this: if you are planning a career as a software engineer, and you know it is something that you want to do for a long time, you should start building your own website now!