Situational & Behavioural Questions Flashcards
What made you interested in software development, and how did you get started?
Started when I got my first raspberry pi back in 2017. Built a smart mirror and DIY google home device.
–> Continued building different python scripts and started getting more into actual web development.
–> Working alongside the product team at inkbox helping to support the development of our internal software tools I really fell in love with it. I thought what our developers did was magic, how they were able to make peoples lives easier and automate a ton of work.
–> Fast forward to 2022 and I decided that I wanted to become a developer so I went back to get my diploma!
Tell us a bit about yourself.
–> Just graduated from Lighthouse Labs full-stack web development bootcamp.
–> Have spent the last 6+ years working professional in the e-commerce start-up space, mostly in operations and process improvement.
–> Live in Niagara with my partner and 2 dogs and cat.
–> In my free-time I spend most of my time coding side-projects.
–> Trade english lessons for coding lessons with a developer from Brazil. We meet once a week!
–> Working on other hobbies - I had a 3D pixel art project I was working on for a bit, messing around with my Raspberry pi, laser engraving with a CNC machine I have in my garage.
What do you enjoy most about software development and what motivates you?
–> I really enjoy building things - and web development for me is the ultimate way of taking an idea in my head and being able to build it from the ground up!
–> Its also this perfect blend of problem solving, creativity and design that just checks a lot boxes in my mind for some reason.
–> I’m motivated by the fact that I still know I have so much to learn and that I want to essentially master development one day and make it my trade!
–> Also I think it will allow me to provide a better life for me and my partner one day!
How do you stay up-to-date with the latest technologies and trends in software development?
–> I tend to frequent reddit quite often in my spare time, which is where I usually get the latest news on tech. Sub reddits like Web_dev, laravel, React, Web_design and a few others.
–> Dev.To & medium.
–> Friends and old colleagues that I chat with.
Can you walk me through your development process and the tools you use?
1.) Analysis & planning - What problem are we trying to solve - Google Docs.
2.) Gathering requirements - what does it need to do, who will be using it - Google Docs/Confluence/Jira
3.) Design
–> Wireframes (figma)
–> Entity Relationship diagrams (lucid-chart)
–> Routes and Queries (Google Docs.)
4.) Development
–> Visual Studio Code
–> Git & npm
–> Docker (node, react, postgres)
–> Google Chrome
5.) Testing
–> Unit testing - Mocha/Chai
–> Integration Testing - Cypress
6.) Deployment
–> Used vercel for my portfolio project, and aware of AWS but have not formally used.
7) Maintenance
–> Jira and the rest of my development tools (VSC, docker, git etc…)
What are your strengths and weaknesses as a software developer, and how do you address them?
Strength: Adaptability
–> 7 years spent at start-ups has engrained in me that things move quick, priorities change and putting out fires is occurrence.
–> I’ve found that i’m very adaptable in an organization because of this and think I can bring that to your team, whether its picking up a technology that I haven’t used before or adjusting to your teams workflows.
Weakness: Knowing when to say no.
I have a hard time saying no when someone asks for something, super hard to do in a small team where everyone wears a lot of hats and there is lots going on.
I started managing this by keeping better track of what our teams priorities are, what i’m working on, and what my deadlines are and say yes or no according to that.
How do you approach problem-solving and troubleshooting in your work?
I like to break things down into smaller more manageable chunks.
Situation: Was tasked with building a form component in React that should have the ability to create and update an existing entry in the database.
Action: I broke that feature down into its smaller pieces.
–> Setup routes to an edit and a create page that rendered the component.
–> Build 2 queries that updated or created a new entry in my table.
–> Create the form on the front-end
–> Handle user input to update component props
–> Either call the update or create route based on props existing when the component was rendered.
Result: So by basically breaking down this feature into more bite-sized tasks I was easily able to check them off one-by-one and had a fully functional form component by the end of it!
What is the most challenging project you have worked on, and how did you overcome the challenges?
Situation: I had a project during school where I had to add a handful of features to an established Ruby on Rails e-commerce website. This included adding a sold-out badge to products cards that didn’t have any inventory, creating sign-up and login forms, and adding in a password protected admin panel. But I had little experience using Ruby on Rails.
Action: The first thing I did was break-down each of the feature requirements into bit-sized chunks. Using the sold-out badge as an example I knew I would have to check the product inventory from my products controller, create a sold-out badge in my view that I would dynamically add if inventory was less than one and disable the purchase button on the product card.
For each of these sub-tasks I poured through the Ruby docs to make sure I was doing things according to the documentation.
Result: I was able to implement all of the features on-time and thought i did a pretty good job for not initially knowing too much about the framework!
How do you collaborate with other developers, stakeholders, and clients in a project?
Cross-functional collaboration is super important when working on a project with developers, stakeholders and clients. Some methods I use include:
1.) Clear Communication - understanding of the project’s goals, requirements, and timeline.
2.) Define Roles and Responsibilities
3.) Use Project Management Tools - Jira & trello.
4.) conduct regular meetings - Conduct Regular Meetings
5.) Document Everything
How do you prioritize and manage your workload and deadlines?
I typically like to manage my workload by:
1.) creating a to-do list
2.) Identify urgent tasks
3.) Estimate time required
4.) Set deadlines
5.) Prioritize based on importance and urgency
6.) Use productivity techniques like using a pomodoro timer.
7.) Review progress
What are your long-term career goals as a software developer, and how do you plan to achieve them?
In 3-4 years I plan on being and intermediate to Senior Web developer here at Mabel’s Labels, and hopefully being able to mentor people who are just getting their start like me.
I plane to get there by:
–> Continuous learning - learning as much as I can both on the job and during my free time.
–> Embedding myself in a group of smart and hardworking people that I can learn from.
–> taking on new and more challenging tasks, both personally and at work that force me to get better at the job.
Can you give an example of a project you worked on that required you to learn a new skill or technology, and how did you approach the learning process?
Situation: I had a project during school where I had to add a handful of features to an established Ruby on Rails e-commerce website. This included adding a sold-out badge to products cards that were out of inventory.
Action: Throughly read certain the sections of theRails documentation, Went through similar repositories on Github that used Ruby to see how they structured their code (i found this approach super helpful).
Result: By doing this I was able to learn enough in a short enough amount of time that I was able to complete the features I was required to build.
How do you ensure the quality and maintainability of your code?
1.) Follow team coding standard - I find enlist is helpful to keep code syntax consistent between team members.
2.) Write clean code - descriptive variable names, avoid unnecessary comments, eliminate duplicate code.
4.) Conducting code reviews with team members.
5.) Document the code - comments in the code and documentation outside in a confluence or google doc.
6.) Refactor as I code, try not to put it off until later
7.) Using version control - description commit comments, commit often.
Can you tell me about a time when you had to deal with a difficult situation or conflict with a colleague or client, and how did you handle it?
I typically like to manage conflict through compromise. And example of this is when:
I was dealing with excessive bloat on our website due to 3rd party scripts and apps that our marketing and design team had insisted we use - things like an instagram carousel banner, hot-jar, trust pilot, a chat widget, Klaviyo, facebook pixel and google analytics pixels, all while our store had a pretty bad lighthouse performance score ( it was somewhere in the 20s at the time”) and we new it was affecting conversion.
I knew we couldn’t get rid of all of these 3rd party scripts, especially some of the ad tracking pixels, so I wanted to come up with a compromise.
I created a document outlining all of the 3rd party apps and scripts that our site was using and went through each one with our marketing team. We were able to cut 1/3 of the apps front our storefront - some of which weren’t even being used!
In the end I think I did a good job at increasing our lighthouse score by a handful of points, all while keeping the marketing and design team happy by using comprise to manage our conflicts!
What are some software development best practices that you follow, and why do you consider them important?
Some best practices i’ve tried to employ:
1.) Agile methodology - deliver high-quality software in a timely manner, while also accommodating changing requirements and priorities.
2.) Code Reviews: Code reviews are a process of reviewing and discussing code changes with other developers. They help ensure code quality, consistency,
3.) Test-driven Development (TDD): TDD is a practice of writing tests before writing code.
4.) Version Control: Using Git on all of my work, especially in a team setting.
5.) Documentation: Documentation is important for maintaining code and facilitating collaboration between developers.
6.) DRY - trying not to repeat myself in my code.