In this post we share the best for courses for making sense of the modern world.
In a world that only seems to get faster, more complicated and more confusing it can be hard to understand how modern issues affect you, and how you can respond. So to help, we’ve collected some of the best courses to help you address the big challenges of modern life.
Improve your health and wellbeing
Every year in the UK we lose 11.7 million working days to stress (HSE). It causes and worsens range of health problems including headaches and stomach issues. But in a frantic world how can we avoid stress and anxiety? The short answer is we can’t. But we can learn strategies to improve our general wellbeing so we’re better prepared to handle stress when it comes along.
Explore ways to improve your wellbeing with these courses:
Often it feels like the world lurches from one crisis to another, leaving us all behind in understanding political, economic and social issues. If you want to go beyond the headlines and become more informed about modern problems we’ve got courses on everything from the state of Europe, to modern slavery.
Get to grips with modern issues with these courses:
Globalisation has increased how connected we are, the flow of goods and services across the world and the interaction of cultures. As globalisation continues to transform business, now is the time to learn how it works and what it might mean for your professional life across the next decade.
Understand the impact of globalisation with these courses:
Maybe you’re reading this post on your smartphone – you know, the supercomputer you keep in your pocket that allows you access to almost all of humanity’s collective knowledge with just a few taps! The astonishing speed at which technology has transformed our lives in recent years can be overwhelming, leaving us with little time to actually think about its implications. What makes good technology? How can we build tech that helps us, not slows us down? Whether you’re a digital native or not, we’ve got courses to answer your questions.
It’s unsurprising sometimes many of us feel a little lost in today’s world. Over half of the global population live in ‘urban areas’ (WHO), and predictions say that this number is set to increase as our populations continue to boom. Find your place in the world by discovering more about the future of habitation or exploring how modern maps are helping us understand the world in more depth.
Courses to help you find your place in the modern world:
Codecademy’s very own Nick Duckwiler (left) and Ryan Tuck from Warby Parker (right) in our office. (📷: Mitch Boyer)
Last month, Codecademy and Warby Parker came together to work on a special Learn SQL from Scratch Capstone Project. It was during this time when I met Ryan Tuck, a Data Engineer at Warby, who played a major part in this partnership. So when he decided to drop by our office for the final QA round, I had to break out my notebook and ask some questions. Enjoy.
Hey Ryan, let’s start off with a question I’ve had for a while — what is a Data Engineer? (Is it similar to a Data Analyst or a Software Engineer?)
At Warby Parker, data engineers are responsible for creating and maintaining the plumbing required to support the data and reporting needs of the business. We use software engineering practices to automate the work of data cleaning, normalizing, and model building so that data is always ready to be consumed by data analysts in every department.
What languages/frameworks do you use at Warby?
On data engineering, we use Python as our general purpose programming language, as do most of the other teams in our Technology department. When it comes to databases, we use PostgreSQL for the majority of our SQL needs, and are beginning to use Amazon Athena and Google BigQuery for some of our larger datasets. We use Looker as our exclusive business intelligence entry point to all of this data.
What are some of the projects you worked on?
I’ve had the privilege of working with a lot of of smart people in every department at our company to help them solve their varied data needs, from reconciling financial data with the Accounting team to automating and modeling standardized performance metrics for our team of over 200 customer experience advisors.
As part of a team of five supporting the data needs of a rapidly growing company, I’ve tried where possible to focus on helping our analysts solve their own problems. This includes helping people learn Python and commit to our codebase, guiding the creation of data models in SQL, and encouraging people to submit pull requests to add features in Looker, our BI tool.
Seeing dozens of otherwise “non-technical” colleagues opening up PRs on a daily basis, and consequently being part of the democratization of tech that we value at Warby Parker, is probably the most rewarding “project” I’ve been a part of.
One project finished recently during our first annual “Hackweek” is called Pipes, which allows anyone at the company to easily move large amounts of data from wherever to wherever (Looker, Google Sheets, PostgreSQL, BigQuery, etc) on a regular cadence, or manually through a simple one-line chatbot interface. The adoption has been overwhelmingly positive and we’re looking to grow this sort of tooling out even more.
“We use software engineering practices to automate the work of data cleaning, normalizing, and model building so that data is always ready to be consumed by data analysts in every department.”
What got you into the data field?
I’ve always been drawn to analytical fields like math, and became pretty proficient in Excel during some internships in college. Once I had learned to program and learned more about data science and its applications in artificial intelligence, I knew that anything I could do to immerse myself in the world of data would be a step in the right direction.
Three and a half years ago, I landed a job as a junior software engineer at Warby Parker not fully knowing what I was in for, but am so glad I got the opportunity to help build tools to support an interesting and ever-changing data-driven culture here.
Where did you learn SQL and Python?
I had a background in C++, and was exposed to Python through an Intro to Data Science course. When Warby Parker hired me onto the Data team in 2015, I had never written a SQL query in my life, but picked it up quickly and within a few months started up internal SQL training classes, which I still teach on a monthly basis.
What does your tattoo say?
The ultimate cheatsheet.
This is Bayes’ Theorem, which is an equation that describes how to update probabilities given new evidence. Two summers ago I worked on building a tool to help predict weekly fantasy football performance. Some colleagues suggested a Bayesian approach would be appropriate, since there aren’t really enough data points in an NFL season to be able to use statistical approaches that require larger datasets, and I’d want to regularly update my predictions after each player’s latest performance.
I did a deep dive into understanding the (simple) math underlying Bayes’ Theorem and came out of that experience with a whole new worldview, understanding my entire knowledge of the world as a big and intricate probabilistic model that I was continuously updating with every experience I ever have. It was pretty transformative, and I figured that was worth a tattoo.
What is a concept in SQL/Python that’s essential to your work?
Donald Knuth said, “Premature optimization is the root of all evil.” I’ve generally found this to be true, and try to live by it in my work. For example, I’ll generally prefer to keep a data model simple by rebuilding it for all time on a daily basis using a single SQL query instead of making a more complicated model that requires iteratively adding to a table, keeping track of state, updated timestamps, when something last ran, etc.
A wise man once said, “Duplicating data makes things go fast,” but databases are already impressively fast to begin with, without implementing anything to improve performance. Ultimately, I almost always approach a problem thinking about optimizing for my time over machine time, for readability over performance, and for introducing as little cognitive overhead as is required by the problem at hand. Only once performance issues or readability issues present themselves will some code be worth a rewrite.
Last question! Since you wrote Warby Parker’s internal SQL training courses, I know there gotta be some inner Curriculum Developer in you. Can you teach a SQL concept in 2 minutes?
Sure! Have you ever written a query that yields some result set and you think, “I’d love to query the stuff I just produced like it was a table?” Enter the WITH clause.
Suppose I have a mega query that gives the transaction summaries:
select
transactions.date as transaction_date,
sum(items.price) as total_cost,
count(*) as number_of_items
from
transactions
inner join
customers
on
customers.id = transactions.customer_id
inner join
transaction_items
on
transactions.id = transaction_items.transaction_id
inner join
items
on
items.id = transaction_items.item_id
Using WITH, I can create a temporary table within my query that I can SELECT from and treat it just like a regular old table.
I will put everything from the previous query in a parentheses and use WITH to give it the name transaction_summaries.
Then I’ll apply the date and customer filtering down below for a more readable query, to separate out all the JOIN logic from the actual WHERE filters that I want to apply on that data.
with transaction_summaries as (
select
transactions.date as transaction_date,
sum(items.price) as total_cost,
count(*) as number_of_items
from
transactions
inner join
customers
on
customers.id = transactions.customer_id
inner join
transaction_items
on
transactions.id = transaction_items.transaction_id
inner join
items
on
items.id = transaction_items.item_id
)
select
*
from
transaction_summaries
where
first_name = 'beyonce'
and
transaction_date > '2018–01–01'
order by
total_cost desc
limit
5
If you’re familiar with subqueries, this does a similar thing but makes the SQL far more readable, even if your query isn’t quite as performant as it would have been. This is essentially an implementation of the mantra “Don’t Repeat Yourself” that’s common in the world of programming.
Incredible. And love the SQL styling! 😍
Huge shout out to Ryan and the whole Warby Parker team for making this partnership happen. Special hat tips for behind-the-scenes support from:
A Day in the Life of a Software Engineer (via Life of Luba)
With Airbnb came a revolution of sorts in the world of vacation travel and culture. We sat down with Luba Yudasina, a YouTuber, an opera singer, and a Software Engineer on the Airbnb’s Homes Platform team, to discuss software engineering and her programming journey—from Codecademy to Airbnb!
Hey Luba, let’s start with the basics! What does a Software Engineer on the Platform team do at Airbnb?
Homes Platform’s mission is to create the building blocks to power all Homes categories. Any project undertaken by our team should be reusable and extensible in some way. This means that as a backend engineer, I have a lot of opportunities to work on impactful technical projects that create systems and services to support Homes, as well as collaborate across teams to come up with the best architectural decisions and designs.
Recently, our team wrote a blog post on classifying Room Types into categories using Machine Learning and computer vision. The room-type classification problem largely resembles the ImageNet classification problem, except our team’s model outcomes are customized room-types.
After a few experiments with various models, the team chose ResNet50 due to its good balance between model performance and computation time. To make it compatible with our use case, we added two extra fully connected layers and a Softmax activation in the end.
Let’s rewind a little bit. Coming from a chemical engineering background in college, how did you make the switch into programming?
I went to the University of Waterloo in Canada—a university with the biggest co-op program in the world. Co-op means that to obtain a bachelor’s degree you must complete a certain number of internships. If you are in Engineering at Waterloo, you must complete 5 internships to graduate.
In my first and second years, I interned at chemical engineering companies and afterwards I couldn’t see myself working in the field full-time. That’s why I’m particularly grateful that I studied at Waterloo: if not for co-op, I probably would not have realized I didn’t want to work in chemical engineering until getting a full-time job after graduation.
I happened to have a lot of friends in Computer Science and Software Engineering right when I realized Chem Eng wasn’t for me. They really encouraged me to try coding, and when I decided to follow their lead I never looked back! My first online programming course was Web Development on Codecademy 🙂
“It’s a really cool time to be a software engineer and even cooler to be a female software engineer, because this is the time when women start to embrace their own unique identities and be ok with not being ‘one of the dudes.'” -Luba Yudasina
When I decided I wanted to learn computer science on my own, my goal was to get an internship in the field because working as a software engineer at a tech company would be the best test to really know if it was for me.
I happened to be in Munich, Germany on academic exchange for a whole year when I was learning how to code, so I hustled as much as I could while being there to get experience to learn quicker and have something to put down on my tech resume.
Almost immediately after arriving in Germany, I got a part time job as a developer at a game publishing company. I had a good friend in Computer Science at my German university: her and I ended up working on an Android app as a side project, etc. When I was ready, I started preparing for technical interviews. I then leveraged my network to refer me to companies and do mock technical interviews with me.
Yelp was really random though—a Yelp recruiter looked at my LinkedIn profile and didn’t even message me, but I messaged them anyway asking about internship opportunities, and that’s how I got my interview there!
Airbnb HQ in San Franciso
What is an essential app/item in your day-to-day?
Code searching! A lot of software engineering is problem solving and a lot of it is understanding other people’s code and the reasoning behind writing it a certain way. Searching through the codebases is almost essential to my day to day. Whenever I build something new or build on top of already existing tech, I need to understand how it works and is written, and code search is vital to this.
At Airbnb we use Google’s Codesearch for these purposes, but developers (myself included) also frequently use their IDEs to search for relevant code. I mostly use RubyMine or IntelliJ (depending on the codebase I’m working with).
In your videos, you’ve mentioned the intersection of gender and technology. Can you speak a bit more about that?
It’s a really cool time to be a software engineer and even cooler to be a female software engineer, because this is the time when women start to embrace their own unique identities and be ok with not being “one of the dudes.”
I think it’s particularly important to redefine the stereotypes, and I hope that with my own example I can show young girls and women interested in the field that you don’t have to give up your feminine side to be a software engineer and still be into fashion, or makeup, or art (I personally sing opera) and have other interests outside of coding and be successful in the field.
Before we wrap up, do you have anything else you would like to say to our learners?
Don’t be discouraged, learn and absorb as much as you can! If you don’t understand a concept or can’t build a project right away, know that with practice, perseverance and concentration you will get there!
Take advantage of such amazing tools as Codecademy that are there for you to take and learn. Learning anything new can be frustrating, but knowing that you can do it, staying curious, asking questions and not losing your motivation is the key to success.
Huge shoutout to Luba for this insightful interview. It’s always incredibly moving to see a Codecademy learner go on to do bigger things. Go subscribe to her YouTube channel, Life of Luba.
And thank you to the whole Homes Platform/Engineering team at Airbnb for the support. Check out their wonderful open source projects on airbnb.io.
It’s really important to find the right online course for you. Starting a course that doesn’t suit you can quickly put you off learning and knock your confidence. But when there are thousands of online courses, how can you choose just one?
Here’s some simple advice you can follow to find the course that’s a good fit for you.
1. Decide your own criteria
Step one is deciding what you want from a course. Do you want a course to improve your skills for work? Or a course that is endorsed by a professional body? Or maybe a course just to pass the time? Maybe you know which topic you want to study, or maybe you don’t.
Before you start looking for a course, try to establish exactly what you want or need from it. Try and answer these questions:
Are you learning for work or for fun?
How long can you spend learning a week?
Are you looking to develop a specific skill, if so, what is it?
What topics are you especially interested in?
2. Spend some time exploring
Now you have a clearer idea of what you need from a course, spend some time browsing courses. On FutureLearn you might want to look through our category pages, or if you know the topic or area you’re interested in, you might want to search directly. Choose courses that match as many of your criteria as possible.
If you find several courses that meet your criteria, don’t worry. Open up each course page and then…
3. Read the course description(s) thoroughly
This step is one of the most important. Take some time to read all course descriptions thoroughly, making sure you understand what the course is about, what’s on the syllabus and what you’ll learn by the end of the course.
It’s also important at this point to find out exactly who the course is for, so you can ensure it’s the right level for you. On FutureLearn we have a wide range of courses – from those for people with no experience of a subject to those for people who are already working in the field. You don’t want to end up on a course which doesn’t match your experience.
4. Narrow down your choices using your criteria
After you’re familiar with what the courses cover and who they’re for, you need to check them against the criteria you set out in step one. Which course best meets your needs?
If you find you have a few courses that meet the criteria, you will need to judge whether you have the time to join and keep up with all of them. If you don’t think you can, you can always bookmark them to start later (most courses on FutureLearn run multiple times a year) or upgrade a course, to get ongoing access to it.
5. Start learning!
You’ve browsed, you’ve read the small print, you’ve checked the criteria and, if it’s all gone to plan, you should have a course lined up. The only thing left to do is get started!
If the course doesn’t start for a little while, add a reminder to your calendar or make a note in your diary, so you’re ready when it does start.
Learners are what make FutureLearn great, so we’re sharing some of their stories. Today, meet Connor, an apprentice engineer and learner from the UK.
About Connor
Name: Connor Age: 20 Job: apprentice engineer with the Innovation & New Business Team (INBT) Location: Bournemouth, England.
How did Connor find FutureLearn?
After taking on a new role, his line manager suggested he have a look, for training purposes. Connor signed up for training and for personal enjoyment too.
“I wanted to improve my skills and knowledge so I could apply it at work. Also for a personal sense of achievement, to reignite the joy of learning and learn more about my interests.”
“I had no previous experience of business so it’s all new to me…this looked like another good, effective way of learning and I could do it anytime!”
“Since completing the course on Effective Networking I’ve tried to network effectively as much as I can and had good results. The Effective Communication course has also helped me a lot in terms of delivering my presentations.”
“The INBT is about innovating and thinking of new ideas and concepts. The nuclear industry is part of our research so when a course came up it seemed a perfect opportunity.”
What’s next for Conor on FutureLearn?
Connor has signed up to 11 courses! He puts much of this dedication down to the FutureLearn platform.
“FutureLearn itself kept me coming back. The whole setup, for me, is perfect. It’s healthy to learn and FutureLearn has helped me to enjoy doing it again.”
Connor plans to keep learning during his apprenticeship, and one day wants to study for a degree in engineering.
Best part of FutureLearn?
“I really enjoy the comment sections, the discussions/debates can be great to read and/or get involved with. There are some very intelligent people to learn from, not just the courses.”
In the third of a new series about taking on new roles we look at how to become a project manager.
The Basics
Here’s a short summary of what a project manager is and does.
A project manager is in charge of making sure a project runs smoothly and is finished on time. They typically manage people, time and money. Project managers are found in almost every sector, from marketing and advertising to IT and construction. They are exceptional organisers and have great communication skills.
Step by step
Taking on any new role can be daunting. Here’s a step-by-step guide for getting started with project management.
1. Consider if you naturally fit the profile of a project manager 2. Research what sector you might like to work in 3. Find out if you need any specific qualifications for your preferred sector 4. Learn more about the skills required for project management 5. Practise your skills on work placements or on small self-initiated projects
Key Skills
Find out what abilities you need to be a project manager.
Organisational skills As a project manager you’re going to be managing a lot of things: time, budgets, expectations, clients, paperwork. You will need to have organisation down to a fine art and thrive on juggling lots of different parts of a project.
Empathy As Elizabeth Harrin a Project Manager in healthcare says ‘being able to relate to people is vital. The workforce is diverse, with multi-generational teams, as well as a wide range of cultures represented in our workplace’. If you’re going to effectively negotiate with people on projects you need to be able to understand things from their perspective.
A cool head In every project things will go wrong. The project manager is the one who needs to stay calm and rational to get things back on track and keep everyone working harmoniously.
Communication skills When projects start to get difficult you’ll need excellent negotiating and communication skills to resolve any conflicts. You’ll need to get your hands dirty – a project manager ‘cannot get stuck in orbit, hovering over the project like an observer and a reporter’ (Effective Agency).
Dos and Don’ts
Discover what to do and what not to do as an aspiring project manager.
Do
✅ Research types of project management (Agile, Kanban) ✅ Try to shadow a project manager to get a sense of the role ✅ Find out what sector you might like to work in
Don’t
❎ Forget that people can make or break a project ❎ Assume it will be easy – projects need constant supervision ❎ Stop learning – there are always ways to improve your skills
Advice from the front line
Hear what advice current project managers have to offer.
Luke, Digital Project Manager at TMW Unlimited, says…
“A successful project manager must have a good working relationship with their immediate project team. They must be approachable, with good communication skills and have the ‘can do’ attitude to tackle any problem head on. If you can be seen to be making a positive, constructive influence on a project, it’s easier for the team to follow suit. Any project, no matter how difficult, will have greater chance of being delivered successfully if the team remain motivated and are all pulling in the same direction.”
Fiona, Project Manager at FutureLearn says…
“I think it’s always wise to not assume. If you assume, you make an ‘ass’ out of ‘u’ and ‘me’! Other tips: always send an introductory email outlining where people can find key documents, what the key milestones are for a project and who’s responsible for what, even if it’s fairly top level. Also, putting stuff in writing and putting people’s names next to things quickly let’s you realise if you got something wrong! Finally, get consensus on your assumptions – silence is not always golden.”
Courses to help you grow your project management skills
Get practical help to become a project manager with courses from top organisations.
Master the basics of project management with these courses:
Teaching is a difficult job which requires a range of skills and extensive knowledge. In the second post about what makes a great teacher, we look at some of the characteristics which make teachers successful in classrooms today.
A great teacher…sets an example
Great teachers are passionate learners who set an example to their students. Whether it’s keeping up-to-date on the latest curriculum information, exploring new educational methods, or developing your subject knowledge, great teachers keep on learning.
Working with a range of abilities in the classroom can be tricky when it comes to assessments. Great teachers set high expectations for all, making sure all students are provided with equal opportunities to learn, develop and succeed. Why not suggest online courses to help your students prepare for exams? Or design assessment instruments to measure student outcomes?
Teaching goes beyond just the classroom: it extends to the world all around us. Great teachers understand that youth social activities can help others and the environment, improve communities and shape character and confidence in young people.
Mental health issues are on the rise in children and teenagers, with 1 in 10 young people now experiencing conditions such as anxiety, depression or conduct disorder (Mental Health Foundation). A great teacher is able to manage their own emotions in the classroom and understand the emotions of others. Learn mindfulness techniques and share them with your students, or find out about psychological therapies such as CBT.
All over the world groups of young people are marginalised from educational opportunities due to poverty, disability and other social issues. Great teachers break down these social barriers in the classroom; tailoring teaching methods to suit a wide range of individual needs and creating a positive learning experience for all.
How do we set about decreasing levels of inequality and creating a world that is fairer for all?
Improving access to healthcare
Across the world people are still suffering from a lack of basic healthcare and healthcare infrastructure. Women and children are especially at risk. According to the UN, ‘almost all maternal deaths occur in low-resource settings and can be prevented’. Finding ways to improve basic levels of healthcare across the globe will save millions of lives.
Education is recognised as a key way to keep people out of poverty, yet as of 2013 59 million school-age children were not in school (UN). Girls especially are not given the same educational opportunities as boys, which can leave them financially dependent on others and unaware of their own rights (Plan UK). We cannot afford to neglect the education of the next generation.
Although crime rates are generally in decline, there is still more to be done to ensure fair, efficient justice systems the world over. The first step to ensuring a fair justice system is understanding it – the law can often be complex and confusing.
Thanks to cheaper air travel, the movement of people across the globe is commonplace. Different cultures, races and languages now live and work side by side in cities the world over. But cultural differences can often bring conflict and confusion, especially if they’re not fully understood. This is why increasing our cultural knowledge and awareness is so vital if we want to live in a globalised and cooperative world.
Codecademy’s very own Nick Duckwiler (left) and Ryan Tuck from Warby Parker (right) in our office. (📷: Mitch Boyer)
Last month, Codecademy and Warby Parker came together to work on a special Learn SQL from Scratch Capstone Project. It was during this time when I met Ryan Tuck, a Data Engineer at Warby, who played a major part in this partnership. So when he decided to drop by our office for the final QA round, I had to break out my notebook and ask some questions. Enjoy.
Hey Ryan, let’s start off with a question I’ve had for a while — what is a Data Engineer? (Is it similar to a Data Analyst or a Software Engineer?)
At Warby Parker, data engineers are responsible for creating and maintaining the plumbing required to support the data and reporting needs of the business. We use software engineering practices to automate the work of data cleaning, normalizing, and model building so that data is always ready to be consumed by data analysts in every department.
What languages/frameworks do you use at Warby?
On data engineering, we use Python as our general purpose programming language, as do most of the other teams in our Technology department. When it comes to databases, we use PostgreSQL for the majority of our SQL needs, and are beginning to use Amazon Athena and Google BigQuery for some of our larger datasets. We use Looker as our exclusive business intelligence entry point to all of this data.
What are some of the projects you worked on?
I’ve had the privilege of working with a lot of of smart people in every department at our company to help them solve their varied data needs, from reconciling financial data with the Accounting team to automating and modeling standardized performance metrics for our team of over 200 customer experience advisors.
As part of a team of five supporting the data needs of a rapidly growing company, I’ve tried where possible to focus on helping our analysts solve their own problems. This includes helping people learn Python and commit to our codebase, guiding the creation of data models in SQL, and encouraging people to submit pull requests to add features in Looker, our BI tool.
Seeing dozens of otherwise “non-technical” colleagues opening up PRs on a daily basis, and consequently being part of the democratization of tech that we value at Warby Parker, is probably the most rewarding “project” I’ve been a part of.
One project finished recently during our first annual “Hackweek” is called Pipes, which allows anyone at the company to easily move large amounts of data from wherever to wherever (Looker, Google Sheets, PostgreSQL, BigQuery, etc) on a regular cadence, or manually through a simple one-line chatbot interface. The adoption has been overwhelmingly positive and we’re looking to grow this sort of tooling out even more.
“We use software engineering practices to automate the work of data cleaning, normalizing, and model building so that data is always ready to be consumed by data analysts in every department.”
What got you into the data field?
I’ve always been drawn to analytical fields like math, and became pretty proficient in Excel during some internships in college. Once I had learned to program and learned more about data science and its applications in artificial intelligence, I knew that anything I could do to immerse myself in the world of data would be a step in the right direction.
Three and a half years ago, I landed a job as a junior software engineer at Warby Parker not fully knowing what I was in for, but am so glad I got the opportunity to help build tools to support an interesting and ever-changing data-driven culture here.
Where did you learn SQL and Python?
I had a background in C++, and was exposed to Python through an Intro to Data Science course. When Warby Parker hired me onto the Data team in 2015, I had never written a SQL query in my life, but picked it up quickly and within a few months started up internal SQL training classes, which I still teach on a monthly basis.
What does your tattoo say?
The ultimate cheatsheet.
This is Bayes’ Theorem, which is an equation that describes how to update probabilities given new evidence. Two summers ago I worked on building a tool to help predict weekly fantasy football performance. Some colleagues suggested a Bayesian approach would be appropriate, since there aren’t really enough data points in an NFL season to be able to use statistical approaches that require larger datasets, and I’d want to regularly update my predictions after each player’s latest performance.
I did a deep dive into understanding the (simple) math underlying Bayes’ Theorem and came out of that experience with a whole new worldview, understanding my entire knowledge of the world as a big and intricate probabilistic model that I was continuously updating with every experience I ever have. It was pretty transformative, and I figured that was worth a tattoo.
What is a concept in SQL/Python that’s essential to your work?
Donald Knuth said, “Premature optimization is the root of all evil.” I’ve generally found this to be true, and try to live by it in my work. For example, I’ll generally prefer to keep a data model simple by rebuilding it for all time on a daily basis using a single SQL query instead of making a more complicated model that requires iteratively adding to a table, keeping track of state, updated timestamps, when something last ran, etc.
A wise man once said, “Duplicating data makes things go fast,” but databases are already impressively fast to begin with, without implementing anything to improve performance. Ultimately, I almost always approach a problem thinking about optimizing for my time over machine time, for readability over performance, and for introducing as little cognitive overhead as is required by the problem at hand. Only once performance issues or readability issues present themselves will some code be worth a rewrite.
Last question! Since you wrote Warby Parker’s internal SQL training courses, I know there gotta be some inner Curriculum Developer in you. Can you teach a SQL concept in 2 minutes?
Sure! Have you ever written a query that yields some result set and you think, “I’d love to query the stuff I just produced like it was a table?” Enter the WITH clause.
Suppose I have a mega query that gives the transaction summaries:
select
transactions.date as transaction_date,
sum(items.price) as total_cost,
count(*) as number_of_items
from
transactions
inner join
customers
on
customers.id = transactions.customer_id
inner join
transaction_items
on
transactions.id = transaction_items.transaction_id
inner join
items
on
items.id = transaction_items.item_id
Using WITH, I can create a temporary table within my query that I can SELECT from and treat it just like a regular old table.
I will put everything from the previous query in a parentheses and use WITH to give it the name transaction_summaries.
Then I’ll apply the date and customer filtering down below for a more readable query, to separate out all the JOIN logic from the actual WHERE filters that I want to apply on that data.
with transaction_summaries as (
select
transactions.date as transaction_date,
sum(items.price) as total_cost,
count(*) as number_of_items
from
transactions
inner join
customers
on
customers.id = transactions.customer_id
inner join
transaction_items
on
transactions.id = transaction_items.transaction_id
inner join
items
on
items.id = transaction_items.item_id
)
select
*
from
transaction_summaries
where
first_name = 'beyonce'
and
transaction_date > '2018–01–01'
order by
total_cost desc
limit
5
If you’re familiar with subqueries, this does a similar thing but makes the SQL far more readable, even if your query isn’t quite as performant as it would have been. This is essentially an implementation of the mantra “Don’t Repeat Yourself” that’s common in the world of programming.
Incredible. And love the SQL styling! 😍
Huge shout out to Ryan and the whole Warby Parker team for making this partnership happen. Special hat tips for behind-the-scenes support from:
A Day in the Life of a Software Engineer (via Life of Luba)
With Airbnb came a revolution of sorts in the world of vacation travel and culture. We sat down with Luba Yudasina, a YouTuber, an opera singer, and a Software Engineer on the Airbnb’s Homes Platform team, to discuss software engineering and her programming journey—from Codecademy to Airbnb!
Hey Luba, let’s start with the basics! What does a Software Engineer on the Platform team do at Airbnb?
Homes Platform’s mission is to create the building blocks to power all Homes categories. Any project undertaken by our team should be reusable and extensible in some way. This means that as a backend engineer, I have a lot of opportunities to work on impactful technical projects that create systems and services to support Homes, as well as collaborate across teams to come up with the best architectural decisions and designs.
Recently, our team wrote a blog post on classifying Room Types into categories using Machine Learning and computer vision. The room-type classification problem largely resembles the ImageNet classification problem, except our team’s model outcomes are customized room-types.
After a few experiments with various models, the team chose ResNet50 due to its good balance between model performance and computation time. To make it compatible with our use case, we added two extra fully connected layers and a Softmax activation in the end.
Let’s rewind a little bit. Coming from a chemical engineering background in college, how did you make the switch into programming?
I went to the University of Waterloo in Canada—a university with the biggest co-op program in the world. Co-op means that to obtain a bachelor’s degree you must complete a certain number of internships. If you are in Engineering at Waterloo, you must complete 5 internships to graduate.
In my first and second years, I interned at chemical engineering companies and afterwards I couldn’t see myself working in the field full-time. That’s why I’m particularly grateful that I studied at Waterloo: if not for co-op, I probably would not have realized I didn’t want to work in chemical engineering until getting a full-time job after graduation.
I happened to have a lot of friends in Computer Science and Software Engineering right when I realized Chem Eng wasn’t for me. They really encouraged me to try coding, and when I decided to follow their lead I never looked back! My first online programming course was Web Development on Codecademy 🙂
“It’s a really cool time to be a software engineer and even cooler to be a female software engineer, because this is the time when women start to embrace their own unique identities and be ok with not being ‘one of the dudes.'” -Luba Yudasina
When I decided I wanted to learn computer science on my own, my goal was to get an internship in the field because working as a software engineer at a tech company would be the best test to really know if it was for me.
I happened to be in Munich, Germany on academic exchange for a whole year when I was learning how to code, so I hustled as much as I could while being there to get experience to learn quicker and have something to put down on my tech resume.
Almost immediately after arriving in Germany, I got a part time job as a developer at a game publishing company. I had a good friend in Computer Science at my German university: her and I ended up working on an Android app as a side project, etc. When I was ready, I started preparing for technical interviews. I then leveraged my network to refer me to companies and do mock technical interviews with me.
Yelp was really random though—a Yelp recruiter looked at my LinkedIn profile and didn’t even message me, but I messaged them anyway asking about internship opportunities, and that’s how I got my interview there!
Airbnb HQ in San Franciso
What is an essential app/item in your day-to-day?
Code searching! A lot of software engineering is problem solving and a lot of it is understanding other people’s code and the reasoning behind writing it a certain way. Searching through the codebases is almost essential to my day to day. Whenever I build something new or build on top of already existing tech, I need to understand how it works and is written, and code search is vital to this.
At Airbnb we use Google’s Codesearch for these purposes, but developers (myself included) also frequently use their IDEs to search for relevant code. I mostly use RubyMine or IntelliJ (depending on the codebase I’m working with).
In your videos, you’ve mentioned the intersection of gender and technology. Can you speak a bit more about that?
It’s a really cool time to be a software engineer and even cooler to be a female software engineer, because this is the time when women start to embrace their own unique identities and be ok with not being “one of the dudes.”
I think it’s particularly important to redefine the stereotypes, and I hope that with my own example I can show young girls and women interested in the field that you don’t have to give up your feminine side to be a software engineer and still be into fashion, or makeup, or art (I personally sing opera) and have other interests outside of coding and be successful in the field.
Before we wrap up, do you have anything else you would like to say to our learners?
Don’t be discouraged, learn and absorb as much as you can! If you don’t understand a concept or can’t build a project right away, know that with practice, perseverance and concentration you will get there!
Take advantage of such amazing tools as Codecademy that are there for you to take and learn. Learning anything new can be frustrating, but knowing that you can do it, staying curious, asking questions and not losing your motivation is the key to success.
Huge shoutout to Luba for this insightful interview. It’s always incredibly moving to see a Codecademy learner go on to do bigger things. Go subscribe to her YouTube channel, Life of Luba.
And thank you to the whole Homes Platform/Engineering team at Airbnb for the support. Check out their wonderful open source projects on airbnb.io.