Skip to content

The Importance of Finding a Career Mentor

What is a Mentor?

Mentor (noun): an experienced and trusted adviser. "He was her friend and mentor until his death in 1915." Similar: adviser, guide, confidant, confidante, counselor, consultant

  • Google

A mentor is someone who can be approached for advice. Some are informal like parents or friends. Others are more official through work. Regardless of their title, a good mentor is someone who can help you move forward.

However, mentors are not for everyone. This is completely fine. There is no right or wrong path when it comes to advancing your career. Keep in mind that mentees have just as much responsibility as a mentor when participating in some form of mentorship.

I have had a few mentors since my early years of being a developer. It wasn’t until the last few months that I got assigned a formal mentor. It’s been a great experience for me in both scenarios.

There are many highlights that I want to share with you. These are some of the main reasons why I advocate for mentoring programs for career development.

1. Coding Skills

Developers thrive by being exposed to all types of coding styles. I especially learn more when someone can review my code and provide feedback on improvements. There’s only so much you can learn from reading code or documentation.

My mentors have provided their thoughts on different approaches to coding. One advice that has stuck out to me is the need for comments. Time can be saved by writing useful comments for future development even if you’re the only coder. They’re meant to explain the code versus having to take time to translate the lines into your native language. A mentor’s time is valuable. The less time they need translating, the more time they can provide a good review of your code.

I knew that comments were important but it wasn’t until it was emphasized from someone that I respected that their value solidified in my mind.

Some mentors are able to let you shadow them during their work day (mentees should also feel comfortable requesting this). If you have this opportunity, take it. You will be getting a first hand experience of how another developer reviews a task and implements it.

I recently learned from a mentor that technical design documentation is crucial when preparing to add a major feature. It’s important to centralize the data and propose the best solution for the team along with your reasonings.

This is something that was never mentioned in any of my college courses.

2. Work Culture

Your mentor will have more experience with the company. Listen carefully to their time there. They can point you in the right direction when it comes to work related issues or concerns. For example, you will want to know how to officially request time off. If the mentor doesn’t know, they should be offering to help.

Mentors are also great for connections. You may want to learn a new technology but your mentor may not be familiar with it. They might be able to recommend another developer.

Let’s not forget that they have experience working in teams. This is a necessary skill to grasp as soon as possible. There may be times when you work with someone with a personality that doesn’t mingle well with yours. Your mentor may have worked with that same person or someone similar. They can surely provide advice on how to interact with this person.

3. Confidence Boost

I can’t tell you enough how much it’s helped me be more confident as a developer when hearing my mentors voice their same concerns.

I’m still considered new in the world of developers with almost 3 years of work experience. There are times that I experience imposter syndrome. I couldn’t believe my ears when a senior developer said that he still gets that same feeling. This was coming from a man who is highly respected in our community and has led multiple projects over his entire career. If someone like him feels the same, I honestly shouldn’t worry about it. It’s simply a feeling that everyone experiences. This syndrome doesn’t make me or you any less of a developer.

It also helps to hear a mentor say that you’re doing great. It not only makes you feel better hearing it from someone you respect in the field, but it also gives you an insight that you are making good decisions.

I was told that my compassion for newer developers is an excellent attribute to have. This was so important for me to hear from a mentor because one of my goals is to become a good mentor.

Appraisals are great confidence boosters in any career role. It’s like getting a gold star in elementary school.

Moving On

Unfortunately, there are some people that are not meant to be mentors. If you happen to find yourself as a mentee in this situation, you need to move on.

Find someone who you can safely share your concerns with. This may be the human resources department. They will probably give you suggestions on how to improve the situation before completely removing the mentor. Be open to their suggestions, especially if there is a chance of salvaging.

However, there are times that you may have to push back. Don’t let this discourage you, though! This mentor was just not suited for you or maybe they really weren’t ready to be a mentor. This also applies for mentees. Mentors have the right to end the mentorship due to mentee participation.

A mentoring relationship succeeds when both parties have their hearts in it, just as any relationship.

Final Thoughts

Mentors are practically anchors at the end of the day. They’re amazing people that remind us that we can one day be in their shoes: formally or informally.

They are there for you! Don’t be afraid to talk to them. Send them a message! Make meetings! Take charge if needed! Mentors signed up to be available to you. It saddens me greatly to hear mentees get discouraged with their careers because their mentors refuse to do the program they signed up for.

I recently became an official mentor for the apprenticeship program at This Dot. I want my mentee to feel comfortable talking to me. I truly believe that a mentor should be available and provide feedback and encouragement.

Tweet me with your mentorship experiences! Are you in any? Planning to? Scared and need a push?

This Dot Labs is a development consultancy that is trusted by top industry companies, including Stripe, Xero, Wikimedia, Docusign, and Twilio. This Dot takes a hands-on approach by providing tailored development strategies to help you approach your most pressing challenges with clarity and confidence. Whether it's bridging the gap between business and technology or modernizing legacy systems, you’ll find a breadth of experience and knowledge you need. Check out how This Dot Labs can empower your tech journey.

You might also like

Introducing This Dot's PAMstack Services - Process Improvement Consulting for Technology Organizations cover image

Introducing This Dot's PAMstack Services - Process Improvement Consulting for Technology Organizations

During these challenging and uncertain times, many companies are taking additional measures to review their operational processes, and determine how they can act most efficiently, while maintaining concern and focus for their employees. Development team leadership is looking for a way to ensure that their employees remain engaged and productive, while developers demand more clarity and understanding to help them perform despite the anxieties currently impacting every global industry. Now is the time for leadership to develop clear plans of action not only for the remainder of the COVID-19 pandemic, but looking forward as well- to when developers come back to their workplaces, and a sense of relative normalcy returns. To help support teams, eager to audit their operations, and implement more clear and stable processes for leading their teams, This Dot Labs is now proud to offer a new resource through the PAMstack. WHAT IS THE PAMSTACK?__ In short, the PAMstack (Process, Abstraction, & Mentorship) is a modern framework for creating sustainable development teams. It is not a list of rigid and inflexible rules, nor does it rely on mountains of documentation. Instead, the PAMstack empowers developer teams to streamline their processes, promote workplace inclusion, and better outfit their projects to promote collaboration. Teams do this by auditing their processes to incrementally simplify complicated workflows that rely on personal excellence above teamwork, migrate their technologies to leverage highly documented modern web tools, and create intentional mentorship programs to invest in team longevity. By implementing this customizable program, teams will expect to reduce project and hiring budgets, increase productivity, mitigate workplace stressors, and better diversify their workplaces both demographically, and technologically. WHAT DOES THIS DOT LABS INCLUDE IN ITS PAMSTACK SERVICES?__ Leaders who are interested in exploring how the PAMstack will transform their developer teams are encouraged to contact to schedule their free 1-hour process audit with one of our expert PAMstack architects. In this session, we will explore how your team can take advantage of the PAMstack, including sample process plans, checklists, and documentation; 1:1 mentorship, team workshops, leadership development, staff augmentation, architectural reviews, and the support of This Dot’s large network of industry leaders. If you are not a team leader, but are interested in learning more about how to implement PAMstack principles in your own processes, we have made many of our resources, and documentation available free on our For Developers page. There, you can access free workflow checklists, review example process documentation, explore leading technologies, and check out tips for introducing mentorship programs to your workplace. To learn more about the PAMstack from one of its lead architects, Rob Ocel, you can listen to this talk, or check out our new website:! And if you’re ready to begin your journey with the PAMstack, schedule a complimentary process audit today by contacting us at!...

My Career Roadmap cover image

My Career Roadmap

Every developer has their own unique roadmap. I love hearing these stories as they’re constant reminders that there is no right way. Anyone can become a successful developer as long as they have the passion for it. I’ll be sharing my roadmap in hopes that someone also realizes that there are multiple ways to be part of the programming world. My journey started when I attended a junior college in an effort to complete the prerequisites for a Biochemistry degree. I actually got far enough to start taking Organic Chemistry courses. However, my heart wasn’t in it. I found it boring and dreaded anything related to those science classes. I did find it cool that I could recognize some of the fancy ingredients in a shampoo. It just wasn’t what I connected with. I knew that something had to change. I was on track to transfer to a four year university in less than two years. I was always interested in computers and thought about programming. I still don’t know why I was drawn to that: maybe social media made it look cool? The dilemma was to either continue or take a risk by starting a whole new career. I didn’t want to spend more time at junior college, so I needed to make a hard decision: either continue with Biochemistry or drop it completely to pursue programming, but still transfer within the estimated year. I probably would have chosen to experiment with both at the same time if I had realized this a couple of years prior. However, I ended up changing majors within a week. It was one of the best decisions I have ever made. My first programming class felt a bit scary. The building was run down and cold. The room was cramped. There were only two females (including myself). The course wasn’t hard or discriminating against genders but it probably felt that way due to being completely new to the field and not knowing anyone. It didn’t discourage me from programming. In fact, I still remember typing up my first Hello World program. It was the feeling of writing code that made me realize that I was on the right track. Luckily, the junior college had opened up the new STEM building a year later. This really made the place more welcoming. It was actually pretty cool. There were outlets everywhere! A dream for programmers that we take for granted. One of the courses that I took was Internet Programming. This was a turning point for me. My professor recommended that I participate in the local hackathon that was coming up soon. He suggested forming a team with the two other females in class. I never once thought he was discriminating. I honestly believe that he saw potential in all of us but we were lacking confidence in a male-dominated world. We participated in the hackathon as a female group. It was my first time working with a team and presenting our project to the public. We didn’t win any awards, but it provided some of the confidence that I was lacking. I finally understood that it didn’t matter what gender you are. I found a love of programming and wanted to be one of the best. I ended up getting recruited for a local internship through the hackathon. I was able to learn about realistic expectations when building a project for a client. The lead developer was also very open to teaching a complete newbie. This is where I learned the basics for web development. It was this type of support that helped shape my career. I graduated from junior college with an associates degree in Chemistry and transferred the next semester. The one regret that I do have in my career is the university that I chose. It didn’t have the best resources for the Computer Science students. The classes were boring and most of the professors didn't seem to care. If you weren’t on the game research cohort, you were just another student passing through. During this time, I got a chance to be part of a research team. However, I decided to accept an internship instead. It was another difficult decision as both had great opportunities. I still think that the internship was the best route as it helped me later on. The internship only lasted for the summer. I learned Polymer during this time. The project was my first deployment and it was used by the city. It was also another great confidence booster. I returned to school with the goal to find my first job before graduation. Truthfully, it was very discouraging, even with my internship experiences. Most companies wanted developers with years in programming. They really don’t make it easy for junior developers. I’m almost positive that I placed over 100 applications. When I did get a response, it was a decline. I also attended the career fair that the university organized. That’s where I found the company that gave me a job offer. I started working for them after graduation. This led to web development in the Drupal world for a little over 2 years. It was a small company but provided development growth. I learned the importance of quality assurance and time management. I also acquired the skill to advocate for higher priority tickets. The most important lesson was that a project can only thrive with a unified team and proper documentation. However, the company had a tremendous downsize due to the pandemic. I was once again on the job hunt. Fortunately, the connections I made during the summer internship helped me find a job at This Dot. There was still an interview process, which I passed due to all the career choices that were made. I’m very excited to be here. I’m working with LitElement projects and more structured work environments. It really is a big difference from a very small company. I’m now pursuing the path of being a mentor, a dream that I had since my first internship. I’m working on improving a mentorship program and making sure my mentee has all the support she needs. I barely have a bit over 3 years of work experience. The time went by very quickly and I’m still excited to be programming. I can’t wait to see where my roadmap will be in the next upcoming years. Tweet me your favorite moment in your roadmap!...

Computer Science Degrees are Optional  cover image

Computer Science Degrees are Optional

Degrees aren’t always needed. In today’s job market, there is most likely an alternative option for a degree: self-taught, bootcamps, etc. However, there are still companies that require a college degree. One of my colleagues at work expresses that “unless you really want to work as a research engineer for one of the very large tech companies like Google, etc I don’t see the value in an advanced degree in CS.*” This statement should not discourage you from pursuing this career path, especially if you want to become a research engineer. There has been a recent conversation at work that provided a number of those with a college degree versus those who do not. The College Path I am categorized with those who have a Computer Science B.S. degree. It was the safe option for me. I would have the degree just in case (being the first in my family to obtain one was also a motivator) and I gained some coding experience through courses. I still don’t regret taking this path. It’s given me the opportunity to get a glimpse into both sides. However, college only teaches you so much, especially where you attend. My college was still very new compared to its affiliates, so the Computer Science department was still developing. I was taught the basics (how to do a for loop, etc). The classes were boring and I never felt that the important parts of coding were taught. The closest I got was through the Software Engineer course that was taught by a Facebook developer. He showed us how things really went in the “real world.” We were assigned a semester project that would be presented at the Facebook headquarters in Menlo Park. This class taught me the importance of teamwork: team interaction, code management, and leadership roles. I came out of college with a good programming foundation. It also provided me with internship experience. The college I attended advertised a local hackathon. I wouldn’t have known of this event occurring in such a small city if I had not taken the college route. I was introduced to the founder of a local website creation company. Due to my professor’s recommendation, I became one of the interns at this location. It was the first time that I was able to get a glimpse of how business was conducted with a client. Unfortunately, this wasn’t taught in any of the courses I took. College gave me the extra time to figure out what type of programmer I wanted to be. I’ve coded in multiple languages like Java, Python, and React. I even dabbled a bit with game development. I was able to find the most joy from working with web development. College can also provide one of a kind experiences. Some partner with local businesses to give students an opportunity to get work experience. I was fortunate to be enrolled in a university that had this opportunity available. In partnering with a local business as a student, we were presented with a problem and it was our job to create a proof to concept and demonstrate it to our client. We had the entire semester to complete the solution. During this time, we had multiple deadlines (just like any real project) that we stressed over. There were times that we did have to work late into the night because a bug was found before our next release. We were thrown into multiple situations that I have seen occur during my work experience. These are the moments at college that helped me navigate through stressful moments at work. Bootcamp may not provide the same opportunities. Another of my colleagues who went to college was able to participate in a similar program. He worked with the company for two years, forming connections with his co-workers. It was one of these connections that led him to accept a job offer with another company. If it had not been for this company being persuaded to attend AngularConnect, he might not have been introduced to our current CEO. He does voice that college is not needed to be a good developer. However, he does add that “If I hadn't gone to uni, who knows what kind of path I'd have taken, but 100% the connections I gained as a result of uni has helped me get to where I am now.*” Alternative Paths All roads lead to the same destination. It just depends on where you want to learn your base. Another of my colleagues stated: “It's like building a foundation before building the house.*” I agree: people want to hire someone that understands the importance of the foundation regardless of the background in order to build a strong house. One of my professors said something that still stays with me: "School only teaches you about 10% but your job will teach you the rest." I completely stand by this. I was able to understand the basics like Git by the time I entered the work field. However, the business side like time frames was something that I picked up from trial and error at work. This experience has been iterated at work as well: “Almost all of my learning of development was on the job, although I've reached back to my coursework as I got further in my career to help me make sense of more of the tougher algorithmic challenges on some projects I worked on in the past.” - Colleague I’ve only been in this field for about 4 years. I’ve met strong programmers on both sides. I’ve seen a teacher’s aide that can write structured scripts for a complex game. I’ve also seen a developer (without attending college) who has delivered many successful projects at such a young age. It’s their commitment to become a better programmer that has them thrive in any environment. It just boils down to which environment you want to experience. “I don’t really regret anything about going to university except that I wasn’t the best student in my late teens and twenties so I wish I’d had the option of fast tracking the practical knowledge and jumping right into my career. I wish coding bootcamps had been available to me instead of college honestly.” - Colleague My college background never was asked when I was being interviewed by the companies that ended up employing me. It all came down to my coding skills and the connections (along with my personality). It really depends on the company who is hiring. That’s why it’s important to do your research before investing your time in the application process. College is not for everyone. Don’t let the pressure stop you from doing what you want to do with your career. Success as a programmer can be accomplished regardless of a degree. There are pros and cons with any path. Code bootcamps can provide the same benefits as college. Some bootcamps might be even more intense than college, which can lead to great learning opportunities. I’ve met an amazing developer who came from a bootcamp. Her skills have landed her a position with a company as a developer within months of her graduation. There hasn’t been a task that she wasn’t able to handle. Bootcamps are just as beneficial. Remember, it’s not where you learn the foundation that matters, it’s whether you understand it. Keep learning, coding, and seeking out connections. Tweet me your coding start. I would love to share your story with other people who need that extra motivation to get one step closer to their goal....

Testing a Fastify app with the NodeJS test runner cover image

Testing a Fastify app with the NodeJS test runner

Introduction Node.js has shipped a built-in test runner for a couple of major versions. Since its release I haven’t heard much about it so I decided to try it out on a simple Fastify API server application that I was working on. It turns out, it’s pretty good! It’s also really nice to start testing a node application without dealing with the hassle of installing some additional dependencies and managing more configurations. Since it’s got my stamp of approval, why not write a post about it? In this post, we will hit the highlights of the testing API and write some basic but real-life tests for an API server. This server will be built with Fastify, a plugin-centric API framework. They have some good documentation on testing that should make this pretty easy. We’ll also add a SQL driver for the plugin we will test. Setup Let's set up our simple API server by creating a new project, adding our dependencies, and creating some files. Ensure you’re running node v20 or greater (Test runner is a stable API as of the 20 major releases) Overview `index.js` - node entry that initializes our Fastify app and listens for incoming http requests on port 3001 `app.js` - this file exports a function that creates and returns our Fastify application instance `sql-plugin.js` - a Fastify plugin that sets up and connects to a SQL driver and makes it available on our app instance Application Code A simple first test For our first test we will just test our servers index route. If you recall from the app.js` code above, our index route returns a 501 response for “not implemented”. In this test, we're using the createApp` function to create a new instance of our Fastify app, and then using the `inject` method from the Fastify API to make a request to the `/` route. We import our test utilities directly from the node. Notice we can pass async functions to our test to use async/await. Node’s assert API has been around for a long time, this is what we are using to make our test assertions. To run this test, we can use the following command: By default the Node.js test runner uses the TAP reporter. You can configure it using other reporters or even create your own custom reporters for it to use. Testing our SQL plugin Next, let's take a look at how to test our Fastify Postgres plugin. This one is a bit more involved and gives us an opportunity to use more of the test runner features. In this example, we are using a feature called Subtests. This simply means when nested tests inside of a top-level test. In our top-level test call, we get a test parameter t` that we call methods on in our nested test structure. In this example, we use `t.beforeEach` to create a new Fastify app instance for each test, and call the `test` method to register our nested tests. Along with `beforeEach` the other methods you might expect are also available: `afterEach`, `before`, `after`. Since we don’t want to connect to our Postgres database in our tests, we are using the available Mocking API to mock out the client. This was the API that I was most excited to see included in the Node Test Runner. After the basics, you almost always need to mock some functions, methods, or libraries in your tests. After trying this feature, it works easily and as expected, I was confident that I could get pretty far testing with the new Node.js core API’s. Since my plugin only uses the end method of the Postgres driver, it’s the only method I provide a mock function for. Our second test confirms that it gets called when our Fastify server is shutting down. Additional features A lot of other features that are common in other popular testing frameworks are also available. Test styles and methods Along with our basic test` based tests we used for our Fastify plugins - `test` also includes `skip`, `todo`, and `only` methods. They are for what you would expect based on the names, skipping or only running certain tests, and work-in-progress tests. If you prefer, you also have the option of using the describe` → `it` test syntax. They both come with the same methods as `test` and I think it really comes down to a matter of personal preference. Test coverage This might be the deal breaker for some since this feature is still experimental. As popular as test coverage reporting is, I expect this API to be finalized and become stable in an upcoming version. Since this isn’t something that’s being shipped for the end user though, I say go for it. What’s the worst that could happen really? Other CLI flags —watch` - —test-name-pattern` - TypeScript support You can use a loader like you would for a regular node application to execute TypeScript files. Some popular examples are tsx` and `ts-node`. In practice, I found that this currently doesn’t work well since the test runner only looks for JS file types. After digging in I found that they added support to locate your test files via a glob string but it won’t be available until the next major version release. Conclusion The built-in test runner is a lot more comprehensive than I expected it to be. I was able to easily write some real-world tests for my application. If you don’t mind some of the features like coverage reporting being experimental, you can get pretty far without installing any additional dependencies. The biggest deal breaker on many projects at this point, in my opinion, is the lack of straightforward TypeScript support. This is the test command that I ended up with in my application: I’ll be honest, I stole this from a GitHub issue thread and I don’t know exactly how it works (but it does). If TypeScript is a requirement, maybe stick with Jest or Vitest for now 🙂...