I never studied in college. I didn't buy books most of the time and I was happy with a C or D if that's what my class required. However, I was really passionate about computers and spent every minute of my life on one. I fixed computers for family and friends because I loved doing that. I was constantly broke so I looked for work in tech since I was 15. One of the first things I did was help students in nearby colleges with their exams and projects. Sometimes I got multiple students from the same class and I had to implement the same project in 3-4 unique ways so that neither of them got caught. This gave me a different outlook on programming. I was forced to think about solving the same problem in 3-4 different ways. At the same time, I took up a job in the community college I attended to teach computers to the professors.
The next best thing I did were a couple of internships. I went overboard and I worked two jobs, a co-op outside the college as a Web Application Developer and an internship at a lab in college as a Software Engineer (which didn't last too long because of time constraints).
This gave me an edge compared to my peers.
I graduated with the lowest GPA, so I had a hard time getting interviews at large companies mainly because they were so fixated on that metric. It is a very skewed metric and does not reflect a person's abilities to be successful at programming. All my friends with 3.8+ GPA had interviewed at large companies including Microsoft and none of them got in (One of them did about 4 years later)! Eventually, five years later, I got an interview at Microsoft. It was out of the blue when I wasn't even looking. The rest is history!
I also spent a lot of time before and during college working on ad-hoc stuff. I installed Windows 3.1/95/98 over a couple of hundred times for everyone I knew. I dabble with Linux. I ran a BBS. I taught myself game-programming in C++. Later, a little bit of Java when it was released. I helped people with their projects in Basic, Pascal, C, C++, Visual Basic, Java, Classic ASP, Foxpro, DBase, SQL, and Access. I started teaching myself HTML and Javascript and took up a short-consulting gig building a website for a close friend's cousin.
Although it appeared like I was all over the place, everything I did, enhanced my resume and helped hone my skills around problem-solving. This is the basis for being successful in the long-run. You have to keep learning all the time and get to a point where you can do just-in-time learning. Once you know a programming language like C++ very well, you can pretty much learn anything. Other than that you want to focus on Data-Structures, Algorithms, and Design Patterns.
The best advice I can give is to worry about yourself and forget about what everyone else is doing. Forget about the frameworks of the day and libraries of the year. Come up with a plan and stick to it. Learn programming like it's the 90's and focus on the basics and practice on real-world projects.
Java Web Developer with a passion for Spring and cloud computing. Know a thing or two about AWS. Trying to learn NodeJS lately with the help of TypeScript.
I ended up doing a whole post about the advice you gave, it is very enlighten and made me remember many things that happened lately and some questions I had. Check it out if you have the time. :D
One thing that I didn't say there and I plan to talk about later is about the multitude of frameworks and the difficulty of choosing a path. This advice was big, I really need to focus and I'm trying to.
I never studied in college. I didn't buy books most of the time and I was happy with a C or D if that's what my class required. However, I was really passionate about computers and spent every minute of my life on one. I fixed computers for family and friends because I loved doing that. I was constantly broke so I looked for work in tech since I was 15. One of the first things I did was help students in nearby colleges with their exams and projects. Sometimes I got multiple students from the same class and I had to implement the same project in 3-4 unique ways so that neither of them got caught. This gave me a different outlook on programming. I was forced to think about solving the same problem in 3-4 different ways. At the same time, I took up a job in the community college I attended to teach computers to the professors.
The next best thing I did were a couple of internships. I went overboard and I worked two jobs, a co-op outside the college as a Web Application Developer and an internship at a lab in college as a Software Engineer (which didn't last too long because of time constraints).
This gave me an edge compared to my peers.
I graduated with the lowest GPA, so I had a hard time getting interviews at large companies mainly because they were so fixated on that metric. It is a very skewed metric and does not reflect a person's abilities to be successful at programming. All my friends with 3.8+ GPA had interviewed at large companies including Microsoft and none of them got in (One of them did about 4 years later)! Eventually, five years later, I got an interview at Microsoft. It was out of the blue when I wasn't even looking. The rest is history!
I also spent a lot of time before and during college working on ad-hoc stuff. I installed Windows 3.1/95/98 over a couple of hundred times for everyone I knew. I dabble with Linux. I ran a BBS. I taught myself game-programming in C++. Later, a little bit of Java when it was released. I helped people with their projects in Basic, Pascal, C, C++, Visual Basic, Java, Classic ASP, Foxpro, DBase, SQL, and Access. I started teaching myself HTML and Javascript and took up a short-consulting gig building a website for a close friend's cousin.
Although it appeared like I was all over the place, everything I did, enhanced my resume and helped hone my skills around problem-solving. This is the basis for being successful in the long-run. You have to keep learning all the time and get to a point where you can do just-in-time learning. Once you know a programming language like C++ very well, you can pretty much learn anything. Other than that you want to focus on Data-Structures, Algorithms, and Design Patterns.
The best advice I can give is to worry about yourself and forget about what everyone else is doing. Forget about the frameworks of the day and libraries of the year. Come up with a plan and stick to it. Learn programming like it's the 90's and focus on the basics and practice on real-world projects.
I ended up doing a whole post about the advice you gave, it is very enlighten and made me remember many things that happened lately and some questions I had. Check it out if you have the time. :D
One thing that I didn't say there and I plan to talk about later is about the multitude of frameworks and the difficulty of choosing a path. This advice was big, I really need to focus and I'm trying to.
Thanks, Leonardo, for writing that post. I enjoyed reading it.