Really, it is interesting to read this blog from starting to end. You shared your experience with deep thoughts and really it is appreciable. goo.gl/orULAk
College is never an easy time, with non-lenient due dates, and projects with ill prepared team members. Applying to jobs when you hardly have a good graduating GPA, and barely making it out of the state you live in with the last $100 you made selling your bed. This is the story of how I found my calling as a developer, and how I ended up in my dream job. Hopefully, through my experience and some light advice, you might find your path as well.
How I decided to become a developer
First things first, how did I discover I wanted to be a developer... I didn't wake up one day to slide into my computer chair and start writing websites. It took me 6 years to get my bachelor's degree, mostly because I wasn't sure where I was going, up until my 3rd year; which is when I started to take a couple of programming courses. Java, and C were my first. In all honesty, I had taken an Assembly course for microchip processors, which is not a high-level language. When I started taking Java it was too vast of a language for me to grasp at first and the API really seemed daunting.
C on the other hand, was simple enough for me to grasp, but I wasn't exposed to an API like I was with Java. I was actually mentored with this language by a friend who knew everything about C. If you happen to be as fresh as I was to programming it would do you some good to have a fellow student who knows the ropes, who can mentor you through a programming course. But his knowledge was very linear and he wasn't able to see multiple points of view as a programmer. This is where my artistic side came to my help.
Being an awarded artist all the way up until high school, programming to me was like art. A free canvas of my own ideas. Ideas that could have my desire and structure written down for everyone else to see. And let's face it, writing successful code is exhilarating. So with the help of my friend, who I thought of as my Steve Wozniak, and I the Steve Jobs of the team, I was able to point out new ways of doing things which he enjoyed, and I enjoyed learning what he had to teach. I only compared myself to Jobs in the last sentence, because to me, my heroes are people like Steve Jobs, and Elon Musk. And there is nothing wrong with aspiration, and you should think about who you aspire to be, at a young age. Don't think realistically, having ambition to try harder than your heroes is something that makes you a better you. Like the quote says,
"Shoot for the moon. Even if you miss, you'll land among the stars." - Norman Vincent Peale.
Ever since then, I have been relentless at learning new languages, not mastering them. I would either apply them to a few simple projects, or I would just go through courses online. And to me, this is more of what a developer is, in a sense. I wouldn't call myself a developer if I were to stick to learning, and using just one language. If I were to learn, then master, and then possibly contribute, then that is a different story. On a positive note, many of you out there are doing this, and it is an amazing thing to see all the open source work out there. The community of these developers really has made this career choice the best decision of my life.
Working as a Team
There is the Disney princess story that the world likes to talk about, when it comes to teams in the workplace and in school. But here's the reality — teams are work. You are going to have it all, which ironically can most accurately be compared to the seven dwarfs from Snow White. What people need to realize is that there is one leader, but the leader doesn't necessarily control the group. Being the leader in a team is like being a baby sitter at a kids' birthday party. If you really want the job, yes it is exhausting, but it is also highly rewarding. This is not the "best choice" by any means, every position in a team has its purpose. It is up to you as the team member to either fulfil that purpose or become the rotting leg of the coffee table.
I have been the leader, I have been the member, and I have been the rotting leg. It is of course your choice but you will not succeed as the rotting leg. The best advice I can give you, the reader, is ALWAYS do more than what is asked of you. If you have a team member who is just not working, pick up his work and do it yourself, especially in college. Who cares if he gets an A, even though he didn't do any work. Always remember, when you graduate, YOU did the work and, YOU are the one who will benefit from the experience. I didn't adhere to these rules during my first couple of years in college, and it ended up costing me dearly.
So far, I have very little information about teams in a real-world work place scenario, but as far as I can tell, people don't seem to change. I work alone but I am in a cycle of contact with a remote part-time employee. We get along great, as far as I can tell, and he is my new mentor teaching me the ropes. Again, I would suggest finding someone to mentor you. Luckily, my boss hired me with a sole intention of having a savant programmer mentor me. There is one big difference in the real-world, when compared to a college. It doesn't end. Working through college is just a means to an end. Working in the real world is akin to "working to keep working".
For me, this is not a negative. I love programming, and anything I can do to keep programming is worth doing to me. I do work in a startup and so many of the choices for the project are my own. I do a lot of my own work alone, before presenting it, and so far people love it. So, if any managers are reading this, let your developers have a few choices in the "what's next" discussions and may be let them do that refactor they have been wanting to do for months.
This brings me to the biggest college opportunity that most people seem to overlook in the science and math degrees — Networking. Not till my senior year, did I realize that all these people would be out in the workforce with me, for the rest of my life. So try your best to keep good relations with everyone you meet in college, you never know who they will turn out to be and where you might see them again. Since I have kept a good standing with my professors, it is my intention to be one of the capstone mock clients, for my old degree the following year. I think I can do some good to help aspiring students with projects they might encounter in the real world.
Your peers, and your professors will be the most beneficial attributes of your job applications. In college, I would talk to my professors constantly, making sure that I wasn't missing any crucial detail in any assignment, the point being — to be there, and let the professor realize that I cared enough. Your professors will know that you are trying if you just go to them for questions. I can't tell you how valuable your professors are in college. Aside from professors, your fellow students are the ones who create your environment, especially in your later years. If you can make an impact on them, help them learn, carry them in a project, or most importantly, be the most helpful team member, they will remember that kind of dedication. Because of this, I'm 100% sure my letters/phone calls for recommendation; from both my peers, and professors landed me the job that I have today.
Most of my attention during my last semester had to do with a project which I was working on with my capstone team. After I drew up a schematic of the device, my team began working on the construction, and arduino circuitry work; while I worked on a website to receive all the data. The project was a portable weather station that could withstand a tornado. At first the project was for fun but quickly became a career opportunity after our team landed an actual sponsor. Many friends told me that the device could be a great tool and we could market it. To this day, I still have all the business plans laid out. The capstone course actually landed me in the college patent office. Apparently many colleges have this, which was a big news to me, since there is no way I could afford a patent. My advice for you is to ask about it and read into it. They have some amazing opportunities. Since the project is over a year old and it was open source, I can't claim any rights on it anymore.
If you are in college and happen to have a great idea, write it down, come up with a business plan, try to make a prototype and head down to the patent office. You never know what you might find out.
After College Pre Work Extravaganza
This is the time that really molded me into who I am today, as a developer. After I graduated I had only a few bucks left in the bank. With no income, all I could do was sell my possessions. I am not the kind of person to take charity from anyone, but it does come at a price. For many months I lived off of $100 or less in food charges. Luckily my parents were gracious enough to offer me a place to stay until I found a job. With my car packed to the window, I made it out of Oklahoma with enough money for gas and a McDonald's double cheeseburger. Once I was in Houston though I knew it was time to get to work. There were no other courses holding me back from using every second to catch up on years of experience.
The summer of 2016 was a flash of existence in my own memory. I got a job as a waiter at a high end restaurant to pay for many online courses, and then I instantly quit. I couldn't stand waiting tables for another minute. If you really want to get a jump start into some insight on what you really want to do, then wait tables for 2 years and try to live off the income. I had enough of the degredation and insult of every day life as a waiter, but needed the quick cash. With the courses I purchased, and the many YouTube bookmarks I had saved, I began learning all there is to learn about web development. I spent tedious 13-15 hour days learning and testing new things for about 3 months. This was my exodus, my great journey, and I will never forget it. Amazing things can be accomplished when given the time. I learned patience, perseverance, and humility from my journey.
You should know by this point I had already been applying to jobs since October 2015, right? If not, this is a good time to understand the amount of rejection emails and calls I received. It was in upwards of triple digits. So don't get yourself down when it comes to the amount of applications it takes to land a job. It took me 10 months. There are several non sequiturs to interviews. I was not as well informed as I thought I had been. Some advice, if you are in college, take up the mock interview opportunities your college provides. If nothing else, have a couple of friends interview you and have them critic you. And after every interview, if you feel it is within normal bounds, ask them if there is anything you could improve upon. They will most likely see this as intuitive and that you are willing to work on yourself. Something I had to learn on top of all that was to deal with my ADD, nothing like switching subjects mid sentence and going off topic. Apparently this does not sit well with interviewers.
this in a function, and
this in an arrow function? Or what is the difference when using "===" as opposed to "=="? These seem simple enough once you know them. However, they seem to be a topic for questioning when it comes to interviews. Now there are questions out there specific to database and software engineers, for which I applied too, just to try. This involved more questions along the line of logic.
"If you had one choice to pick an item, out of 100 items, how would you make this decision"
At first I thought the answer would be 50, because half way right? Apparently my answer was correct. Then he asked what would be the best way to choose if you had unlimited choices but still wanted to save time. I got this wrong but worked with him to find the answer. The point is the question was above my head, but the interviewer didn't want the answer, he was looking for my thought process. So, just because you can't answer out right, point out how you are willing to try and figure it out with the interviewer. Ask more questions or pick at their brain for some insight for the logical routes. I ended up getting a follow up interview for my efforts but ultimately they chose a candidate with the higher GPA.
Which brings me to the point of college GPA. I graduated with a 2.3 GPA. I failed Advanced Java 2 times and never scored above a C in any programming course. I firmly believe the current college system for teaching programming courses is flawed. But the point of this is to let you know that just because you lack the scores doesn't mean you should feel inadequate.
My First Job
After months of applications I finally landed a position at a small startup. I had been through dozens of interviews and had honed my craft. For the interview I was pleasantly surprised that my recruiter and my recruiter's boss showed up to the interview with me. This quickly put more people on my side of the table. There is a benefit to having your first job with a staffing agency. The one I was with, had me on a contract to hire, where the employer or myself could dip out at any time without the other party knowing. That seemed to be the only draw back apart from the lower wage. But they did help me land a job within a month of being in contact with them.
Of course this is a huge risk since you can be fired on a moment's notice. Therefore I would only advise it if you really see yourself as a hard worker, and a risk taker. I was largely betting on my capabilities to fulfill any, and all of the clients' tasks. Happily, though after 5 months of hard work, the employer agreed to pay off the rest of the contract and take me on as a full time employee at the company. This is a relatively short section because I wanted you to know that the outcome of all my hard work, however short and sweet, it was the outcome I was shooting for, all along.
What I want to portray with this story is that you are going to have many obstacles, and my path is only but one of the many that people choose. I meet a lot of people who sell themselves short, or better yet I know they can do so much more but are held back by their own self image. I would hope that after reading this you might go out and be the one in the lab room helping others, talking to your professors on a weekly basis at the very least, and last but not least always looking for new opportunities. College education is more than a bunch of books in a library. It's the environment you have been placed into in order to succeed, and you only have to open your eyes to see it.
About the Author
If any of you are curious, here is a little snippet about who I am personally. I am a late 20s, full stack developer. I work for a small start up in downtown OKC. I live in a small studio apartment with my cat, Starlord. I am also working on an npm package for Nedb, and of course I am still shelling out for courses to further my education. I love to teach people who know nothing about programming about how it all works. Eventually I hope to be a professor, or even the head of the computer science department at a college. If nothing else, I will start my own online programming school.