Sunday, May 31, 2020

The 2020 Developer Survey results are here!

Depending on how you count it, this is the 10th year Stack Overflow has been conducting its annual developer survey. The software industry has changed substantially over the last decade, but it’s also true that no single technology has been quite as disruptive, at least in the short term, as the public health crisis the entire world is experiencing right now. 

The results of this survey reflect the opinions and experiences of nearly 65,000 developers. It’s important to note, however, that the survey was conducted in February, before COVID-19 had been declared a global pandemic, and countries across the world had gone into lockdown. We’re eager to share with the public some of the interesting statistics and changes reflected in this data, but we also understand that it’s important to be humble and realistic: a lot of the answers developers gave might look very different if the same survey were conducted today. 

That said, there are plenty of exciting, interesting, and amusing highlights from the 2020 Developer Survey, so let’s dive in!

The Beloved

Rust held onto it’s spot as the most beloved language among the professional developers we surveyed. That said, the majority of developers who took the survey aren’t familiar with the language. If you want to understand what makes Rust so beloved, we have a deep dive on the topic for you here. TL;DR – Rust promises performance, control, memory safety, and fearless concurrency – an enticing combination, especially for systems programming.  It has also brought some interesting features – like affine types and hygienic macros – into the mainstream discourse.  Coupled with an open development process, it makes sense that many programmers (even those that don’t use it) hold Rust in high esteem.

Rust 86.1%, TypeScript 67.1%, Python 66.7%, Kotlin 62.9%, Go 62.3%, Julia 62.2%, Dart 62.1%, C# 59.7%, Swift 59.5%, JavaScript 58.3%

% of developers who are developing with the language or technology and have expressed interest in continuing to develop with it

At the number two spot, however, this year’s survey saw an interesting change. Last year, Python and Typescript shared the silver medal in a statistical dead heat. In 2020, TypeScript has surged in popularity, leaving Python in third place. If you want to hear more about Typescript, listen to our recent podcast with Jenn Schiffer of Glitch, where she explains why it’s become such a well-loved language. 

TypeScript’s surge in popularity highlights Microsoft’s change of direction and embrace of the open source movement. As front end web and Node.JS codebases grow in size and complexity, adopting TypeScript’s static typing gives developers increased confidence in their code’s correctness.  TypeScript’s ability to be adopted incrementally means developers can dip their toes in, gaining immediate benefits, without having to undertake a risky porting project.  As a final sweetener, TypeScript polyfills many ECMAScript changes (like arrow functions, async, and classes) before they’re widely available in browsers.  We’ve been persuaded ourselves, as more and more of Stack Overflow’s JavaScript is actually transpiled TypeScript.

Python doesn’t have static typing (though it does have hints), which makes it the odd one out of the top 3. There may also be some ill will due to the much debated Python 2 to 3 migration. Let us know why you think TypeScript surged and Python slipped in the comments below. Check out the discussion at the 20 minute mark below for some more thoughts.

Old Faithful, New School

Site reliability engineers and DevOps specialists remain among the highest paid individual contributor roles. Almost 80% of respondents believe that DevOps is at least somewhat important, and 44% work at organizations with at least one dedicated DevOps employee. The reasons for this trend are no surprise. In an era of constant connectivity, users expect their apps and services to be available any time, and any place. And remember, this survey was run before widespread COVID-19 lockdowns – we’d expect DevOps to be even more important in a world where many teams have suddenly gone completely remote.

When asked what steps to take when stuck on a coding problem, 90% of respondents indicated they visit Stack Overflow. But hey, you already knew that. We also asked how people felt when they searched for a solution to their coding problem and found a purple link as the first result, indicating they’d been there before. Luckily, 52% of respondents said they felt a warm sense of recognition—“Hello, old friend”—while only 14% said they were annoyed to find they had forgotten they searched for this answer once before. 

While finding a solution on Stack Overflow saves developers time, developers spend a lot of time working. More than 75% of developers said they work overtime at least occasionally—one to two days per quarter. 25% work overtime 1-2 days per week or more. As developers around the world shift to working from home, it’s becoming harder to draw boundaries between work and life, and to balance the two. We’ve got some advice on learning to work asynchronously, socializing with co-workers while you’re social distancing, and tips from some veterans of remote work here at Stack. 

Some Parting Thoughts

While we continue to make progress on diversity and inclusion, we still have a long way to go. This year’s survey was taken by just over 65,000 people. In our efforts to reach beyond the Stack Overflow network and seek representation from a greater diversity of coders, we advertised the survey less on our own channels than in previous years and sought ways to earn responses from those who may not frequent our sites. This approach included social promotion and outreach to underrepresented coders.

While we saw a lift in underrepresented groups, the difference in representation isn’t as large as we had hoped. There was an uptick in some race and ethnicity groups, while other races and ethnicities remained similar or decreased. Similarly, we saw a slight increase in female-gendered respondents, while non-binary, genderqueer, or non-conforming remained the same. We acknowledge that we have a lot of work to do, and the data we obtain in our annual survey helps us make changes and set goals to become more welcoming and inclusive as we go forward.

We will continue to work on improving our relationship with every kind of coder. In responses to this year’s survey, more than 15% of people said they find Stack Overflow at least somewhat more welcoming than last year. This continues to be one of our organization’s top priorities, and this news is encouraging.

You can explore more of the results in the detailed breakdown here. As always, we’ll make the anonymized results of this year’s survey publicly available under the Open Database License (ODbL) shortly.

Our annual developer survey is typically one of our most widely read releases. We know this is a challenging time for many people, and that folks around the globe are feeling a great disruption. We hope that Stack Overflow continues to serve as a valuable resource for you, and that this community can come together to support one another.

Saturday, May 23, 2020

100 công ty IT đầu tiên được vinh danh về văn hoá doanh nghiệp

Lương là một yếu tố quan trọng để ứng viên lựa chọn công ty mới, nhưng họ có ở lại công ty đó lâu dài hay không, còn tuỳ thuộc vào văn hoá doanh nghiệp!

Tháng 06 năm 2016 – topITworks khởi động chương trình tìm kiếm và vinh danh các công ty công nghệ có văn hoá doanh nghiệp tốt tại Việt Nam. Dự án này đang trở thành điểm kết nối nhà tuyển dụng và người tìm việc, trong thị trường lao động ngành công nghệ đầy tính cạnh tranh tại Việt Nam hiện nay.

Đây là cơ hội để các doanh nghiệp ngành IT giới thiệu văn hoá đặc trưng của mình, qua đó ứng viên sẽ có thêm thông tin để lựa chọn chính xác môi trường phù hợp với mong muốn, tính cách và định hướng phát triển nghề nghiệp của họ.

100 công ty công nghệ đầu tiên được vinh danh

Môi trường làm việc chuyên nghiệp, người lãnh đạo được tín nhiệm và tôn trọng, độ hài lòng về phúc lợi của nhân viên, sự minh bạch trong giao tiếp và quản lý, kiến thức được chia sẻ và trau dồi để nhân viên cùng nhau phát triển – đó là những yếu tố căn bản để các công ty xây dựng văn hoá của mình. Cách riêng đối với ngành công nghệ thông tin, văn hoá doanh nghiệp còn thể hiện qua những công nghệ đặc thù họ đang sử dụng, phương pháp và quy trình sản xuất ứng dụng.

Sau 6 tháng thực hiện, topITworks chính thức công bố danh sách 100 công ty IT đầu tiên được vinh danh. Đây là những công ty công nghệ đã có thời gian hoạt động và phát triển thương hiệu tại Việt Nam, đang xây dựng hình ảnh nhà tuyển dụng khá tốt đối với thị trường lao động ngành công nghệ. Danh sách tiếp tục được cập nhật trong thời gian sắp tới.

Những tên tuổi lớn như FPT SoftwareAxon ActiveKMS TechnologyTikiVNG… đã trở nên khá quen thuộc với ứng viên ngành công nghệ tại Việt Nam. 

XEM DANH SÁCH 100 CÔNG TY ĐẦU TIÊN

100companies-1

 

Giữ chân nhân tài ngành công nghệ - khi họ có quá nhiều lựa chọn

Thống kê từ VietnamWorks năm 2015, số lượng việc làm nhóm ngành IT tăng 47% mỗi năm, tuy nhiên lượng nhân lực của ngành này chỉ tăng trưởng ở mức 8%. Theo tiến độ đó, đến năm 2020, Việt Nam sẽ thiếu hụt hơn 100,000 ứng viên IT mỗi năm. Số liệu này dẫn đến một cuộc cạnh tranh gay gắt để thu hút và giữ chân nhân tài, giữa các doanh nghiệp ngành IT.

Theo ông Đặng Ngọc Hải – Giám Đốc Chi Nhánh công ty Axon Active Vietnam – một trong 100 công ty có mặt trong danh sách này, chia sẻ: “Với thực tế nguồn nhân lực chất lượng cao đang khan hiếm, trong bối cảnh ngày càng nhiều các doanh nghiệp IT mới thành lập, thì mức lương và các chế độ phúc lợi có lẽ là một trong những tiêu chí hàng đầu để lựa chọn công việc mới. Văn hoá công ty không phải là yếu tố quyết định, nhưng sẽ là tiêu chí rất quan trọng để nhân viên xác định có gắn bó lâu dài ở công ty đó hay không. Thực tế cho thấy những công ty có tỷ lệ nhảy việc thấp thường là những công ty thành công trong việc xây dựng văn hoá đặc thù của mình.”

 


Về topITworks

Một sản phẩm của công ty tuyển dụng trực tuyến hàng đầu VietnamWorks. Với mục tiêu trở thành cổng thông tin nghề nghiệp đa dạng nhất Việt Nam về ngành công nghệ, topITworks sẽ là điểm nối kết nhà tuyển dụng và nhân tài trong thị trường nghề nghiệp ngành công nghệ thông tin đầy tính cạnh tranh hiện nay. Xem thêm thông tin tại: http://topitworks.com/

Monday, March 16, 2020

Web Dev Trends 2020

https://academind.com/learn/web-dev/trends-2020/
Web development is always evolving and changing. The tools and technologies we used 8 years ago have often already been replaced with new alternatives.
So what’s hot in 2020, which topics should you be aware of and explore in the new year?
Here are my top seven trends (not ordered in any particular order)!
Not a reader? Don’t miss the video on top of this page!

Not a Trend: The Basics

Okay, before we explore the actual trends, here’s the most important thing: You need to know the basics.
In web development it’s too easy to get overwhelmed by all the technologies and choices you have. But if you’re relatively new to the field, you should simply focus on the core basics before you explore all these more advanced frameworks and concepts.
And the basics are always the same in the end: HTMLCSS and most importantly JavaScript (with NodeJS you can also use JavaScript to write server-side code!).
I also have a complete article + video about a possible web development learning path, so definitely also check that out.

Trend 1: Learn & Explore Frontend JavaScript Frameworks

Okay, this trend is only an important trend for you if you’re at least a bit into frontend or fullstack web development. As a pure backend developer, you can ignore it.
It’s also not a new trend - JavaScript frameworks have been around for quite some time. But they’re more important than ever before!
We build more and more applications for the web and more and more desktop applications are getting replaced by web applications.
The user interfaces of all those apps are extremely complex and elaborate and building them with vanilla JavaScript only can become almost impossible (or at least very error-prone).
JavaScript frameworks like React.jsAngular or Vue make building such UIs way easier. They allow you to focus on your core business logic instead of the nitty-gritty details.
If you haven’t looked into them yet, you should definitely explore one of the three big ones (mentioned above) in 2020.
Diving into two can also be interesting, simply because it broadens your horizon and helps to understand the idea those frameworks follow.
Which one is best? They’re all great, if you’re interested, I got this comparison though.

Trend 2: Website Performance & Optimization

Website performance and speed matters!
If you’re living in a country like the USA or Germany, you’re probably used to fast internet (well, in Germany, you might not be) - both at home as well as on your mobile phone.
But this is not the standard in the entire world. Indeed a huge amount of internet users visits the web on slow devices - both regarding the internet speed as well as the device speed.
Since we build ever-more complex user interfaces and web applications, it’s crucial to keep performance in mind.
Performance includes many things:
  • Startup time (i.e. bundle size => How big is your app, how much data must be downloaded by the browser?)
  • Runtime performance (=> How fast is your app once it has been loaded?)
  • User experience (=> Is content jumping around, is the page accessible?)
To improve performance, you can look into many things.
There are obvious factors like the size of your (shipped and compressed) codebase but there are also factors like image sizes and types as well as how and when you load and render content on the screen.
If you google for “website performance” or similar terms, you’ll find plenty of resources.
I can strongly recommend some resources provided by Google:

Trend 3: Microservices

Microservices are a buzzword and hot topic.
What are “Microservices” about though?
The core idea is simple: You want to split your application (no matter if it’s a backend API or a frontend user interface) into small, mostly independent pieces.
Why?
Because that makes it easier to manage and update your codebase - especially when working on bigger projects and in a team.
Basically, apps using a microservice architecture are the opposite of monolithic applications.
If you were building an online shop, you could for example split your backend database and API into these services:
  • A service for managing users (signup, login)
  • A service for administrating products (CRUD)
  • A service for registering orders (cart management, create orders etc)
You could also build just one huge API that talks to a single database and for some (maybe also many) apps, this might work and be absolutely fine.
But it means that every change you make needs to be checked against your entire codebase. If you’re working on a team, splitting work might also be harder and different changes made in different parts of the code could interfere.
When following a microservices approach, every part has to be built such that it works standalone - this of course makes it easier to manage and maintain.

Trend 4: Serverless Applications

This is not a new trend but it’s still an extremely important one.
“Serverless” does not mean that we don’t use servers anymore - we do (our app has to be served from somewhere after all).
But the idea of serverless applications is that you don’t have to manage and administrate those servers on your own anymore.
Instead you can use dedicated services like AWS Lambda (and others both in and outside of AWS) to run code upon certain events (e.g. an incoming Http request).
This allows you to focus on your code only instead of all the boilerplate and extra setup you need to take care of otherwise (e.g. security, routing, scaling etc).
You also only pay for what you use and can scale infinitely!
If you want to learn more, I got a serverless applications course (for AWS services) you can explore.

Trend 5: Machine Learning & Artificial Intelligence

Of course machine learning (ML) and artificial intelligence (AI) are hot buzzwords - everyone uses them, a lot of people don’t know what these terms really mean.
This is not the place to dive deeply into those topics but of course it’s important to realize that ML and AI will change many aspects of modern life and business. That alone makes them important.
But also especially for web development, these topics will stay important and might become more and more important.
Besides the opportunities you have for enhancing your business and user experience with ML and AI (e.g. via chatbots, automated responses etc), you can also leverage packages and tools like Guess.js to pre-load assets and required code in a smart way. This can help with performance optimizations and provide a better user experience.
And of course there are many other ways of improving applications with ML and AI - so exploring these topics, picking up some basics and understanding what ML and AI can and can’t do for you is super important!

Trend 6: Testing

Of course you test your code all the time as a web developer.
If you’re working on a web page, you typically write some code to then evaluate whether it works the way it should.
We all do this and we do it whilst coding. It’s an integral part of being a web developer.
BUT: You can’t test the entire application all the time for every little change you make to your code. You also can’t test every possible scenario.
That’s where automated tests (unit tests, integration tests and end-to-end tests) come in.
The idea behind testing simply is that you write some code which then executes and tests your main code. So you have code testing other code. Pretty good, huh?
Testing can not only speed up your development workflow (less manual testing to do!) but it also typically makes your code way better and leads to fewer bugs.
Testing definitely is an art on its own and writing good tests takes a lot of experience - like everything in life.
But you will be able to see results quickly and you can gain a lot if you become comfortable with writing tests.
I have a free mini-series (part 1part 2) if you want to get started.

Trend 7: Progressive Web Apps & Cross-Platform Apps

As a web developer, we can build amazing user experiences on the web. And as mentioned before, more and more applications are moving into the web. Think about examples like Google Docs.
Wouldn’t it be great if we could use our experience and knowledge as a web developer to build not only websites but also mobile apps? Or desktop apps?
Or maybe build web apps but enrich them with features we typically know from mobile apps (e.g. getting a user location, using the device camera)?
You can do that!
For one, you have tools like Capacitor which allow you to take your existing web app and easily turn it into a real native mobile or desktop app (like we do in my Angular + Ionic course).
Alternatively or in addition, you can also turn your web app into a “progressive web app” (PWA) - this means that you make it offline-compatible, installable and that you might use native device features or advanced browser APIs.
I also got a complete course on that if you want to learn how to convert any web app into a PWA!

Summary

These were my trends for the year.
Now of course that’s not all that you could look into or learn. Maybe you already know all these topics or you can rule out that you’ll be interested in let’s say PWAs.
Definitely also share your thoughts - either in the comments of the YouTube video at the beginning of the page or in our free Academind Community on Discord.
Also keep in mind that you could identify thousands of potential topics in the area of web development - what matters to you always depends on your focus and personal interest. :-)

Thursday, December 26, 2019

10 Best Frameworks and Libraries for AI

Look at some high-quality libraries that are used for artificial intelligence, their pros and cons, and some of their features.

Artificial intelligence has existed for a long time. However, it has become a buzzword in recent years due to huge improvements in this field. AI used to be known as a field for total nerds and geniuses, but due to the development of various libraries and frameworks, it has become a friendlier IT field and has lots of people going into it.
In this article, we will be looking at top-quality libraries that are used for artificial intelligence, their pros and cons, and some of their features. Let's dive in and explore the world of these AI libraries!

1. TensorFlow

"Computation using data flow graphs for scalable machine learning."
Image title
Language: C++ or Python.
When getting into AI, one of the first frameworks you'll hear about is Google's TensorFlow.
TensorFlow is an open-source software for carrying out numerical computations using data flow graphs. This framework is known for having an architecture that allows computation on any CPU or GPU, be it a desktop, a server, or even a mobile device. This framework is available in the Python programming language.
TensorFlow sorts through data layers called nodes and makes decisions with whatever information it gets. Check it out!
Image title
Pros:
  • Uses an easy-to-learn a language (Python).
  • Uses computational graph abstraction.
  • Availability of TensorBoard for visualization.
Cons:
  • It's slow, as Python is not the fastest of languages.
  • Lack of many pre-trained models.
  • Not completely open-source.

2. Microsoft CNTK

"An open source-deep learning toolkit."
Image title
Language: C++.
We could call this Microsoft's response to Google's TensorFlow.
Microsoft's Computational Network ToolKit is a library that enhances the modularization and the maintenance of separating computation networks, providing learning algorithms and model descriptions.
CNTK can take advantage of many servers at the same time in a case where lots of servers are needed for operations.
It is said to be close in functionality to Google's TensorFlow; however, it is a bit speedier. Learn more here.
Image title
Pros:
  • It is very flexible.
  • Allows for distributed training.
  • Supports C++, C#, Java, and Python.
Cons:
  • It is implemented in a new language, Network Description Language (NDL).
  • Lack of visualizations.

3. Theano

"A numerical computation library."
Image title
Language: Python.
A strong competitor to TensorFlow, Theano is a powerful Python library that allows for numerical operations involving multi-dimensional arrays with a high level of efficiency.
The library's transparent use of a GPU for carrying out data-intensive computations instead of a CPU results in high efficiency in its operations.
For this reason, Theano has been used in powering large-scale computationally intensive operations for about a decade.
However, in September 2017, it was announced that major developments of Theano would cease after the 1.0 release, which was released in November 2017.
This doesn't mean it is a less powerful library in any way. You can still carry out deep learning research with it any time. Learn more here.
Image title
Pros:
  • Properly optimized for CPU and GPU.
  • Efficient for numerical tasks.
Cons:
  • Raw Theano is somewhat low-level compared to other libraries.
  • Needs to be used with other libraries to gain a high level of abstraction.
  • A bit buggy on AWS.

4. Caffe

"Fast, open framework for deep learning."
Language: C++.
Caffe is a powerful deep learning framework.
Like the other frameworks on this list, it is very fast and efficient for deep learning research.
With Caffe, you can very easily build a convolutional neural network (CNN) for image classification. Caffe works well on GPU, which contributes to its great speed during operations. Check out the main page for more information.
Caffe main classes:
Image title
Pros:
  • Bindings for Python and MATLAB are available.
  • Great performance.
  • Allows for the training of models without writing code.
Cons:
  • Bad for recurrent networks.
  • Not great with new architectures.

5. Keras

"Deep learning for humans."
Language: Python.
Keras is an open-source neural network library written in Python.
Unlike TensorFlow, CNTK, and Theano, Keras is not meant to be an end-to-end machine learning framework.
Instead, it serves as an interface and provides a high level of abstraction, which makes for easy configuration of neural networks regardless the framework it is sitting on.
Google's TensorFlow currently supports Keras as a backend, and Microsoft's CNTK will do the same in little or no time. Learn more here.
Image title
Pros:
  • It is user-friendly.
  • It is easily extensible.
  • Runs seamlessly on both CPU and GPU.
  • Works seamlessly with Theano and TensorFlow.
Cons:
  • Can't be efficiently used as an independent framework.

6. Torch

"An open-source machine learning library."
Language: C.
Torch is an open-source machine learning library for scientific and numerical operations.
It's a library based on — no, not Python — the Lua programming language.
By providing a large number of algorithms, it makes for easier deep learning research and improved efficiency and speed. It has a powerful N-dimensional array, which helps with operations such as slicing and indexing. It also offers linear algebra routines and neural network models. Check it out.
Image title
Pros:
  • Very flexible.
  • High level of speed and efficiency.
  • Lots of pre-trained models available.
Cons:
  • Unclear documentation.
  • Lack of plug-and-play code for immediate use.
  • It's based on a not-so-popular language, Lua.

7. Accord.NET

"Machine learning, computer vision, statistics, and general scientific computing for .NET."
Language: C#.
Here is one for the C# programmers.
The Accord.NET framework is a.NET machine learning framework that makes audio and image processing easy.
This framework can efficiently handle numerical optimization, artificial neural networks, and even visualization. Aside from this, Accord.NET is powerful for computer vision and signal processing and also makes for an easy implementation of algorithms. Check the main page.
Image title
Pros:
  • It has a large and active development team.
  • Very well-documented framework.
  • Quality visualization.
Cons:
  • Not a very popular framework.
  • Slow compared to TensorFlow.

8. Spark MLlib

"A scalable machine learning library."
Language: Scala.
Apache's Spark MLlib is a very scalable machine learning library.
It is very usable in languages such as Java, Scala, Python, and even R. It is very efficient, as it interoperates with the numpy in library Python and R libraries.
MLlib can easily be plugged into Hadoop workflows. It provides machine learning algorithms such as classification, regression, and clustering.
This powerful library is very fast when it comes to processing of large-scale data. Learn more on the website.
Image title
Pros:
  • Very fast for large-scale data.
  • Available in many languages.
Cons:
  • Steep learning curve.
  • Plug-and-play available for Hadoop only.

9. Sci-kit Learn

"Machine learning in Python."
Language: Python.
Sci-kit learn is a very powerful Python library for machine learning that is majorly used in building models.
Built using other libraries such as numpy, SciPy, and matplotlib, it is very efficient for statistical modeling techniques such as classification, regression, and clustering.
Sci-kit learn comes with features such as supervised learning algorithms, unsupervised learning algorithms, and cross-validation. Check it out.
Pros:
  • Availability of many of the main algorithms.
  • Efficient for data mining.
Cons:
  • Not the best for building models.
  • Not very efficient with GPU.

10. MLPack

"A scalable C++ machine learning library."
Language: C++.
MLPack is a scalable machine learning library implemented in C++. Because it's in C++, you can guess that it is great for memory management.
MLPack runs with great speed, as quality machine learning algorithms come along with the library. This library is novice-friendly and provides a simple API for use. Check it out.
Image title
Pros:
  • Very scalable.
  • Python and C++ bindings available.
Cons:
  • Not the best documentation.

Wrapping It Up

The libraries discussed in this article are very efficient and have proven over time to be of high quality. Big companies like Facebook, Google, Yahoo, Apple, and Microsoft make use of some of these libraries for their deep learning and machine learning projects — so why shouldn‘t you?
Can you think of any other library that you make use of very often that isn't on this list? Kindly share with us in the comments section!