We all use open source technologies, and I think that every developer should contribute to their growth. In my opinion, there are three ways of contributing to open source (all three equally relevant):
- solving issues and submitting PRs
- donating some money for the purposes of package development
- sharing knowledge on a particular technology (especially when you think it's really cool and you know a lot about it)
This year I neither submitted any PR nor donated money, so I decided to go for the last option:)
Last Friday I had an opportunity to give my first professional programming talk at PyData Warsaw conference. If you wonder, whether this is something that you could try as well, here is a quick summary where I describe my experience as a speaker and a participant of this fantastic event.
You are there for the audience
Being invited to speak at the conference is one thing, another is to deliver an engaging and interesting talk. Remember, that people paid for the conference and they really are there to learn something new (in my case it's also free food and laptop stickers:D). In my opinion, people will consider you an expert not when you present fantastic results from your project, but when you precisely explain how you got to these results.
Before you start working on your presentation's content, consider the following:
what is the level of your audiece- know who is going to listen to your talk. It these are people, who see this type of project for the first time, be precise, explain everything and don't skip anything (even if it's trivial to you). If your audience are experts in the field, don't show how you use basic methods. Get to the point right away.
what's the implementation logic, not raw results- it's great that your machine learning model had 99% of accuracy. However, this information without the parameters and methods you used and description of your input dataset, gives me zero knowledge that I can transfer to my project. Explain the process, and prove it with nice results.
describe what are the possible problems and how these can be faced- we all struggle in our projects. That is why we should tell a lot about it. This is why people came to listen to you, to learn on your mistakes!
share your code after the talk- result reproducibility is a huge issue nowadays. You should always share your code and slides after the talk to prove that what you present, actually works in reality.
Slides are there to help you
A wise person once said:
We can either read or listen at the same moment.
This is something that I noticed while watching several talks during my preparation time. Some slides can have walls of code or too much text that no one will ever manage to read. I think that 10 lines of code on one slide is a maximum that one can process under one minute (especially if topic is totally new for the audience).
using descriptive function name instead of long docstring
writing a logic in bullet points, instead of showing its full implementation
highlighting (either by color or size) the part of code that user should read in a particular moment
You are the star of the show, and you should explain the topic. No one is going to be mad if you skip some irrelevant parts of your code. Choose the essence and explain it thoroughly.
Finally, I think that nothing helps more than presenting an image/chart/gif that clearly summarizes the key point of your message, so make sure that you visualize your thoughts as often as its possible.
How to reduce your talk stress?
Stress can either paralyze or motivate you, in my case its definitely the former. It's also probably the biggest blocker that stops you from submitting your first talk proposal. Luckily, over time I build a framework that I try to implement every time I speak publicly. In my case, once I apply all the steps, I feel very confident during the presentation day.
Before the talk:
Ask how the battle field looks like- send a friendly email to the event organizers asking what is the size of projector so that everyone sees your slides (you can use different font sizes depending on a screen size). You can also ask if a slide clicker is available, and what is the type of microphone that you will use. Finally, make sure that the talk is recorded or at least pictures are taken (we all love to show off afterwards!:D)
Back up your slides- save slides on your laptop in pdf form and ideally prepare them using Google Slides. This will prevent you from fonts that are not installed on someone else's computer or from problems with internet connection.
Practice- This is absolutely the most important part. Before you present to the target audience, present it to someone you trust, and ask for a constructive feedback. Still ashamed? Record yourself, and watch it alone. Trust me, you will see a lot things to improve from the third person's perspective. By practicing, you will gain a lot of confidence, and see what are the parts of your presentation that need more work. This point is an absolute must if you plan to present in a language that is not your native one. What we think is not equal to what we can say (especially in front of people).
Rest- try to find the perfect spot between preparation and overtraining. I know that it sounds trivial, but I bet that during your practicing phase, a moment will come when you say "This sounds good!". Probably this is the right moment to take a break:)
Once you arrive at the venue:
Test your slides and microphone- you can use a coffee break or come earlier and test if everything works smoothly. Common issue is also that sometimes there is no right adapter that matches your laptop. If you check everything earlier, you will have time to react:)
Speak with someone who has done it before- learn from someone else's mistakes by asking them for an advice for a first-time-speaker. Trust me, you will hear a lot of funny stories that will at least relax you in this difficult moment.
What can be improved?
If I had a chance to prepare once again, here is what I'd do:
make my slides more interactive- if you're watching python programming talks, probably you know
@dontusethiscode. In my opinion his talks represent how a great tutorial should be delivered. He can at the same time write code, present, make jokes and effectively explain difficult concepts. It's learning by doing combined with fun. So next time I will probably try to write some lines together with the audience in order to keep everyone engaged.
try to reach audience before the event- unfortunately, I didn't have a chance to ask my audience what would be a nice content for them to hear. Next time I will probably use twitter and try to collect feedback on issues related to my talk.
collect feedback afterwards- this blog post tries to fix this. I didn't simply ask:
what can i do better?. So if you've seen the talk and have some comments, don't hesitate to contact me! Next time, I will also provide a link to one-question-long survey, where everyone can enter and leave the opinion.
Huge thanks to PyData Warsaw organizers!
Finally, I would like to thank the whole PyData Warsaw team, who invited me to join the conference as a speaker. This was my first time meeting more than 400 people with the same interest in data science as mine. We are definitely going to see each other next year!:)
In this post, I really wanted to focus on both preparation and
things that can be improved in the process of delivering your first content-based talk.
Hope that I showed you that it isn't that difficult if you implement the right framework.
If you're curious to see the talk, join my newsletter, and I will let you know once it's available on YouTube:)
Happy knowledge sharing!
Update 2020, January 8
Video from talk is available here: How to effectively extract image features