Hey all! My name is Natalie - Fordham biology major, turned Flatiron School student, turned instructor, turned software engineer (hopefully at one point I can end my intro with 'Mother of Dragons'). I have always had a love for problem solving so I'm glad I have found a place where I can do that everyday with amazing people. Outside of programming, I love competitive picnic sports - spike ball, outdoor volleyball, cornhole, the list goes on.
Keep reading to learn about my path into coding, what my bootcamp experience was like as both a student and a teacher, and more!
How did you get into programming and decide to attend a bootcamp?
Up until about a year before I ultimately applied to The Flatiron School, I had no idea what programming was. I was a student at Fordham University--a bio major. I had every intention of going to PA school. Did all the my bio reqs, graduated. I really loved the systematic approach to biology, the way the human body is kind of like a machine. I had this idea that I really loved the way systems worked but I had no idea that this would translate into a career in computer programming.
After graduation, I worked at Memorial Sloan Kettering hospital as an assistant to a surgical physician. I helped run clinic and acted as the point person between patients, doctors and nurses. I gained a lot of good communication skills but by being in a hospital I realized that the medical route wasn't for me. I wanted to make a career change but I didn't know where I wanted to end up. I knew I had this love for science, this love for problem solving, love for communication and dealing with people but I didn't know what to do with these interests.
So, I was at a point in my life where I really had no idea what to do next, and my brother suggested looking into coding bootcamps. I tried Code Academy and loved it, it kickstarted my interest in programming. I went through a tutorial that had you solve a riddle using Ruby. I always loved riddles/crosswords. Having an interest of mine translate into using code really got me interested, got me going.
I explored my options, realized Flatiron School was the right fit for me. I applied and became a student for the in-person Software Engineering program in NY.
As a student, what helped you get through the most difficult topics?
Building! Get your hands dirty with code. Start a personal project and build a small app or program, no matter how small or silly or "bad" you think it will turn out. Building on my own was what gave me the opportunity to connect the dots and gain a deeper understanding of what were the most challenging topics for me.
Another thing that really helped me was asking for help from other students. Seeing how other people solve the problem or seeing how other people understand something really exposes and fills in holes in your understanding. Working with others accelerated my learning and was the most fun and exciting part of my time as a student.
How did you continue to learn after graduation? How did you decide what to work on?
After graduation, I definitely felt overwhelmed. I thought: "should I build a project, learn a new language, learn a new library, all of the above??"
When you leave a structured program, it is totally normal to feel this way. Understand that the world of programming is HUGE. No one knows EVERYTHING, no one is an expert in EVERYTHING.
My biggest piece of advice is to start somewhere and start small. The more you learn, the more you'll realize you don't know. And that's never going to change. Instead of getting overwhelmed by everything you don't know. Pick one thing you want to learn and get started!
The goal is structure! It's less important exactly what you work on. More important to pick something.
It also helps to create a schedule and make sure you set aside time for yourself to do the things that you love to do. Being stressed and overwhelmed is the biggest hinderance to moving forward as a programmer.
How did you decide to become a teacher?
Being a teacher at The Flatiron School was one of the most fun, intense, rewarding, challenging things I've ever done. It taught me a lot about programming but also a lot about myself, about how much we can learn from other people and how the questions and ideas of others can transform the way we see something and the way we learn.
I would say that the experience of learning from and helping others as a student catapulted into wanting to be a teacher.
At first, I looked up to my teachers and thought: "Wow they know so much, I'll never be on that level." But, while our teachers are really amazing people, any student can learn to play that role!
I went through the interview process, spoke to other teachers and students. Through this I realized that there is so much to be learned from being a teacher. The feeling that you get when you're helping someone get that "aha" moment is one of the most rewarding feelings. Every teacher has been through those times when you're struggling with something that doesn't make sense. To be able to be there for someone to help them break through whatever is blocking them and solve a problem or learn something new is a really great feeling.
Did you feel comfortable moving directly into teaching after being a student? How did you bridge the gap from being a student to being a teacher?
First things first, imposter syndrome is real! And it will come up again and again throughout your career. I worried about things like: "If students find out I just graduated, will they take me seriously??" But I should have asked: "Do I take myself seriously?" By reminding myself that I do know the material, I have solved these problems and I am capable of helping others, I was able to learn a lot about myself and support my students to learn and grow.
I acknowledged my imposter syndrome, showed up and got to work anyway and each day I saw how I impacted my students and felt that imposter syndrome even less.
Another thing I struggled with at first, was the feeling that I had to know everything. I worried: "If a student asks me a question and I don't know the answer, will they realize I'm not good enough?""
But even if you're a senior dev, it is okay not to know the answer! Acknowledge it, "I'm not sure, let's figure it out together"; "Here's what I do know, so let's start there". Even if you don't know the exact right answer, you do have context you can apply to solve the problem, you do have "google-foo" skills, and debugging skills you've honed that you can apply. It's not about "being right", its about supporting a student to get to the solution themselves.
Be confident in what you do know, be okay with not knowing something and lean on your strong problem solving skills. "Here's the error, read the message, google the error", for example. Sharing your problem solving approach is likely more beneficial to the student than just giving them the answer directly anyway.
What makes a good teacher?
Having the patience to explain something again and again, finding different ways to go through a concept so that students who learn differently can understand.
Being able to provide feedback to students. Being able to understand and accept feedback so that you can become a more effective teacher.
What makes a good student?
Throughout my year as a teacher, I learned what it takes to be a successful student. It's NOT the person who completes work the fastest or does the most homework. The main characteristic of a successful student in my opinion is curiosity. Curious students don't look at difficult situations as problems or obstacles but as exciting challenges. They have the perspective that, although this is hard today, next week I'll have conquered it. Keeping your learning and growth in perspective rather than letting everything you don't know overwhelm you is an important mindset to cultivate.
The students who were really direct about what they were struggling with, who had specific questions, who could pinpoint what they couldn't understand, got the most helpful answers. Learning how to ask a good question is a really valuable skill to cultivate as student and as a dev.
The goal of asking a question shouldn't be to fix a specific problem but instead to gain enough knowledge to fix or even avoid similar problems in the future. If you don't know the problem how can you find the answer? Trying to understand the problem is just as important as the solution, so take the time to really investigate the environment of your issue before asking for an answer. Debug, log, investigate, gather as much information as you can about the problem to help better structure and focus your question. The person/people who you seek out for help will now have the info they need to provide that help and you'll notice the quality of answers will increase.
Another important note about asking questions is learning how to "time box" your investigations. Investigating a problem is always important, but spending multiple hours on a single issue isn't beneficial to you or your team. Setting aside 30 minutes or so for debugging allows you to explore the issue without getting frustrated and hitting a dead end. Time boxing and gauging how long to investigate different problems takes practice but if you've absolutely hit a wall, take a break and ask for an extra set of eyes.
Why did you decide to leave teaching for a dev role?
Being an instructor taught me so much. You see material you're familiar with but you learn it in a whole new way--answering a variety of student questions forces you to dig deep into each subject matter.
As a teacher, my focus is my students. So I wasn't writing a lot of code. After a year, I felt I wanted to apply all I had learned as a teacher. I was more ready to dive into a developer role after my time teaching than I would have been a year ago. I became a better programmer overall--in the way I thought about code, communicated about it to others.
So, after being a teacher for a year, I realized it was time to take on the role of developer. I applied to be an apprentice developer on the Flatiron Technology Team. I've been a dev apprentice since November of 2018.
What kind of onboarding training did you go through as a developer apprentice?
The codebase we work on is a really really large codebase. Its a big "monolithic" Rails app. So, as part of my onboarding, I was put on what we call the Empowerment Team. You focus on bug fixing, support tickets. In fact, every new team member is placed on the Empowerment Team for a period of time, not just apprentices. Its a chance for you to explore and understand different parts of the code base. Your time on this team exposes you to different parts of the app while allowing you to make contributions.
You have a buddy to help you set up your environment, pair with you on tickets. But the whole team is like your buddy. Everyone is ready to answer questions, offer help. And there are docs! Lots of documentation on the app and how it works. There's lots of supporting material as well as the team just being very supportive.
What helps you succeed as a dev?
- Know your debugging procedure. Focus on problem solving skills over "knowing the right answer"
- Don't be afraid to get your hands dirty! Read through code, read through documentation, do what you can to understand the problem.
- Ask questions! Once you've spent some time trying to understand the problem, ask for help! No one on your team wants to see someone spin their wheels for hours and hours. Once you've done your due diligence, raise your hand and ask for help, feedback for advice on how to move forward.
I'm going to hit you with a cliche - at the end of the day try to make programming fun. Not every bug is going to be interesting, not every project is going to be your dream project, but every project, every piece of documentation, every bug, every pair programming experience all contribute to making you a better developer. So be open to different experiences and keep a positive perspective.