Survey Finds Companies Want to Reskill the Workforce for the ‘Future’

Transformation often involves struggle, especially for organizations seeking to adapt to emerging technologies like Artificial Intelligence, Machine Learning, Data Science, and Blockchain. Where will organizations find the talent and expertise to drive their businesses forward?

To better understand how organizations are keeping pace with trends in automation and changing needs, we commissioned a survey of more than 600 Learning and Development, Digital Transformation, and Innovation leaders across industries in North America to find out their top priorities for workforce development in 2020. 

Continue Reading

Understanding the Benefits of AI

The adoption of artificial intelligence (AI) continues to increase, and it’s anticipated that the global AI market will be valued at over $190 billion by 2025. As this growing market continues to flourish, so do both the benefits of AI. 

First introduced back in the 1950s, AI has evolved tremendously over the past 65 years. While initially it was used in more technical settings, like specialized computer labs, adoption has grown to the point where AI is integrated in our everyday lives. 

With AI becoming part of how we work and live, it’s important to understand how it will be used in our day-to-day lives and how you can make an impact in the industry.

Continue Reading

The Software Engineer Job Description: What You Need to Know

With over 307,000 new jobs added to the tech sector in 2019, software engineers are increasingly in demand. For those looking to get their first or next job in the world of software engineering, it’s important to be as prepared as possible for interviews, and that starts by fully understanding the software engineer job description. 

Software engineering roles offer an average salary of $108,622, which is more than double the national average. This makes this field highly desirable to those looking to work in the IT or tech industries. 

However, this market can be highly competitive, so those looking to secure a role in software engineering will need both the education and experience to stand out from other candidates.

Here’s everything you need to know about the software engineer job description. 

Continue Reading

What is Python Parallelization?

Are you looking to learn more about parallelization in Python? If so, this article is for you. We cover the basics of parallelizing tasks and explain how parallel programs can speed up your Python code. We also provide our top three tips for creating error-free parallel programs in Python.

Continue Reading

AI Engineer Salaries: What You Can Expect to Earn in 2020

Artificial intelligence (AI) is a rapidly growing field and the talent market is hot. Because of this demand, AI engineer salaries continue to increase. 

According to a LinkedIn report, AI Intelligence Specialist — which is a catchall title for multiple AI-specific roles — was named one of the top 15 emerging jobs for 2020 with 74% annual growth. Not only is this an in-demand role, but AI engineers can command a top salary and report high levels of job satisfaction, making it a highly appealing career option. 

If you’re considering entering the field of AI (or upgrading your skills), it’s helpful to know what you can expect when it comes to AI engineer salaries. 

Continue Reading

Follow-up: Unanswered Questions From Our App Engine | Google Developer’s Live Appearance

I enjoyed the opportunity to participate in a live Google Developer Live hangout on the topic of how Udacity uses App Engine.  Unfortunately there was not enough time to respond to all the great questions on air.  What follows is my best attempt to respond to the remaining questions.

krmboya: “In your opinion, how low-level should the average modern programmer go? Is it still worth learning assembly language and various pointer-manipulation tricks?

I recommend you should always learn as much about computing as you can.  You can be a productive software engineer without knowing Assembly or C.  However, I do think it is necessary to eventually become familiar with Assembly or C if you want to be a really great software engineer.

Kenny: “What are the disadvantages of using Google App Engine and how does it compare to a service like Amazon’s AWS?

Shahriar: “What makes Google app engine a better choice over using the AWS stack?

Comparing Google App Engine and AWS is like comparing a box of cake mix to a counter full of flour, sugar, water and eggs.  App Engine represents the final product of a complete platform whereas AWS gives you the ingredients that still need to be combined into a complete platform.  App Engine’s advantage can also be its disadvantage:  On the one hand you don’t have to do any “sys-admining” but on the other hand you can’t do any sys-admining when something is going wrong.

ppmt: “I have seen the cost of using GAE but as a mere mortal it is difficult to imagine how it translated in real life. Would you be able to say how much it cost Udacity to be hosted on GAE?

They vary greatly depending on what is trending with our course traffic as well as any ad-hoc analysis and data-dumping we have going on at the moment.  I can say, though, that even before our funding when our budget was tighter, the costs were reasonable enough that price was never a factor when determining where to implement new features.

Travis: “What is the biggest hurdle to developing an application on the cloud?

I think that developing a solid product vision for the application is harder than building it, especially if you build it in App Engine.  My recommendation is to spend one day building a simple app in App Engine and then the next day building the same app in AWS with Elastic Beanstalk against DynamoDB + ElastiCache + CloudFront.  One is going to feel better to you than the other depending on your comfort level with the operations side of building web applications.  My advice is to just go with the one that feels better and don’t look back — if and when it comes time to move to something else, it will be obvious what type of platform you need.  In the meantime, don’t let yourself get stuck trying to future-proof every decision.  It’s better to have a successful app on the wrong platform than no app at all!

As for the biggest hurdle developing an application specifically on App Engine:  I would say the first hurdle is setting up your first application.  Once you have that done, you get to cruise for an surprisingly long while you build out features.  The next hurdle is re-arranging things to perform better once your app takes off.  Udacity is working through the second hurdle now and it took us about a year to get from the first to second.  The best part is that you have plenty of time to develop the level of engineering sophistication needed to get past the second hurdle — you shouldn’t expect the same kind of beating Steve describes in his course when learning how to scale Reddit.

Eric: “What types of projects would you use GAE for a real application?

I would use App Engine for any website or mobile backend that doesn’t require specialized libraries for processing.  For example, I wouldn’t build Voxer on App Engine because they require things like audio stream processing, which, are going to eventually rely on low-level unix libraries written in C.  Clash of Clans on the other hand probably has a relatively straight-forward backend for saving state and managing scheduled tasks — all things very native to App Engine with additional benefit of horizontal scale-out when the app becomes ultra popular.

Anthony: “I have been wondering what the best way to implement a chat server on the GAE would be?

Interesting idea.  Have you looked at the XMPP Service and the Channel API?  I would expect an implementation to use one or both of them.

Мурат: “What is the copyright status of the CS253 course? Does it go under Creative Commons license? Can we translate the course into another language and share it in our websites?

All our current courses are offered under the Creative Commons license and I am not aware of any desire to change that.  New translations are very much appreciated!  You can find existing translations and instructions for submitting new ones at our Universal Subtitles team page.

Bobi: “I really want to know if you’re going to have more technology related programming classes as well. Like: – Low level programming for microcontrollers – RTOS – Embedded Design basics Thanks and keep being awesome!

We are currently producing a course that is somewhat in this direction called Functional Hardware Verification (CS348).  Much of Udacity’s team has a robotics background and we love things like hardware and programming micro controllers.  I think it is safe to expect more courses is this area, especially since it is a very employable field.  The challenge, obviously, is figuring out how to organize project-based course materials.

Teaching Thousands of Students to Program on Udacity with App Engine, Part Two

Cross-posted with the Google App Engine blog:

This post is part two of a two-part series on how Udacity is using App Engine to teach thousands of students how to program online. Today’s guest blogger is Chris Chew, senior software engineer at Udacity, which offers free online courses in programming and other subjects.  Chris shares how Udacity itself is built using App Engine.

Steve Huffman blogged yesterday about how App Engine enables the project-based learning that makes his web development course so powerful.  People are often surprised to learn that Udacity itself is built on App Engine.

The choice to use App Engine originally came from Mike Sokolsky, our CTO and cofounder, after his experience keeping the original version of our extremely popular AI course running on a series of virtual machines.  Mike found App Engine’s operational simplicity extremely compelling after weeks of endlessly spinning up additional servers and administering MySQL replication in order to meet the crazy scale patterns we experience.

Close to a year later, with ten months of live traffic on App Engine, we continue to be satisfied customers.  While there are a few things we do outside App Engine, our choice to continue using App Engine for our core application is clear:  We prefer to spend our time figuring out how to scale personalized education, not memcached.  App Engine’s infrastructure is better than what we could build ourselves, and it frees us to focus on behavior rather than operations.

How Udacity Uses App Engine

The App Engine features we use most include a pretty broad swath of the platform:

A high-level representation of our “stack” looks something like this:


Trails and Trove are two libraries developed in-house mainly by Piotr Kaminski.  Trails supplies very clean semantics for creating families of RESTful endpoints on top of a webapp2.RequestHandler with automagic marshalling.  Trove is a wrapper around NDB that adds common property types (e.g. efficient dereferencing of key properties), yet another layer of caching for entities with relations (both in-process and memcache), and an event “watcher” framework for reliably triggering out-of-band processing when data changes.

Something notable that is not represented in the drawing above is a specific set of monkey patches from Trove we apply to NDB to create better hooks similar to the existing pre/post-put/delete hooks.  These custom hooks power a “watcher” abstraction that provides targeted pieces of code the opportunity to react to changes in the data layer.  Execution of each watcher is deferred and runs outside the scope of the request so as to not increase response times.


During our first year of scaling on App Engine we learned its performance is a complex thing to understand.  Response time is a function of several factors both inside and outside our control.  App Engine’s ability to “scale-out” is undeniable, but we have observed high variance in response times for a given request, even during periods with low load on the system.  As a consequence we have learned to do a number of things to minimize the impact of latency variance:

  • Converting usage of the old datastore API to the new NDB API
  • Using NDB.tasklet coroutines as much as possible to enable parallelism during blocking RPC operations
  • Not indexing fields by default and adding an index only when we need it for a query
  • Carefully avoiding index hotspots by indexing fields with predictable values only when necessary (i.e. auto-now DateTime and enumerated “choices” String properties).
  • Materializing data views very aggressively so we can limit each request to the fewest datastore queries possible

This last point is obvious in the sense that naturally you get faster responses when you do less work.  But we have taken pre-materializing views to an extreme level by denormalizing several aspects of our domain into read-optimized records.  For example, the read-optimized version of a user’s profile record might contain standard profile information, plus privacy configuration, course enrollment information, course progress, and permissions — all things a data modeler would normally want to store separately.  We pile it together into the equivalent of a materialized view so we can fetch it all in one query.


App Engine is an amazingly complete and reliable platform that works astonishingly well for a huge number of use cases.  It is very apparent the services and APIs have been designed by people who know how to scale web applications, and we feel lucky to have the opportunity to ride on the shoulders of such giants.  It is trivial to whip together a proof-of-concept for almost any idea, and the subsequent work to scale your app is significantly less than if you had rolled your own infrastructure.

As with any platform, there are tradeoffs.  The tradeoff with App Engine is that you get an amazing suite of scale-ready services at the cost of relentlessly optimizing to minimize latency spikes.  This is an easy tradeoff for us because App Engine has served us well through several exciting usage spikes and there is no question the progress we have already made towards our mission is significantly more than if we were also building our own infrastructure.  Like most choices in life, this choice can be boiled down to a bumper sticker:


Editor’s note: Chris Chew and Steve Huffman will be participating in a Google Developers Live Hangout on Thursday, November 1st. 

Here is the full Hangout conversation on Youtube: