Selena Deckelmann is an open source vet. She’s a major contributor to PostgreSQL and a data architect at Mozilla who’s been involved in open source since 1995. She’s also made it her mission to teach absolute beginners how to program in Python, in an effort to widen the pool of people contributing to open source and improve the skills of junior developers. Throughout her experience, these beginners have succeeded and failed in open source in both familiar and surprising ways.
We’re excited to announce that Selena will be gracing our Portland office next Monday night, May 12, to give a talk for our FutureTalk series on just that subject. Fresh from giving her talk “The Final Crontab” at Monitorama PDX this week, Selena will discuss how we can create a more inclusive and welcoming future for open source software. In particular, she’ll dive into the code review process, and how learning how to give (and not just receive) code review is critical to becoming an expert developer.
Hop on over to our event page to learn more about Selena’s FutureTalk and register before spots fill up.
We recently chatted with Selena to pick her brain for advice she has for new programmers and the mentors who are working with them. She covered flashcards, the power of UNIX, and how to not feel stupid as a beginner making mistakes. Read her full answers below:
Who has been your best mentor, and what could we learn from that person about how to be better mentors?
I have had so many mentors that I’m just going to pick someone who figured large in my choice of a first career after college: Steve VanDevender. He is a system administrator and teacher at the University of Oregon. He made so many interesting tools and was incredibly helpful and sharing. One of the more mind-blowing tools he made was a privilege escalation daemon that detected processes that were able to get root permissions but weren’t launched by a previously authorized user. This was the kernel of an idea I used to write my undergraduate thesis, and continues to be my favorite reminder about the power of checking your assumptions.
What “tech stacks” do you recommend for beginning programmers and why?
I teach people Python on UNIX-based systems. For web developers working in open source, UNIX-based systems are pretty standard and understanding basic file operations and UNIX semantics helps a lot for learning new tools like revision control.
If you could teach beginning programmers three things that would help them save time, what would those three things be?
The main things I try to teach people are:
- You are smarter than the machine. Machines just do what we tell them to, and people sometimes forget that programmers are only human and make lots of mistakes. Beginners especially feel very stupid all the time and need reminders that everything is fine and that progress and learning are happening.
- How to derive meaning from error messages. This helps not only with learning new things and why things are broken, but also with managing the emotional baggage that goes along with a machine telling you that you’re wrong all the time.
- How to talk about technical topics. I spend a lot of time on flashcards with git, for example. Helping people figure out vocabulary is one of the most valuable things I’ve found for new developers. Especially new folks coming from non-computer science or math backgrounds. The vocabulary is incredibly intimidating.
If you could get senior engineers to stop doing three things when mentoring/teaching, what would those three things be?
- Ask more questions.
- Never say “well actually”.*
- Never feign surprise when someone doesn’t know something.*
*Borrowed from Hacker School.