Recently I had the privilege of speaking at panel hosted by Bottom Line here in NYC. Their programs help 1st generation college students from low-income families graduate from college. These were students who historically have had a hard time both at college and in the job market afterwards. The don’t have the financial or social support structure that allows them to rebound from setbacks, or to get an introduction into their first interview. They don’t have role models in their families to show them what it means to succeed in higher education or white collar professions. They have a lot of questions, a lot of self doubt, and not much to fall back on.
But the Bottom Line programs work. Students who participate have a 43 percentage point higher graduation rate than students with similar backgrounds. Bottom Line provides not only the panel I spoke at for students to meet professionals and to clear away the cobwebs of doubt and answer questions, but also services to tackle academic, financial, career, and personal challenges that a student will face. The work they do is amazing, and I very happy to attend.
There were a lot of questions and limited time at the panel, so I wrote this blog post to help those students and aspiring technologists to help answer the questions I didn’t get to, or who were unable to attend the panel. I can’t claim it will improve your graduation rate, but I can guarantee that the students in the Bottom Line program were very interested in the answers I had to give.
The panel I spoke at gave two different types of information: my personal story about navigating school and career paths, and advice on what students today should be doing to navigate those same paths in my field.
My Story
When I was in elementary school, I wanted to be a jet fighter pilot. I played a lot of flight simulator games on our family’s Windows 3.1 computer, loaded off of five and a half inch floppy disks. In the process, I got better at fixing the computer than my father. Soon enough, the chore of computer maintenance fell squarely on my shoulders.
By middle school it was clear, I was probably going to work with computers in my career.
In high school, after switching schools, I managed to take programming classes my junior year. My previous school didn’t offer programming courses to the college bound track (note to school administrators: limiting coding classes to the technical track is a terrible idea).
I immediately declared Computer Science as my major after entering college. While I’m very impressed by the work students in Computer Engineering courses were doing, the split focus on hardware and software didn’t seem to fit what I wanted. The more abstract nature of programming always drew me much more strongly than the circuits code ran on.
College wasn’t completely smooth sailing. I nearly slept thru two exams in two different classes taught by the same professor. I managed to fail Calculus II three times. I found out however that I could convert all of those D’s into elective credits and to retake the course at different school, with a different teaching approach, over the summer and transfer the credit. My GPA tanked, but I graduated in four years.
After leaving college I immediately moved to a new area where I knew next to no one and the local market for software engineers had just bottomed out. A major employer in the area had done a large layoff and no one was hiring anyone without 2 years of experience. I worked a couple of jobs over a couple of months, where I learned I’m a terrible jewelry salesman and a good shipping clerk, before I found a job thru a friend’s mom doing IT for the local public library.
It wasn’t until three years later and the local job market had recovered that I found my first job as a software developer. That interview I didn’t have to depend on my personal network for. Instead I found it by going thru a recruiter who sponsored the Memphis Java User Group that I participated in and later helped run.
I really enjoy my career today. I’ve always enjoyed building things, finding the solutions to puzzles, and removing tedium via automation. Software development also has given me solid financial ground to stand on while working hours very close to a traditional nine to five, but with more flexibility than many jobs with similar hours can provide. When I broke my leg this past summer I was able to work from home for months, keeping my full paychecks coming in to pay off hospital bills.
There are challenges in software development, but very few technical challenges come close to understanding and communicating with others. I’ve tried to combat the stereotype attached to many technologists as poor communicators by taking many opportunities to write and speak publicly about subjects in my field. I have also taken any available role in working thru software needs directly with the managers, employees, and customers in every organization I’ve belonged to, because I believe engaged and empathetic developers make better products for everyone.
My Advice
Make friends at college while you are there. I have college friends that will be close to the rest of my life, even though we’ve lived far apart. I’ve depended on them both as a spring board for technical learning and professional networking. But the benefits outside of my career have been much greater still.
Take advantage of the programs that at your college. I regret not applying to my RA program or making use of the math tutors. You’ve paid for them, don’t let your money go to waste.
Computer science is a great major for software developers, but it isn’t the only academic path towards our field. I personally know several music theory majors, physicists, and graduates of technical certificate programs who have very rewarding careers in software engineering.
Computer science doesn’t have to lead to traditional software development jobs. Often having a bit of coding knowledge can be very useful in almost any field, particularly if you work in a field with a lot of data that others are working thru by hand. The whole field of data science was created to answer academic, business, and policy questions with large data sets and is an exciting alternative to more general software development jobs. And as a growing field there always more positions for educators as well for the subject.
You’ve got to be able to show a perspective employer that you have skills that can translate outside of the classroom. For some employers and positions the theoretical and technical vocabulary gained while obtaining a computer science degree (or reading enough books on the subject) is part of that, for others not so much. So…
Show initiative in creating projects and learning new technologies on your own time. If you can, find other students who are doing these things already after class. Make friends and stay active in the clubs and organizations that support your creative endeavors. Share your projects publicly, preferably online where you can show them off in a portfolio.
Start your job search now. Yes now. Look for internships or part time jobs in the field that are at or just outside of your current skill level. Be prepared, thoughtful, and humble during your interviews. Explaining both what you do know, and being upfront with what you don’t know will serve you well. Ask interviewers what you need to know, and go learn how to do that outside of class. Visit stackoverflow.com, github.com, and the various programming subreddits on reddit.com.
There are many professional software developer groups in most U.S. metropolitan areas that meet regularly and have no cost to attend. You won’t learn the things that separate academia from industry that employers are looking for in class. Go to the professional events. Use meetup.com, LinkedIn, Facebook, or other social networking sites to find them. If you can’t find any to go to in person, join an online group that meets virtually. These groups not only help you discover the tools and techniques that are used to make commercial software products, but they also help you network with established professionals who you might later rely on for an introduction or to land an interview.
You’ll probably have a choice of employers, if not immediately then eventually. Every company is different, and at many companies individual teams are very different. Many still operate as traditional office jobs, but more and more are partially remote, letting you work from home, or the beach. Some are completely remote, the only office is your laptop and your cell phone. Most developer jobs don’t require any travel, but some do require you to travel to customers or suppliers across the country or the globe. Most development jobs do have more flexible hours, looser dress codes, and more perks than other office jobs. But development jobs often come with a bit of time “on call” where an urgent emergency will get you online to fix a issue as soon as possible.
Thanks for reading. If you’d like to ask me additional questions, or share your own story or advice, please so directly in the comments, or share a link to your own blog on the topic.