Do you know where you are going in life? A lot of people don’t. If you have a clear idea of where you want to be in a few years, you really are a lucky one. Dreams are valuable, if you’ve got one then hold onto it! But even more important than dreams, are plans. If you know where you are going, do you know how to get there? With a plan, you can turn a dream into an action, a fantasy into a set of real, concrete steps.
The problem is, not many of us have solid answers to these two questions. Figuring out where you want to go and how to get there can seem very difficult, sometimes impossible. The world is so big, there are so many opportunities, and so many obstacles. How can we figure all of this out?! Don’t worry. When you think about things in terms of smaller, more bitesize questions, life becomes a lot easier to manage. Here are 4 simple things to think about, and do, in order to get some life direction.
1. What is important to you in life and work?
Ask yourself this question, and don’t think too hard. Just focus on what comes naturally to you. Is it family? Working directly with people? Maybe getting a promotion and becoming a manager, or starting your own business? Perhaps what you really value in life is travel, or just being healthy? Whatever it is, be honest, write it down, and focus on that thing. Your answers to this question will provide you with some insights into how you want your life to progress.
2. What do you (not) like about your current job?
To find out where you want to go, think about where you are and what you like about it. Look at your most recent job. Is it causing you stress? If yes, then what is stressful about it? Do you have a good work-life balance? Do you feel in control of your time? Write down the elements of your job that you want to keep and the ones that you want to change. This will really help you develop a sense of where you want to go.
3. Get some professional career guidance
Once you have a better idea of what you want more of in your life, you can start thinking about how to manage your career to make these dreams a reality. To put together a great career plan, you should talk to the people who know about your field. You can connect with the pros by boosting your online presence. You can also visit Alison’s Career Guide to find out which skills and courses are the most useful for developing specific career paths.
4. Take action
Once you have gathered some career guidance from the people who really know, put that knowledge to good use and take action. No matter what skill you want to learn, start learning and stick with it. With each course you complete and skill you gain you will make your résumé stronger, and the future you are looking for will become more and more of a reality.
So, from a question, to a dream, to a plan, it really is possible to find some solid direction in life. The key is to go for it. Ask yourself those questions, and then take action. Your future is yours.
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.
What factors sometimes lead to conflict between neighboring countries? Brainstorm a list and share with a partner.
On Feb. 14, a suicide bombing in the disputed territory of Kashmir reignited a longstanding conflict between two neighboring nuclear powers, India and Pakistan.
Next, look at the map above and answer the following questions:
• What do you notice? • What do you wonder? • What story does this map tell about the conflict taking place in Kashmir?
1. What are the key recent events in the escalating conflict between India and Pakistan? Give three examples.
2. What are the roots of the conflict between the two countries? In your opinion, what is the most significant historical factor?
3. Who controls Kashmir today, and why is it considered a territory rather than a country?
4. Explain the role religion plays in the conflict. What is the religious composition of India, Pakistan and Kashmir?
5. What are the political pressures facing India’s prime minister, Narendra Modi, and Pakistan’s prime minister, Imran Khan? How might they influence what happens next in the conflict?
6. How has U.S. foreign policy toward India and Pakistan shifted under President Trump? What is the role of foreign powers in the current crisis?
7. The article concludes:
Mr. Khan, the Pakistani prime minister, urged India to settle matters through talks. “All big wars have been due to miscalculation,” he said in a televised address. “My question to India is that given the weapons we have, can we afford miscalculation?”
What does this statement mean? Can you think of other historical examples of miscalculations that led to war?
Finally, tell us more about what you think:
— What is your reaction to the recent events in Kashmir? How is the crisis shaped by geography?
Life on the India side is often disrupted by militant attacks, street protests or government crackdowns. Soldiers are everywhere: on the roads, in the apple orchards, standing with their guns behind giant coils of barbed wire. Schools shut down frequently. So do stores, roads and the cellphone network. Some young Kashmiris call their homeland “the world’s most beautiful prison.”
The article continues:
“Whenever India and Pakistan fight, we are the first ones to suffer,” said Mr. Khan, the cousin of the wounded farmer.
Aijaz Ashraf Wani, a professor of political science at Kashmir University, said Kashmir had become the major source of tension between India and Pakistan.
“We are the grass that suffers in the fight between two elephants,” Mr. Wani said.
“But,” he added, “we are also the biggest reason these two elephants are fighting.”
What does Mr. Wani mean by his elephant analogy? Do you agree with the analogy? Do you think there will ever be a resolution to the divided Himalayan region of Kashmir?
— How should the world respond to the crisis between these two nuclear powers? If you were advising President Trump, what would you recommend that the United States do?
A new four-hour documentary, “Leaving Neverland,” showing on HBO in two parts on March 3 and 4, focuses on the wrenching testimony of two men, Wade Robson and James Safechuck, who say sexually abused them for years, starting when they were young boys.
What did you do during that time? Looking back, do you think it was all just fun and games or do you think it was important to your learning and development?
Would you go so far as to say that recess should be a required part of the learning day?
Four years ago, Lucy Dathan moved to New Canaan, Conn., where she enrolled her three children in public elementary school. They met new classmates. Their teachers were attentive. But something was amiss: Recess was limited to a 20-minute break after lunch, or about half the time as at their previous school, in California.
Ms. Dathan said a shift in her children’s mood was palpable. They found it difficult to focus on homework. They were restless and sometimes cranky after school, which she attributed to pent-up energy. With so little time for schoolyard play, she worried they were losing the ability to navigate personal relationships. “It was hard for them to adjust to only one recess,” she said in an interview.
So Ms. Dathan, who was elected to the Connecticut legislature in November, agreed to support a state bill that would require schools to provide at least 50 minutes of daily undirected play for students enrolled in preschool through fifth grade. “I haven’t had one person ask, ‘Why are you doing this?’” she said of parents, students and teachers who have contacted her. “I think playtime fosters the creativity that we need to solve crazy world problems, like global warming, or other issues we need to face as a planet.”
Ms. Dathan is not alone in her observation. Last April, Arizona legislators passed a law that provided two daily recesses for the state’s elementary school students. Teachers have already seen encouraging results, reporting fewer disciplinary actions, enhanced test scores and improvement in children’s overall health. And just last week, youngsters from Arkansas, where a similar move is also being considered, sent letters to state legislators asking they be given a longer recess break.
Students, read the entire article, then tell us:
— Do children need recess? Why?
— How important was recess to your schooling? How did you spend that time? Are there any important skills and life lessons you learned or developed through recess?
— Do you still have recess? Is recess just for elementary school students, or do you think students in middle school or even high school should have some form of recess or unstructured time?
— The article quotes Robert Bilder, a clinical neuropsychologist:
“What is valuable for children is freedom where they are solving problems with no predictable answer,” he said. “When it is open-ended, they retain the curiosity to learn more things. And that is going to be essential for their futures.”
Do you agree? Do you think there is a connection between daily undirected play and creativity? Do you think recess can help children develop curiosity, creativity and problem-solving?
— Should all states and school districts require recess? Why, or why not?
— What is the ideal amount of time for recess? How much would be too much? Are there potential downsides to mandating recess?
Students 13 and older are invited to comment. All comments are moderated by the Learning Network staff, but please keep in mind that once your comment is accepted, it will be made public.
4. While the psychological benefits of working with animals is widely known, why is it still rare in therapeutic settings?
5. The article profiles several students — Xander, Austin, Jack and Luis. What are some of the ways the school has positively affected their learning as well as their growth and development as people? Which student impact story do you think is most dramatic or memorable?
6. Richard Schiffman, the author, says, “Public schools seem to be at their capacity in their ability to help children with special needs.” What evidence does he provide to support this claim? What are ways that Green Chimneys is better able to support children with special needs than public schools — other than the opportunity to interact with animals?
7. Mr. Schiffman addresses some criticisms of the school:
Not everyone agrees that special-needs children should be sent to privately run schools at public expense. Some argue that the money would be better spent strengthening the special-needs programs in public schools rather than offering the best education that money can buy to a fortunate few.
What is the cost of the school and what does it mean that families meet that cost at the expense of public schools? Do you agree with the argument that support for Green Chimneys is hurting special education programs in public schools?
Finally, tell us more about what you think:
— What experiences have you had with animals? What have you learned from them? What did you learn about animals and their ability to teach humans? Does the article make you want to be around animals more?
— Do you, or does someone you know, have special needs? How does this article change your perspective on students with special needs?
— Which student profiled in the article do you relate to most? Which animal do you connect to most? (Snowflake the goat? Dixie the pony? Bonz the racehorse?) Explain why.
— How does your school support students with special needs? Do you think the supports your school provides are satisfactory or need improvement? What recommendations would you make to improve your school for special-needs students?
— Would you want to go to Green Chimneys? Should all schools provide students with access to animals? Write a letter to your teachers, principal or school board appealing to them to provide regular access to animals for students.
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.