How to Get Started Learning WebRTC Development

27/03/2017

So you’ve been using WebRTC for a while, or even not at all. You might have checked out AppRTC or took a piece of code from github and forked it, running your own server (yay!). But now you’re feeling stuck, unable to become a serious WebRTC developer.

WebRTC developers come in different shapes and sizes. They usually have one of two origin stories:

  1. They were VoIP developers 10 years ago (that can mean anything from played with the configuration of an Asterisk installation to wrote their own RTP stack)
  2. They are web developers (which can easily be implementing WordPress sites on top of premium themes, but can just as well be building backends used by the Facebooks of the world)

The challenge though is that WebRTC sits somewhere between these two very different disciplines that are VoIP and Web:

Me? I’ve got a VoIP developer origin story. I wrote my own static memory, no-recursion implementation of an ASN.1 PER encoder/decoder. Dealt with scaling linearly a UDP/TCP sockets implementation on different operating systems. Handled multi-threading in C code. Low level stuff that most developers today don’t even grok. While these are great starting points, they don’t really offer any way of making the transition to WebRTC.

This isn’t about WebRTC. It is about understanding the different mindsets and approaches of developing VoIP products and developing Internet web applications. And it requires being able to learn new techniques and new ways of thinking.

While I won’t take you through that journey here, I can help you formulate a plan. In this article, we’ll explore together three things you can start doing today to make the jump from VoIP or Web to an experienced WebRTC developer.

What Don’t You Know?

The first thing you need to get a handle on is what you need to learn. Some might think that all you need to know to be a WebRTC developer is HTML, CSS, and a bit of JavaScript. Taking a github project that makes use of WebRTC, install and run it on your own. And you’re ready!

While that is certainly a good start, developing with WebRTC isn’t as easy as just learning a bit of JavaScript. Or Node.js for that matter.

To really call yourself a WebRTC developer, you’ll need to get a handle on a wide range of topics:

  • WebRTC APIs: That’s quite an understandable requirement from a WebRTC developer 🙂
  • Front-end development: HTML, CSS and JavaScript
  • Backend development: Node.js or some other modern asynchronous development platform
  • Networking: TCP, UDP, HTTP, WebSocket and anything in-between these concepts
  • Codecs and media processing: How codecs are designed and implemented, what are the algorithms and techniques used to send them over a network – using SRTP. Extra credit for understanding Simulcast and SVC
  • Server side media processing: Knowing the different techniques that can be used to support group calling, live broadcasts, recording, etc.
  • Troubleshooting and monitoring tools: to include, at a minimum, how to read webrtc-internals dump files and understand ICE failures
  • Common frameworks: know the popular frameworks that are out there and what they are good for. It doesn’t hurt to have some understanding of Jitsi, Kurento and Janus for example

With these skills and knowledge base in hand, you’ll be able to create virtually any real time communications product. That might seem like a lot to learn, but I want to share some resources below that you can use to learn about each of these topics relatively quickly. In addition, you don’t have to be an expert in every one of these topics, but as a WebRTC developer, you do need to have some basic familiarity with each and every one of these topics. I know I am not an expert in any of these…

Now that you know what you need to know, let’s look at the top three ways you can learn what you need to learn.

#1- Learn WebRTC Development by Reading

Subscribing to WebRTC related blogs is one of the ways you can keep your development skills up-to-date

One of the best things you can do to grow in your knowledge about any topic is to read and follow along with posts and tutorials written by other experts in the industry. WebRTC is no different in this regard.

There aren’t many WebRTC blogs out there, but you’ll still want to focus to get maximum value here. Pick up just a few-quality blogs to follow. I try subscribing to ALL of them, mainly because it is my job to know as much as I can about the WebRTC market AND because I need to curate the WebRTC Weekly. What I do follow closely and make sure I read and understand when it comes to hard core WebRTC development amounts to just three main blogs:

  • webrtcHacks: High quality content about WebRTC for developers. That sums it up…
  • Mozilla’s Advancing WebRTC: Mozilla recently started a new blog dedicated to WebRTC. Quality there is top notch and the information is really useful. It covers small issues related to WebRTC and offers code snippets that are very useful
  • Philipp Hancke: If there’s anyone who knows… everything (?) about WebRTC it is Philipp. He is methodical with his approach to WebRTC and analyzing browsers behavior. Every time he writes and publishes something, I end up learning at least one new thing
  • WebRTC Weekly: Yap. I curate this one with Kranky. This one gives you the pulse of what’s happening with WebRTC, so following it can get you faster to the content that others are writing – especially those who don’t publish as much as I’d like them to

Pick a few blogs that you want to follow and subscribe to them. You don’t have to read everything they publish, but make sure that on a regular basis you read technical articles that stretch and challenge your developer muscles. That’s my approach here and I don’t consider myself a developer anymore. You probably take the next step as well and open a code editor and try the code snippets that the articles you read publish.

#2 – Learn WebRTC Development by Studying

The Advanced WebRTC Architecture course offers a holistic view of WebRTC development

Reading about WenRTC is ongoing maintenance that you must do to keep up-to-date – especially because WebRTC changes all the time and there’s no solid specification out there just yet. To really develop new skills quickly some formal education is in order.

There are a couple of online courses about WebRTC out there that you can find. Those that I’ve seen focus on the WebRTC APIs piece which is great to start with WebRTC. The challenge though is that WebRTC is still not standardized, so things change to quickly for such content to be kept up to date.

Out of these courses, I guess there are two places where you can learn extensively about WebRTC:

  • Google’s WebRTC Codelab: This was put by Google as an introductory course on using WebRTC. It will get you through the basic concepts of WebRTC with a fast time-to-results when it comes to getting a first simple proof of concept out there
  • WebRTC School: The focus of the WebRTC classes of the WebRTC school is the WebRTC API and how to use it. I am not sure how up to date this one is being kept
  • Advanced WebRTC Architecture: This is the course that I offer. It covers everything from the basics of VoIP, codecs and WebRTC up to the frameworks and solutions available out there for developers
  • Kranky Geek: for the visual types, I’d suggest checking out the topics curated by Kranky Geek (I am a part of that team). You’ll get high quality content there on specific topics in WebRTC development

Other than WebRTC, make sure to look at other courses as well – things around fullstack web development or Node.js development courses at the likes of Udemy, Codecademy or Pluralsight. Make sure they’re up to date if you take them (anything that is 12 months back is old in WebRTC terms).

How about books?

I have a nagging feeling that goes with me for a few months now.

There hasn’t been any new book published about WebRTC in over a year.

I believe June 2015 was the last time a new WebRTC book got published.

Now, if reading and learning from books is still a thing for you, then check out this roundup of WebRTC books – it is still valid today as it were then.

Oh – and make sure you read High Performance Browser Networking if you are doing anything with web browsers (and especially if you are planning on using WebRTC and cobble up your own signaling).

#3 – Learn WebRTC Development by Doing

Working and writing about your projects can further help cement what you read and learn about

Reading about WebRTC development will keep you sharp. Studying WebRTC development will help you develop new skills and give you solid understanding of the technology. But to really grow as a developer you’ve got to find opportunities to put all of that education to good use.

I can think of four different ways you can put your education to good use:

  1. Build out personal projects – a blog, a personal portfolio, a hobby site. Create personal projects that really stretch you and that you’ll have to figure out as you go. I guess Muaz Khan does this best. I really liked how Brian Ho shared his experience recently on using WebRTC in a client-server web game
  2. Build products for paying clients – You wouldn’t believe how many vendors are out there looking for capable hands when it comes to WebRTC development
  3. Write about the new skills you’re learning and publish them on your own blog or better yet – submit it to webrtcHacks. There’s nothing that will ensure you really understand a topic like writing a tutorial about it
  4. Become a WebRTC professional –  Once you have the requisite knowledge and a bit of experience, you might want to join a WebRTC outsourcing company that is actively building products with WebRTC. Here’s how Germán Goldenstein puts it – you really can’t ask for more than this as a developer. It reminded my what I love so much about developing and working with developers

What will you do tomorrow?

There’s a paradox in our industry.

For one, WebRTC is stupidly simple (if you compare it to doing the same things before WebRTC). But at the same time, there aren’t a lot of experienced developers out there that know how to use it. Talk to employers who are looking for WebRTC skills and you’ll see how hard it is to come by – most end up with using internal resources they grow into WebRTC developers – sometimes after a really bad experience with an external outsourcing vendor that knows how to build websites or mobile apps, but know nothing about WebRTC.

If you’re ready to move past copy+paste implementations from github of Hello World WebRTC concepts and become a real WebRTC developer. However, if you’re ready to mobe past implementation or hobby and become a real WebRTC developer all you need is a plan and the self-discipline to stick to it.

Your plan should include three core learning activities: reading, studying, and doing. Work on those three activities on a consistent basis and it won’t be long before you’ve left the hobby behind and grown into a WebRTC professional developer.

Responses

Brian says:
March 27, 2017

Concise filtered resources from an extremely seasoned authority, thank you.

Reply
Ron W. Szpak says:
March 27, 2017

Tashi, thank you for the focused WebRTC Development resources.

Question…are you aware of any WebRTC projects or research focused on “Emergency Medical Services” supporting live video streaming?

Thank you.

Best,

Ron

Reply
    Tsahi Levent-Levi says:
    March 27, 2017

    Ron,

    Seen a few dealing with medial services, but nothing around Emergency.

    Avaya did something in that domain with WebRTC at some point and there are services offering WebRTC as part of a campus security servce or similar.

    Reply
      Ron W. Szpak says:
      March 31, 2017

      Thank you Tsahi.

      Reply
Rahul Sadafule says:
March 27, 2017

Hi Tsahi..
Very practical and well captured indeed. Thank you so much.
Best wishes.

Reply
    Tsahi Levent-Levi says:
    March 27, 2017

    Thanks Rahul!

    We should somehow find a way to meet in person again 🙂

    Reply
      Rahul Sadafule says:
      March 29, 2017

      Yupp, I attended KrankyGeek of Bangalore few days back hoping to catch you, but this time you gave it a miss.

      Reply
Steve Hansen says:
March 27, 2017

Thanks for the great rundown of resources. As someone who comes from the single page mission critical web app side of the world I could hardly spell networking. For the last 18 months its been an interesting journey of learning the other side of the equation. I agree, resource are fragmented and come from diverse perspectives which is good.

Where I began to struggle is when I needed to go deeper than the standard into books and resources. Things like massive scaling, security, deployment strategies, deeper levels of signaling.

Thanks for you continued work and contribution to the community.

Reply
Hamid says:
March 28, 2017

Any ideas about where to find about more and contact one of these “WebRTC outsourcing company that is actively building products with WebRTC”?

Reply
    Tsahi Levent-Levi says:
    March 28, 2017

    Sure. Check the Outsourcing and some of the sponsors of the WebRTC Index: https://webrtcindex.com/

    I’ve got my own swipe file of contractors I am comfortable referring my customers to, but that’s something I don’t publicly share.

    Reply
      Hamid says:
      March 28, 2017

      Thanks. Seems like a comprehensive list!
      Once I am feeling comfortable on moving past simple demo projects, I might then contact for that list.

      Reply
med mouden says:
March 28, 2017

Thanks for this comprehensive list and for your time.

Med

Reply
RealTimeWeekly | RealTimeWeekly #173 says:
April 3, 2017

[…] How to Get Started Learning WebRTC Development […]

Reply
Все, что вы хотели знать о WebRTC — Teleport says:
July 12, 2017

[…] самом деле, когда-то я написал статью по этому вопросу. И если вы только начинаете […]

Reply

Comment