What can you do early in your career to strengthen your leadership abilities? I was recently asked this very question by a CS student from my alma mater. Challenge accepted!
In this first post, I will start with things you can do while in school, with a second post diving into what you can do early in your professional career. Let’s grow!
TLDR/Table of contents:
- What is leadership?
- What you can do while in school:
- Additional Resources
I am a board member of Tufts University’s Computer Science External Advisory Board. Last fall, during our inaugural meeting, we broke between sessions to have lunch with some of the students in the CS department. The lunch was great because I got a chance to meet and speak with students. It had been years since I had been on campus. The department had grown (in both department size and the number of students), there were new extracurricular activities (like JumboCode), and an excited student body with passionate teachers.
I smiled. It was good to be back.
I ate my sandwich (and destroyed two cookies), while speaking with three students who made me happy to be both an alumnus and board member. In between bites, one of the students asked me about my career, working, and being in a leadership position. What is it like? What does it take to be a leader?
Me? It brought me back.
Me? The student who got a D- in Intro to Computer Science.
Me? The kid who pinky-promised with the Dean of Engineering to go to class every day.
Me? The student who got a B- in Algorithms (by far the hardest core class I took and my proudest grade).
Me? The student who turned it around and made Dean’s List in his Junior and Senior year.
Who was the TA for OOP in Java after struggling with Data Structures.
Who became the head TA for Intro to Computer Science. The same course he almost failed.
Who, on his first job was told that he would not be a fit for the position. Yet, was promoted in three months.
Who is now the VP of Technology & Engineering at TrueChoice Solutions. From almost failing out, to succeeding, to excelling, teaching, and now continuing to mentor and coach engineers from entry level to architect.
Yeah…maybe I did have a few perspectives I could share?
All this jetted through my head in the time it took me to finish that first cookie! Time for a second…
I shared some thoughts with the students on leadership, things that you can do while in school to prepare yourself for your career, and interspersed pieces of my journey. I realized I had some things I could share, more than what I was able to cover during our lunch. Inspired, I jotted some notes and determined I would share a few tips that would be helpful to people pursuing their degrees that can (begin to) prepare them for their professional journey.
My thoughts, coming right up? But first…a word on our definitions. What is Leadership…
What is Leadership?
There are as many definitions of leadership as there are links on the internet*.
*Maybe I exaggerate, but only slightly
I personally gravitate towards this definition of Leadership from Forbes Magazine:
Leadership is a process of social influence, which maximizes the efforts of others, towards the achievement of a goal.
The students asked me “What do I do to get on the leadership path?”. The interpretation at that time, the underlying context, was how do I become a VP, a manager, a director, a CTO? Before we proceed, it is important to stress that being a manager is not the only way to be a leader. Leadership is not about the amount of people you manage, but the impact you have on your team, project, initiative, and organization.
I have worked with engineers who did not manage any direct reports but had tremendous impact and showed leadership through problem solving, setting and sharing of standards, mentorship, and high quality development, architecture, and system design. With the team, leaders help to set, shape, and achieve the vision.
Leadership vs management
Leadership is not about the amount of people you manage, but the impact you have on your team, project, initiative, and organization.
This is a big topic and a deep dive is beyond the scope of this post.
Whatever you do, just don’t be this guy:
Ok, deuces for definitions, let’s dive in.
Study the craft
Most importantly, learn how to learn
Fundamental to your career as a computer scientist…is…well…computer science!
Ajahne, seriously? This is your sagely wisdom?
Whoa, a little aggressive? Hear me out. The craft is the core. Everything is built upon this foundation.
So I have to get all A’s? Get a 4.0 GPA?
No, remember, I got a D-. But, you have to learn, you have to get good. You have to know the fundamentals. The core of what you learn in school (algorithms, data structures, programming principles, etc.) will buttress your career for the long term. Full stop.
To that end, get good at this! However, most importantly, learn how to learn!
Learning is forever. In our industry, we are constantly learning. Not to be overly dramatic, but learn or die (ok…that was a bit overly dramatic).
Once you leave school, the learning has essentially just begun. On the job you will learn about stand-ups, SCRUM, assessments, Kanban, DevOps, TDD, CI/CD, server environments (Dev->Staging->Prod), new programming languages, emerging technologies, and…the list will continue. What has helped me most in my career is not only learning how to learn, but loving learning, loving the journey.
Be a TA or Tutor
Being a TA was the single best thing I did for my career as a undergrad.
One area that helped me early in my career (and continues to do so), was becoming a teaching assistant (TA). Being a TA helped me to further learn the craft, understand how to teach, and most importantly grow my ability to empathize.
During my office hours, I once had a student who was so frustrated by a problem, that she began to tear up. She felt that she could never figure it out. I remember working with her, helping her (but not showing her how) to get to the solution. Her excited smile on solving the nested
for loop, still lives with me.
When I began working and had to show engineers who had only just started three months after me how to work on our code base, I went back to this moment. This experience laid the groundwork, which helped me from working with my first intern, to being a tech lead, to today.
Being a TA built my confidence, made me learn the subject matter better (because I had to teach it), and most importantly helped me learn how to work with (and teach) others. Being a TA was the single best thing I did for my career as a undergrad.
Work in groups
In school, I did most of my programming alone. In my dorm room, in the computer lab. However, in one of my first jobs at a marketing agency, I was thrust into a team, where the most important thing was not my ability to program (which, was key), but my ability to communicate and work with others. On almost all job specs, you will see some version of “must have strong written and verbal communication skills”.
Yet. We. Do. All. Our. Work. ALONE.
Programming alone in a computer lab is not analogous to working in a professional environment.
So what can you do?
- take a class (or classes) where there is an opportunity to work in groups
- participate in extracurricular activities
- grab a friend or colleague and experiment with rubber ducking
- try out pair programming. Many teams practice one or both.
Take the initiative to push yourself. Boom, leadership exhibited!
Obtain an internship
One thing that you can do, which will help you early in your career is to obtain an internship.
Wait..for real, Ajahne? This is your advice? I knew this one…
I hear you. Let me add some additional color on why getting an internship is helpful:
- it will set you apart from your peers when looking for opportunities
- it will give you experience in the work environment, helping illustrate the difference between coding in the computer lab and coding in the office
- it will help to improve your communication and team work
Unable to obtain an internship? All good, there are other opportunities to grow and learn. I never had an internship as an undergrad, however I did work on campus for the Math department and revamped their website (the original version is probably still online somewhere…). Whatever it is, find a way to code outside of the classroom and find an opportunity to work with others!
Participate in extracurricular activities
While in college, I helped restart Tufts’ chapter of NSBE (National Society of Black Engineers). I worked to organize meetings, coordinate trips to conventions, and recruit members.
There are numerous societies and activities to be a part of from IEEE, NSBE, Girls who Code, etc.
Tufts has JumboCode and I am sure your school may have something analogous. If it doesn’t, find an opportunity to volunteer!
Looking to go further? Take on a leadership position (become the treasurer, co-chair, captain, etc.). Take on a coding challenge. Work with the local Boys and Girls club. Start a podcast with friends/classmates. Additionally, explore speaking engagements and opportunities to present your ideas (to classmates and others, TED talks, etc.). You know more than you think and we all have knowledge to share!
Do something outside of programming
In college, I was a part of Onyx, a poetry and visual arts magazine that published a collection of art from the student body each semester. As Co-Editor in Chief, I had to:
- create (with my co-editor) the magazine each semester
- follow up with the printer to ensure we got the magazine printed on time
- organize all pages and layouts
- review art submissions
- organize open mics (venues, performers, hosts, etc.)
- more things that I have probably forgotten
This helped teach me time management, how to work with others, meet deadlines, be responsible to others, and take ownership. These are all critical skills that I continue to grow and improve upon - looking back, taking on activities outside of programming helped nurture these burgeoning abilities.
It’s College! ‘Nuff Said.
Bonus: A quick personal note, getting an advanced degree
For me personally, getting my master’s degree has helped me tremendously in my career. It set me apart from other candidates, it provided me opportunities to become the head TA for Intro to Computer Science, and most importantly, gave me the confidence that I could actually be a computer scientist. All of this is a topic and post for another time. I mention this to say that we all learn and grow at our own pace. Do what you need to get the reps in required to be the awesome programmer (and person!) you are capable of becoming!
Everyone has the capability and potential to be a leader
This is not an all extensive list, but a set of tips that can help you grow your leadership capabilities early in your career. Leaders are not born, they are made. I believe everyone has the capability and potential to be a leader. Leadership is about seeing an objective that needs to be accomplished and working with others to ensure a collective goal is achieved.
Good luck and keep learning. Keep pushing yourself and growing. You got this!