Ask HN: What a 2nd tier college student must do to be at par with the best?
69 comments
You are doing great! Don't let institution name bother you, it does not matter much, it helps in getting interviews etc, but if you work smartly you will get that anyway. Few things I would focus on:
1. Build a strong CS and Math background, especially since you are interested in AI, ML. Academia is the best place to do this. Look at the curriculum of top engineering schools like mit, cmu for your sophomore year and see how you can complement it with the courses you are taking. This will pay you dividends in future. You are already doing that, which is great! Try to add more structure to your execution.
2. Take advanced courses on the topics you are interested as you get to your senior year. A lot of MOOC’s have entry level courses but lack on advanced topics. You will find these scattered across university lecture videos, you already mentioned OCW.
3. For prototype projects try building things from the ground up. For e.g. Taking an Operating systems course great, build a simple filesystem from scratch. It will help you in understanding the complexity involved in production grade software and why certain design choices are made.
4. For the projects that you are passionate about deep dive into it, its great to see people talk about their projects with deep technical insight, pros and cons of design choices made etc.
5. Personally I would avoid learning every new language that comes up, focus more on programming language concepts (there is a course of Coursera on this) and learn few languages well.
6. For internships look for startups that are working on interesting ideas.
7. More than the certificates the projects what you did in those courses are more valuable.
8. Enjoy, make good friends, stay healthy and active.
1. Build a strong CS and Math background, especially since you are interested in AI, ML. Academia is the best place to do this. Look at the curriculum of top engineering schools like mit, cmu for your sophomore year and see how you can complement it with the courses you are taking. This will pay you dividends in future. You are already doing that, which is great! Try to add more structure to your execution.
2. Take advanced courses on the topics you are interested as you get to your senior year. A lot of MOOC’s have entry level courses but lack on advanced topics. You will find these scattered across university lecture videos, you already mentioned OCW.
3. For prototype projects try building things from the ground up. For e.g. Taking an Operating systems course great, build a simple filesystem from scratch. It will help you in understanding the complexity involved in production grade software and why certain design choices are made.
4. For the projects that you are passionate about deep dive into it, its great to see people talk about their projects with deep technical insight, pros and cons of design choices made etc.
5. Personally I would avoid learning every new language that comes up, focus more on programming language concepts (there is a course of Coursera on this) and learn few languages well.
6. For internships look for startups that are working on interesting ideas.
7. More than the certificates the projects what you did in those courses are more valuable.
8. Enjoy, make good friends, stay healthy and active.
Thanks.
I'm currently taking the OS course this sem and we plan to build a minimal OS for raspberry pi from scratch using the linux kernel, writing system programs on top of it.
For internships, I believe start ups are the best bet to gain experience and maybe gain a mentor for life.
For internships, I believe start ups are the best bet to gain experience and maybe gain a mentor for life.
That course sounds amazing, you should blog about it.
You have already mentioned the top one for me: passion.
Colleges rarely teach you what you need to know professionally - they can't, tech moves too fast. Instead, they teach you how to learn what you need to know. This is an important distinction because it should inform your approach to your professional growth.
1. Stay passionate both about software and your own growth/education in it.
2. Start some personal projects and, important, work on them until they reach a place where you can talk about what you learned, the techs you used and be able to at least show a page or two of it working.
3. Be forthcoming in interviews about your desire to create. The longer i am in software the more importance i put on hiring creative people.
Finally, think of software development as modern day blacksmithing. Those who do well have a few things in common: passion, persistence and a great set of artisans (mentors) to learn under. Prioritize finding some people who have compelling opinions on software development and work with them. It will change how you build software and the value you will bring to teams in the future.
Colleges rarely teach you what you need to know professionally - they can't, tech moves too fast. Instead, they teach you how to learn what you need to know. This is an important distinction because it should inform your approach to your professional growth.
1. Stay passionate both about software and your own growth/education in it.
2. Start some personal projects and, important, work on them until they reach a place where you can talk about what you learned, the techs you used and be able to at least show a page or two of it working.
3. Be forthcoming in interviews about your desire to create. The longer i am in software the more importance i put on hiring creative people.
Finally, think of software development as modern day blacksmithing. Those who do well have a few things in common: passion, persistence and a great set of artisans (mentors) to learn under. Prioritize finding some people who have compelling opinions on software development and work with them. It will change how you build software and the value you will bring to teams in the future.
"Colleges rarely teach you what you need to know professionally - they can't, tech moves too fast. Instead, they teach you how to learn what you need to know. This is an important distinction because it should inform your approach to your professional growth."
That's B.S. that lazy college professors use who have their heads so stuck in academia that they don't take the time to keep up with technology. Technology stacks don't change that fast in the enterprise that they couldn't do a better job of preparing students and teaching them how to hit the ground running at a company.
During the beginning of 2013, for standard enterprise development, Java and .Net along with Bootstrap and Jquery were popular - they still are used today.
Back in 2013, the databases that were used in the enterprise are still popular today. iPhone and Android were the most popular mobile platforms.
Sure keeping up with the latest front end framework may not be easy to teach, but courses in JavaScript, CSS, etc would still be enough.
That's B.S. that lazy college professors use who have their heads so stuck in academia that they don't take the time to keep up with technology. Technology stacks don't change that fast in the enterprise that they couldn't do a better job of preparing students and teaching them how to hit the ground running at a company.
During the beginning of 2013, for standard enterprise development, Java and .Net along with Bootstrap and Jquery were popular - they still are used today.
Back in 2013, the databases that were used in the enterprise are still popular today. iPhone and Android were the most popular mobile platforms.
Sure keeping up with the latest front end framework may not be easy to teach, but courses in JavaScript, CSS, etc would still be enough.
I'm following the first two points earnestly and I'll start with the third one as well.
And the mentor aspect is what I'm missing right now. So, I have planned to contribute to open source and/or apply to GSOC '17.
Any other ideas how to find suitable mentors?
And the mentor aspect is what I'm missing right now. So, I have planned to contribute to open source and/or apply to GSOC '17.
Any other ideas how to find suitable mentors?
You are well on your way. The fact that you are posing the question already speaks highly of your drive, so hold your head high.
I'm sure others will have better advice than i do about finding mentors. In my case my first CTO out of school was a major impact. I should also say that mentors may not be above you, but peers. Even in college i became close friends with other developers who, collectively, influenced one another with our learnings and opinions. A rising tide raises all ships, as it were.
I'm sure others will have better advice than i do about finding mentors. In my case my first CTO out of school was a major impact. I should also say that mentors may not be above you, but peers. Even in college i became close friends with other developers who, collectively, influenced one another with our learnings and opinions. A rising tide raises all ships, as it were.
You are aiming too low. Why do you want to be on par with the best? Why not exceed them? My advice to you is to learn more than computing. We tend to obsess over languages, frameworks, algorithms & tooling.
Learn "software engineering", this has nothing to do with language, framework, algorithm or tooling. This is about code organization, managing complexity in code, deciding how to structure/architect an application. This is where you are going to read what some will consider "boring" books, these books will hold very strong opinions and are not exact science. You will have to take that knowledge, apply your experience and come up with your own reasonable opinions too. Here are sample of such books in my library, "Business Process Management", "Ship It", "Architecture Principles", "domain driven design", "Enterprise integration pattern", "Clean code".
The real world doesn't care what language, framework, algorithm or tool you use. They just care that you solved the problem. This means you must understand some other domains outside of tech. If your domain is only tech then you will be building tools for programmers/IT folks. If you understanding banking, insurance, health care, automotive, shipping, etc, you could apply your knowledge towards the difficult or poorly solved problems in those areas.
If you become well rounded, you will have the skills to implement, the domain knowledge to solve pressing problems, but more importantly the wisdom to know when to and when not to break rules.
Learn "software engineering", this has nothing to do with language, framework, algorithm or tooling. This is about code organization, managing complexity in code, deciding how to structure/architect an application. This is where you are going to read what some will consider "boring" books, these books will hold very strong opinions and are not exact science. You will have to take that knowledge, apply your experience and come up with your own reasonable opinions too. Here are sample of such books in my library, "Business Process Management", "Ship It", "Architecture Principles", "domain driven design", "Enterprise integration pattern", "Clean code".
The real world doesn't care what language, framework, algorithm or tool you use. They just care that you solved the problem. This means you must understand some other domains outside of tech. If your domain is only tech then you will be building tools for programmers/IT folks. If you understanding banking, insurance, health care, automotive, shipping, etc, you could apply your knowledge towards the difficult or poorly solved problems in those areas.
If you become well rounded, you will have the skills to implement, the domain knowledge to solve pressing problems, but more importantly the wisdom to know when to and when not to break rules.
Having come from a similar background, I can offer you these suggestions -
1. The level of programming taught in Indian universities is not enough. Writing a sort program is quite different from writing good, maintainable OOP code. Apart from working in a good company, one way to develop this skill (which I feel is critical) is to look and contribute to good open source projects - elasticsearch, spark, etc. Unfortunately I don't know of any good books which teach this overall, apart from specific aspects like Effective Java.
2. Another aspect that I feel is missing in Indian universities is challenging assignments. I would have liked to write my own toy OS to learn systems, or toy kafka to learn distributed systems. The more core computer science fundamentals you master now (preferably through writing code along with learning theory), the better an engineer you will be later.
3. Another aspect that is lacking is the way to reason through things. Indian universities have a third-person approach on the lines of "the experts do things this way so we will just do it this way", on the contrary in a US university the reasoning is more on the lines of "we use to do X, that had Y limitations. So we moved on to Z, now your assignment is to design an extension to Z (say Z+) which solves YY limitation". Unfortunately, I don't know what can be done to improve the way we reason about things.
4. Don't forget to explore different areas. I started with computer graphics, moved on to compilers, then app development, then data engineering, then infrastructure development, then back to data engineering.
1. The level of programming taught in Indian universities is not enough. Writing a sort program is quite different from writing good, maintainable OOP code. Apart from working in a good company, one way to develop this skill (which I feel is critical) is to look and contribute to good open source projects - elasticsearch, spark, etc. Unfortunately I don't know of any good books which teach this overall, apart from specific aspects like Effective Java.
2. Another aspect that I feel is missing in Indian universities is challenging assignments. I would have liked to write my own toy OS to learn systems, or toy kafka to learn distributed systems. The more core computer science fundamentals you master now (preferably through writing code along with learning theory), the better an engineer you will be later.
3. Another aspect that is lacking is the way to reason through things. Indian universities have a third-person approach on the lines of "the experts do things this way so we will just do it this way", on the contrary in a US university the reasoning is more on the lines of "we use to do X, that had Y limitations. So we moved on to Z, now your assignment is to design an extension to Z (say Z+) which solves YY limitation". Unfortunately, I don't know what can be done to improve the way we reason about things.
4. Don't forget to explore different areas. I started with computer graphics, moved on to compilers, then app development, then data engineering, then infrastructure development, then back to data engineering.
That is some solid advice right there. Thanks.
Few tips:
1. Apply to startups. If you are looking to apply to the big four, make sure you do your diligence and work hard at coding contests. 2. Practice peer-teaching. VIT is a huge college. There are more people like you, and you can easily help each other by doing projects together. 3. The industry, in general, rewards freshers who have worked in large teams and projects before. 4. Make sure you get a good internship. Shouldn't be hard for you, but if you are interested, drop me a mail (Razorpay, Bangalore) 5. Go for depth first and then pick your specialization within software. For me it was Web Development and Software Security. Could be anything for you, but make sure you have tested the waters in other fields before picking one. The one benefit of College Life is that you have time to experiment and fail. You can try out projects in all these different fields, and then decide what you are really passionate about. 6. GSoC is a great option. I'd recommend trying for a experienced org over a new one. 7. Avoid freelancing, unless absolutely necessary. It rewards short term gains, over long time learning. You can make much more money cloning WordPress themes and reusing them across projects then learning a new programming language. The latter would help you much more.
I'm very interested in Software Education in India, and if would like to talk more, drop me a mail (email in profile).
1. Apply to startups. If you are looking to apply to the big four, make sure you do your diligence and work hard at coding contests. 2. Practice peer-teaching. VIT is a huge college. There are more people like you, and you can easily help each other by doing projects together. 3. The industry, in general, rewards freshers who have worked in large teams and projects before. 4. Make sure you get a good internship. Shouldn't be hard for you, but if you are interested, drop me a mail (Razorpay, Bangalore) 5. Go for depth first and then pick your specialization within software. For me it was Web Development and Software Security. Could be anything for you, but make sure you have tested the waters in other fields before picking one. The one benefit of College Life is that you have time to experiment and fail. You can try out projects in all these different fields, and then decide what you are really passionate about. 6. GSoC is a great option. I'd recommend trying for a experienced org over a new one. 7. Avoid freelancing, unless absolutely necessary. It rewards short term gains, over long time learning. You can make much more money cloning WordPress themes and reusing them across projects then learning a new programming language. The latter would help you much more.
I'm very interested in Software Education in India, and if would like to talk more, drop me a mail (email in profile).
Start-up internships and GSOC are the best use of a summer vacation, I agree.
And regarding software education, I believe MOOC is going to play a very big role in the near future especially in countries like India where hard working and deserving students lack quality world class education.
And given the Indian affinity for certificates and credentials, I believe this could be a great start up idea too.
And regarding software education, I believe MOOC is going to play a very big role in the near future especially in countries like India where hard working and deserving students lack quality world class education.
And given the Indian affinity for certificates and credentials, I believe this could be a great start up idea too.
In an ideal world, you won't need MOOCs. One thing I keep repeating is:
This has served me well as a guide, however it doesn't apply neatly to all areas. Invest in Skills, not Credentials.
Make > Learn > Read
Where Make = Actually working on a project, Learn is actively learning a topic (via a course or a book you're following), and Read is just reading through books or online guides.This has served me well as a guide, however it doesn't apply neatly to all areas. Invest in Skills, not Credentials.
[deleted]
Having completed graduation in India with a college much less in glamor than VIT, I would advice you to give yourself some slack and continue working earnestly on interesting stuff. When I graduated, I was deep-down with anxiety to get proficient in frameworks like Rails / AngularJs. Apparently, what were web frameworks in my time are AI / Big Data these days — the skills insinuated as requisite to be taken seriously.
But things are much simpler than that. Programmers solve problems and even the most revered programmers are just solving other programmers' problems. If you are building stuff, irrespective of size, scale or complexity, you're on the right track. Snub the anxiousness of not studying in the top-tier college; it won't matter few years down the line. I certainly can relate to zealousness of solving complex problems, but in my view, it's certainly not a prerequisite for personal fulfilment, or success, for that matter.
In day-to-day work, I am yet to use anything related to AI but every now and then, I find immensely time-saving project that just solved an insignificant problem.
But things are much simpler than that. Programmers solve problems and even the most revered programmers are just solving other programmers' problems. If you are building stuff, irrespective of size, scale or complexity, you're on the right track. Snub the anxiousness of not studying in the top-tier college; it won't matter few years down the line. I certainly can relate to zealousness of solving complex problems, but in my view, it's certainly not a prerequisite for personal fulfilment, or success, for that matter.
In day-to-day work, I am yet to use anything related to AI but every now and then, I find immensely time-saving project that just solved an insignificant problem.
Code that solves a real problem or runs a real (viable) business is more important than any degree certificate you will ever get. 93% top most successful corporations in America are managed by people who come from 2nd and 3rd tier grads. Steve Jobs was a college dropout.
>> I'm passionate about solving problems and making things, especially AI and game development
Then you just got to start making them, if not.
For game development, even though a lot may not make sense, read the book 'Game Engine architecture'.
Now start making a game engine with parsers for any open format such as Collada/Quake, add sound, physics, animation. Keep doing it in parallel with a 3D game of your choice. Yes, I am asking to start off directly with a 3D game, not a popular opinion in the game learning world. You will also learn game related math, physics, AI along the way.
Write a game feature, extract to your game engine. Rinse, lather, repeat.
Why do I suggest this? This is the advice I would give to my younger self ;-)
Then you just got to start making them, if not.
For game development, even though a lot may not make sense, read the book 'Game Engine architecture'.
Now start making a game engine with parsers for any open format such as Collada/Quake, add sound, physics, animation. Keep doing it in parallel with a 3D game of your choice. Yes, I am asking to start off directly with a 3D game, not a popular opinion in the game learning world. You will also learn game related math, physics, AI along the way.
Write a game feature, extract to your game engine. Rinse, lather, repeat.
Why do I suggest this? This is the advice I would give to my younger self ;-)
Everyone in our country, from academia to industry, looks at us as second class undergrads
Go and work somewhere where your university's reputation is unknown, then people will rate you on your work rather than the university you went to.
Go and work somewhere where your university's reputation is unknown, then people will rate you on your work rather than the university you went to.
That seems a great hack :)
Real work is always more impressive than academics. The sooner your schoolwork fades into the background of your career the better.
Many posts here emphasize direct skills, but it is important to understand that the modern workplace requires a broad range of skills in particular related to communication. One specific communication methodology which is worth learning is Nonviolent Communication which can enable people with different contexts and points of view to have useful conversations that resolve significant conflicts.
Many posts here emphasize direct skills, but it is important to understand that the modern workplace requires a broad range of skills in particular related to communication. One specific communication methodology which is worth learning is Nonviolent Communication which can enable people with different contexts and points of view to have useful conversations that resolve significant conflicts.
This can vary with the culture of the country/region/company though.
I am glad to see a question asked from college student. I am always interested to hear from others in college. I am twenty-one-years-old, attending a community college in the states and studying a bit of computer science.
I am going to go off on sort of a tangent and offer you some general advice:
1. Do not worry about what other people think. You mentioned in the beginning of your question about being looked as "second class undergrads", and that is completely false. As Rainer Maria Rilke once noted: "Your life is so inexpressibly your own..."
2. Build things you are passionate about, and not because they'll help you land a job but just for the sake of building things. If you are interested in artificial intelligence or machine learning, learn about them and build something. Better yet, keep a blog and write about the process of learning about AI, ML, etc. Don't be afraid to email some people you look up in the industry for guidance.
3. Keep learning, learn about anything that sparks your interest. Nothing is boring in its deepest essence. There's always something to learn. And if you know a lot, teach it or write about i.e. set up a repository for other people to learn more about it in an easier way.
Above all: Just be you. Don't label or attach yourself with certain identities. Build great things just for the enjoyment of building things. Love the process of building things. Collaborate with friends and colleagues. Go boldly.
Learning, building, etc. is all a joy. Don't try to be the best _____, just build stuff that matters to you.
I am going to go off on sort of a tangent and offer you some general advice:
1. Do not worry about what other people think. You mentioned in the beginning of your question about being looked as "second class undergrads", and that is completely false. As Rainer Maria Rilke once noted: "Your life is so inexpressibly your own..."
2. Build things you are passionate about, and not because they'll help you land a job but just for the sake of building things. If you are interested in artificial intelligence or machine learning, learn about them and build something. Better yet, keep a blog and write about the process of learning about AI, ML, etc. Don't be afraid to email some people you look up in the industry for guidance.
3. Keep learning, learn about anything that sparks your interest. Nothing is boring in its deepest essence. There's always something to learn. And if you know a lot, teach it or write about i.e. set up a repository for other people to learn more about it in an easier way.
Above all: Just be you. Don't label or attach yourself with certain identities. Build great things just for the enjoyment of building things. Love the process of building things. Collaborate with friends and colleagues. Go boldly.
Learning, building, etc. is all a joy. Don't try to be the best _____, just build stuff that matters to you.
I love to talk to other passionate CS students too. Helps me reorient and correct my perspective.
And I'm gonna follow your advice and blog about my learning experiences. Infact, there are valuable gems of advice here and I'm thinking to compile them together in a blog post for many other curious students like me.
And I'm gonna follow your advice and blog about my learning experiences. Infact, there are valuable gems of advice here and I'm thinking to compile them together in a blog post for many other curious students like me.
If you are at Vellore (VIT appears to be Vellore Institute of Technology ), there is a world class medical institution in your town (CMC Vellore )that sends many of their graduates around the world to places like the Mayo Clinic and MGH.
They have a well regarded neurophysiology lab that was run by Marcus Devanandan. Perhaps you could do research / collaborate with them.
They have a well regarded neurophysiology lab that was run by Marcus Devanandan. Perhaps you could do research / collaborate with them.
Thanks for taking the time to help me out. :)
And yeah, I'm currently looking for internships and such for the summer. But the credentials card always comes in play.
And yeah, I'm currently looking for internships and such for the summer. But the credentials card always comes in play.
I checked out the game you developed...looks awesome.
Look - since you are passionate about solving problems and making things, why don't you just create sources of passive income or build some business from the ground up? This way you will be able to bypass any reputation issues that your university has and focus on your creativity instead.
Look - since you are passionate about solving problems and making things, why don't you just create sources of passive income or build some business from the ground up? This way you will be able to bypass any reputation issues that your university has and focus on your creativity instead.
You're doing great. Don't stop your learning curve fall down. I feel that there are really very very less people like us in our country who have similar likes and views though they share almost same story like ours.I can understand the situation of student like me. I too am sophomore student at an Institute ranking way below yours but i feel it doesn't matter a lot specially in our field. I read so many things over internet like how i can develop myself up and so and so though i start everything i don't do anything good which i can show or prove to the world Trust me bro you can't match my level of procrastination. I haven't done anything except reading things over internet and i don't know why the heck i came here to suggest or advice you. But one thing i would like to tell you: don't let yourself feel down and fuck the negativities around you instead try utilizing and learning as much as you can in forthcoming years. There are hell lot of people who are there to help us out and internet is our best friend. I'm studying really hard to learn things around me and i feel you should do the same and make each second count for your better future. Good luck.
The quality of first tier colleges in India is still terrible, if you didn't know that already. Google/Facebook doesn't hire everyone from IITs hardly two or three.
You're doing far better than those people, from what I've seen.
If you're in Chennai: come for the meetups: I'm the co-organizer of docker and golang meetups. Also checkout devops meetup and the Linux group at IIT Madras.
You get to meet some of the smartest and experienced veterans in the city.
You're doing far better than those people, from what I've seen.
If you're in Chennai: come for the meetups: I'm the co-organizer of docker and golang meetups. Also checkout devops meetup and the Linux group at IIT Madras.
You get to meet some of the smartest and experienced veterans in the city.
Hey,
You are already on right track. Just complete the Graduation as it is required by many companies(and visas if you need any in future). Go for fundamental courses more on MIT OCW and others. I also studied in a private engineering college from India(2010-2014). My rant at the time here: https://nainomics.blogspot.in/2011/11/welcome-to-indias-high...
I just focused on my learning. Some professors were encouraging. That helped.
One anecdote: I made a heroku style PaaS for my final year project(like dokku). My professors couldn't understand what it does and why is it even necessary. Their main point was we have "shared-hosting" services to do these(I had to go from php to java/python example then :P). Now after two years they have their industry peers saying docker all over and have called me several times regarding that.
I am now Backend Dev building APIs with Python(Django) and Elixir at a small company. I also have small Open source contributions under my belt. Contact me if you need someone to talk to
You are already on right track. Just complete the Graduation as it is required by many companies(and visas if you need any in future). Go for fundamental courses more on MIT OCW and others. I also studied in a private engineering college from India(2010-2014). My rant at the time here: https://nainomics.blogspot.in/2011/11/welcome-to-indias-high...
I just focused on my learning. Some professors were encouraging. That helped.
One anecdote: I made a heroku style PaaS for my final year project(like dokku). My professors couldn't understand what it does and why is it even necessary. Their main point was we have "shared-hosting" services to do these(I had to go from php to java/python example then :P). Now after two years they have their industry peers saying docker all over and have called me several times regarding that.
I am now Backend Dev building APIs with Python(Django) and Elixir at a small company. I also have small Open source contributions under my belt. Contact me if you need someone to talk to
keep on learning new stuff. make use of time. vit university has a good startup culture so try to find a startup and work on it. here is the some of the vit open source project where you can contribute
1)https://github.com/karthikb351/CaptchaParser
2)https://github.com/princebansal/MyVIT
3)https://github.com/shubhodeep9/go-MyVIT
4)https://github.com/aneesh-neelam/VITacademics
5)https://github.com/sch00lb0y/Vit-Photo
I'm in the US; if you're going to stay in India, my advice may be less helpful.
But I would say that you're in an environment where everyone cares greatly about credentials, because that's all anyone has so far. Once you graduate and have worked for a few years, people don't care so much about the credential. It may matter some, but it matters more that you can actually do things.
So you need to get a credential that is good enough to get you a job. But it matters more that you actually know what you're talking about, rather than just being able to repeat what the professor said. You need to understand, not just memorize. You need to be able to write software that actually helps people do things, not just classroom exercises. If you can, then you will surpass many who have better credentials than you. It may take a few years, but you will pass them.
But I would say that you're in an environment where everyone cares greatly about credentials, because that's all anyone has so far. Once you graduate and have worked for a few years, people don't care so much about the credential. It may matter some, but it matters more that you can actually do things.
So you need to get a credential that is good enough to get you a job. But it matters more that you actually know what you're talking about, rather than just being able to repeat what the professor said. You need to understand, not just memorize. You need to be able to write software that actually helps people do things, not just classroom exercises. If you can, then you will surpass many who have better credentials than you. It may take a few years, but you will pass them.
I can't really speak for anyone else, but speaking as someone who has been involved in interviewing and making hiring decisions, I don't care what school you went to. I care that you graduated, and I care to a slightly lesser extent what your degree is and what your GPA was.
What I really care about when I interview you is how you answer my questions (this doesn't mean that I expect you to be able to answer every question fully), how well I can gauge the depth of your knowledge, and whether or not I think you will listen to senior engineers, learn what you need to do quickly and with an appropriate level of mentorship, and be a team member rather than someone trying to do his/her own thing.
Ok, I'll admit that someone who went to a for-profit school is going to have a higher bar to pass, but I haven't had to worry about that yet.
What I really care about when I interview you is how you answer my questions (this doesn't mean that I expect you to be able to answer every question fully), how well I can gauge the depth of your knowledge, and whether or not I think you will listen to senior engineers, learn what you need to do quickly and with an appropriate level of mentorship, and be a team member rather than someone trying to do his/her own thing.
Ok, I'll admit that someone who went to a for-profit school is going to have a higher bar to pass, but I haven't had to worry about that yet.
But if you are a hiring manager at one of the big name companies you would not even short list non-top tier candidates for the interview. I have been applying since the past one month and its the small companies that respond.
I think someone who has worked in Microsoft - who might not have contributed much - minor bug fixes compared to the guy who has a worked in a startup - build products from scratch and all that in an extensive deadline - staying up entire nights on a new few occasions to make the release date ends up getting a straight reject.
I think someone who has worked in Microsoft - who might not have contributed much - minor bug fixes compared to the guy who has a worked in a startup - build products from scratch and all that in an extensive deadline - staying up entire nights on a new few occasions to make the release date ends up getting a straight reject.
Focus on learning and self improvement. Everything else will naturally fall into place.
Do you want to be a game developer or an AI expert? I would suspect that the things you should do are going to be quite different.
Also, what do you mean by "at par"? Status? Money? Knowledge? Expertise in a given area, and if so, what?
Also, what do you mean by "at par"? Status? Money? Knowledge? Expertise in a given area, and if so, what?
Though I have an interest in games and AI / ML, I would still consider being a good software engineer first. I'm aiming for a strong foundation and expertise in one field: AI or anything related. Being a fresher, I believe I won't get to work straight at these.
And by "at par", I meant the same opportunities that a top school student gets.
And by "at par", I meant the same opportunities that a top school student gets.
My opinionated version is that you should bail out on games and focus on AI/ML, then try to get into the best grad school you can and get really good at difficult things that other people can't do (even better, things that they can't do and don't want to do). Games fail that test because too many people want to work on them.
Becoming a good software engineer seems to come from working with people with good taste (on real projects). In my experience I haven't met anyone who learned to be a good SE from university (it may be possible, but I doubt it would happen at a mediocre university).
Becoming a good software engineer seems to come from working with people with good taste (on real projects). In my experience I haven't met anyone who learned to be a good SE from university (it may be possible, but I doubt it would happen at a mediocre university).
Indeed.
After talking to other people and thinking hard about my options, I have come to same conclusion.
But finding good people to work with or under seems really hard. I really don't know how to find good mentors other than contributing to open source and hoping someone senior likes my contributions.
OK, so I'm writing in a 'dead thread' (likely) but for what it's worth: I think your last sentence is the right idea; do the work then find a mentor in a related area as a consequence of that. I really don't like being approached by people who haven't put in any effort yet want to network for the sake of networking.
No one you want to work for is going to look down on you based on where you went to school.
I hesitate to give you advice since it sounds to me like you're pretty busy already.
I hesitate to give you advice since it sounds to me like you're pretty busy already.
I've been watching a friend follow their passion (food); what they do, and what I do/think in response. At this point - anything and everything to do with food, my first thought it - What's Veronica's opinion on this?
You want the people you know (and who know you) to have their idea of you intertwined with what you want to be doing; now, everything they encounter that has to do with that will get funneled your way.
You want the people you know (and who know you) to have their idea of you intertwined with what you want to be doing; now, everything they encounter that has to do with that will get funneled your way.
Study after study has shown that going to a "2nd grade" university makes no difference to your skill level and lifetime earnings. They basically compared people who were accepted to "top grade" universities and chose to go somewhere else with people who did go. So don't stress about it. Simply learn as much as you can on/off university.
But of course if you have to pay to go to university (I didn't) then your dept will be so much higher going to a "top grade" university.
First, you need to think about what you want to do after graduation, such as becoming an Android game developer or a graduate student focusing on AI. Then figure out what you need to do to achieve your goals (such as work on projects or do research) and keep working on it. Everything will be fine and you can be at par with the best.
Most of my undergrad friends are really torn between academia and industry. And since I'm in my sophomore year, I feel it's too early to make the right call.
Anyways, I do need to decide sooner or later.
I don't know what it's like there, but I would get involved in research with a professor if possible. Doing so had a really positive impact on my undergrad experience, and will inform if you want to stay in academia or not.
College is a good place to try things out before diving into them. But I have found no passionate profs in my college and getting a research internship under a good prof is a task in itself.
No one really cares where you graduated from. I have worked with developers from IITs, BITS and much smaller colleges. Some of them are smart, some of them are mediocre and some are bad, irrespective of the college they are from.
All that matters is your passion and how much you put into the work you do.
All that matters is your passion and how much you put into the work you do.
I have compiled all the valuable advice and suggestions here into a blog post for other students like me:
http://amandavinci.me/hackernews-advice-for-budding-makers-h...
http://amandavinci.me/hackernews-advice-for-budding-makers-h...
At the risk of sounding cliche', just do work at something you enjoy. If you think there will be valuable knowledge in the degree certificates, go for them. If you have a cool idea you want to explore, go for it.
Yeah exactly but I always feel like I'm short of time. Like just a few years more and I'll have to look for a job. Mandatory attendance at boring classes doesn't help much too.
If the classes are boring, it's either because you aren't close to the level of knowledge you should be, or else you're far ahead of the curve. Given what you wrote about your education so far, of course the latter is true.
I envy you actually; I never had a head for higher math and programming, my talents lie in hardware hacking and electronics repair. I'd love to learn some proper CS, but my life took a different track before college and now when I try to learn anything beyond bash scripting or simple microcontroller stuff in C, my mind turns to mush.
I envy you actually; I never had a head for higher math and programming, my talents lie in hardware hacking and electronics repair. I'd love to learn some proper CS, but my life took a different track before college and now when I try to learn anything beyond bash scripting or simple microcontroller stuff in C, my mind turns to mush.
You seem like you are really on top of your game though. I'm impressed. It's sad to see so much weight on brand name schools.
Thanks a lot.
I found Paul Graham's essay on the credentials and pedigree quite reassuring. :)
http://www.paulgraham.com/credentials.html
"Admission to the right university can make or break an ambitious young South Korean."Don't let yourself be entrenched in the things you already know. Take on tasks well outside of your comfort zone and peel away at those problems so you are always getting better.
There is no "best," but you mention AI in two of your three questions, which I think answers the third.
I think I am in quite a similar position to you: after secondary school here in Ireland, I didn't consider any universities outside of my home town (pretty much because I didn't know a single person who was considering bigger and better options, so it genuinely didn't cross my mind to apply to Stanford, CMU, MIT etc.) so I ended up going to a fairly average and not very well known university to study electronic engineering for my undergrad.
I went on an exchange for a year to UCLA and this was when I started to feel something similar to the sentiment you're expressing here.
I'm now in my 3rd year of undergrad EE and for the last year I've been trying to fast track myself into the AI / ML field as I've been increasingly regretting my EE major and becoming more and more interested and passionate about ML (particularly the intersection of ML, altruism and design): I got Norvig & Russell's textbook and read it in outside of my engineering classes, read less technical books like Nick Bostrom's Superintelligence for motivation / food for thought, made a simple collaborative filtering recommender system using the movielens open source dataset, moved away from the web dev stuff I'd been doing in 1st and 2nd year and tried to hone in on improving my algorithm and pure CS skills, watched a load of AI / ML videos to try and get a better sense of who's who, where's where and what's going on etc. in the field. The "dream" (I use that word loosely) is to do the google brain residency program instead of a PhD, or the U Chicago data science for social good fellowship, so I've been trying to figure out how to get myself into good shape for either of them.
It's been overwhelming at times, largely because I feel like 1) I'm not in the "right" major, 2) I've had a taste of but no longer "go to" UCLA (or an equivalent high ranking university) and won't be graduating from there so will need to work hard to stand out against the competition for placements / fellowships / internships 3) I don't have mentors or peers who can help me navigate the field (I have a great relationship with a lot of my engineering professors but again, it's not ML). So I'm sort of trying to make sense of it all myself. It's reassuring to hear there are others feeling similarly and it's great to hear all that you're doing!
On a positive note, I suspect you may be overestimating the educational superiority of the top tier schools (I know I certainly did before I went to UCLA) but at the same time I don't think it's fair to completely disregard the big unis and just say "circuit theory is circuit theory" and forget about it. While I was there, I really didn't notice all that much of a difference in terms of course content or even teaching quality - the biggest difference was there were an awful lot more high achiever students in my EE classes compared to in my home uni in Ireland, and there was a much more impressive "career fair" and internship opportunity scene than at home (think Irish Cement vs Hyperloop One).
You seem to be doing everything right. I think I was edging down a "burnout" path a couple of months ago with fretting over what you're saying and over my own EE vs CS major "challenge". I've tried to take a step back and remember that there's no one enforcing a particular pace or path for me, hopefully you won't let the fretting get in the way of your passion which almost happened to me.
Just wanted to comment this to warn you about the burnout thing, reassure you somewhat about top schools and throw in a few links you might find interesting for good measure!
You mightn't find any of these links below helpful, you very well may be much more well read than myself but I thought I'd link these here anyway. The first is a reassuring AMA on reddit from the google brain team (particularly the comments where the team talk about all the different backgrounds everyone has at google brain). The second is a list of programmes, fellowships, resources and random AI / ML related pages I've encountered in the last year (amongst a lot of other stuff ). The third is a playlist I made for a friend on interesting AI / ML videos which you most likely will have seen before but you might just enjoy anyway. The quick interviews are cool if you haven't seen them already.
Anyway - best of luck!
https://www.reddit.com/r/MachineLearning/comments/4w6tsv/ama...
http://sharedli.st/cvigoe40g9
https://www.youtube.com/playlist?list=PLxB_QX9z7BFSc7VRmy5zt...
I went on an exchange for a year to UCLA and this was when I started to feel something similar to the sentiment you're expressing here.
I'm now in my 3rd year of undergrad EE and for the last year I've been trying to fast track myself into the AI / ML field as I've been increasingly regretting my EE major and becoming more and more interested and passionate about ML (particularly the intersection of ML, altruism and design): I got Norvig & Russell's textbook and read it in outside of my engineering classes, read less technical books like Nick Bostrom's Superintelligence for motivation / food for thought, made a simple collaborative filtering recommender system using the movielens open source dataset, moved away from the web dev stuff I'd been doing in 1st and 2nd year and tried to hone in on improving my algorithm and pure CS skills, watched a load of AI / ML videos to try and get a better sense of who's who, where's where and what's going on etc. in the field. The "dream" (I use that word loosely) is to do the google brain residency program instead of a PhD, or the U Chicago data science for social good fellowship, so I've been trying to figure out how to get myself into good shape for either of them.
It's been overwhelming at times, largely because I feel like 1) I'm not in the "right" major, 2) I've had a taste of but no longer "go to" UCLA (or an equivalent high ranking university) and won't be graduating from there so will need to work hard to stand out against the competition for placements / fellowships / internships 3) I don't have mentors or peers who can help me navigate the field (I have a great relationship with a lot of my engineering professors but again, it's not ML). So I'm sort of trying to make sense of it all myself. It's reassuring to hear there are others feeling similarly and it's great to hear all that you're doing!
On a positive note, I suspect you may be overestimating the educational superiority of the top tier schools (I know I certainly did before I went to UCLA) but at the same time I don't think it's fair to completely disregard the big unis and just say "circuit theory is circuit theory" and forget about it. While I was there, I really didn't notice all that much of a difference in terms of course content or even teaching quality - the biggest difference was there were an awful lot more high achiever students in my EE classes compared to in my home uni in Ireland, and there was a much more impressive "career fair" and internship opportunity scene than at home (think Irish Cement vs Hyperloop One).
You seem to be doing everything right. I think I was edging down a "burnout" path a couple of months ago with fretting over what you're saying and over my own EE vs CS major "challenge". I've tried to take a step back and remember that there's no one enforcing a particular pace or path for me, hopefully you won't let the fretting get in the way of your passion which almost happened to me.
Just wanted to comment this to warn you about the burnout thing, reassure you somewhat about top schools and throw in a few links you might find interesting for good measure!
You mightn't find any of these links below helpful, you very well may be much more well read than myself but I thought I'd link these here anyway. The first is a reassuring AMA on reddit from the google brain team (particularly the comments where the team talk about all the different backgrounds everyone has at google brain). The second is a list of programmes, fellowships, resources and random AI / ML related pages I've encountered in the last year (amongst a lot of other stuff ). The third is a playlist I made for a friend on interesting AI / ML videos which you most likely will have seen before but you might just enjoy anyway. The quick interviews are cool if you haven't seen them already.
Anyway - best of luck!
https://www.reddit.com/r/MachineLearning/comments/4w6tsv/ama...
http://sharedli.st/cvigoe40g9
https://www.youtube.com/playlist?list=PLxB_QX9z7BFSc7VRmy5zt...
[deleted]
[deleted]
I spent years working in IT before going back to school at night to get a CS degree.
One thing is to just learn the subjects and get as good a grade as possible. Even if a class is subpar, just learn the subject. I had to submit an assignment once about process scheduling in Linux etc. After ten minutes study, I knew I had an A+ on the assignment already. But I had always wanted to look into that topic any how, so I spent several more hours reading about it for myself. I always wanted to learn about scheduling, and if I punted on it then, when would I ever study it? If I did that all the time my skill level would be high.
If you study and get good grades and have a good relationship with professors (go to office hours and schmooze a little, pay attention and participate in class and be prepared and listen), you can always apply for a Masters at IIT or elsewhere. So you can still get that name if you want it.
If the subject is theory of computation and the teacher is sub-par, just go above and beyond. Learn about big-O and the squeeze theorem and pushdown automata for the class, but for yourself as well. Read (some of, all of) a non-assigned book on automata theory if necessary.
Insofar as projects, one thing I suggest is doing projects related to coursework. Toward the end, or right after a class on C++ - write your own C++ program, or fix an issue with a Github hosted C++ program and send a pull request. If it is a graphics class on OpenGL, write your own program in OpenGL towards the end or right after the class - maybe explore iOS/Android OpenGL ES. Or look at scikit-learn after an AI class. Ground some of the theory you learn in class with application.
Your classes covering concurrency and threading and critical sections and mutual exclusion may seem boring in school, but if you're a programmer you will run into these things and you will be happy you learned how to deal with it properly a few years back, even if you haveto go back and read up on it. The AI stuff may sound exciting, but getting all these details right together is what will get you to be a good programmer.
From what you wrote, my main advice is don't be too all over the place. If you have a class in databases and a class in Java, that semester, spend a lot of time learning about the theory, and maybe a little time in application setting up MySQL on your desktop and writing a Java program to populate kt. It's OK to have one other side project going at a time of something that interests you, but you should be spending a lot of time learning about databases and Java.
If you have time on your hands, just dive more into it. For example, in the USA, a drink may be 2.5 liters. In some countries that is 2,5 liters (comma, not period). I once submitted a patch to a Java project doing a switch/case by country. The upstream told me the Java had a DecimalFormat class that already did that. My method was a waste of time, and also less complete. It was something about Java I nad not learned. You're just scratching the surface in class, there's a lot of ground to these subjects.
So get a good grasp of each subject you study. Meanwhile, if you have an interest or specialty you'd like to pursue, do that as well.
One thing is to just learn the subjects and get as good a grade as possible. Even if a class is subpar, just learn the subject. I had to submit an assignment once about process scheduling in Linux etc. After ten minutes study, I knew I had an A+ on the assignment already. But I had always wanted to look into that topic any how, so I spent several more hours reading about it for myself. I always wanted to learn about scheduling, and if I punted on it then, when would I ever study it? If I did that all the time my skill level would be high.
If you study and get good grades and have a good relationship with professors (go to office hours and schmooze a little, pay attention and participate in class and be prepared and listen), you can always apply for a Masters at IIT or elsewhere. So you can still get that name if you want it.
If the subject is theory of computation and the teacher is sub-par, just go above and beyond. Learn about big-O and the squeeze theorem and pushdown automata for the class, but for yourself as well. Read (some of, all of) a non-assigned book on automata theory if necessary.
Insofar as projects, one thing I suggest is doing projects related to coursework. Toward the end, or right after a class on C++ - write your own C++ program, or fix an issue with a Github hosted C++ program and send a pull request. If it is a graphics class on OpenGL, write your own program in OpenGL towards the end or right after the class - maybe explore iOS/Android OpenGL ES. Or look at scikit-learn after an AI class. Ground some of the theory you learn in class with application.
Your classes covering concurrency and threading and critical sections and mutual exclusion may seem boring in school, but if you're a programmer you will run into these things and you will be happy you learned how to deal with it properly a few years back, even if you haveto go back and read up on it. The AI stuff may sound exciting, but getting all these details right together is what will get you to be a good programmer.
From what you wrote, my main advice is don't be too all over the place. If you have a class in databases and a class in Java, that semester, spend a lot of time learning about the theory, and maybe a little time in application setting up MySQL on your desktop and writing a Java program to populate kt. It's OK to have one other side project going at a time of something that interests you, but you should be spending a lot of time learning about databases and Java.
If you have time on your hands, just dive more into it. For example, in the USA, a drink may be 2.5 liters. In some countries that is 2,5 liters (comma, not period). I once submitted a patch to a Java project doing a switch/case by country. The upstream told me the Java had a DecimalFormat class that already did that. My method was a waste of time, and also less complete. It was something about Java I nad not learned. You're just scratching the surface in class, there's a lot of ground to these subjects.
So get a good grasp of each subject you study. Meanwhile, if you have an interest or specialty you'd like to pursue, do that as well.
Possibly unpopular opinion here on HN. I almost went to VIT in 2007 (shockingly got into NIT Trichy instead).
1. Focus on becoming a good programmer (ie, SPOJ/Topcoder/Directi). That'll help you clear interviews, and get good at thinking about algos and data structures. I'd even prioritize this over other CS fundamentals.
2. Keep your GPA up and get into a good grad school. I disliked both the interview process and the classism (ie, recruit from top schools) of Indian companies when I interviewed there.
3. If you don't want to go to grad school, make sure you don't touch TCS/CTS/Wipro/<insert mass VIT employer here> with a 100-foot-long- pole. Given your passion, and assuming you use the next two years to become a strong programmer, you will find a good place to work in Bangalore. You might have to pay your dues, but please don't pay them at the above mentioned places.
And people who look at you as second class undergrads can fuck off (esp the professors at IIT Madras :) ). I know several friends at IITs that preferred to pot-smoke-away their time there. If you're near Chennai I'm happy to chat with you.
1. Focus on becoming a good programmer (ie, SPOJ/Topcoder/Directi). That'll help you clear interviews, and get good at thinking about algos and data structures. I'd even prioritize this over other CS fundamentals.
2. Keep your GPA up and get into a good grad school. I disliked both the interview process and the classism (ie, recruit from top schools) of Indian companies when I interviewed there.
3. If you don't want to go to grad school, make sure you don't touch TCS/CTS/Wipro/<insert mass VIT employer here> with a 100-foot-long- pole. Given your passion, and assuming you use the next two years to become a strong programmer, you will find a good place to work in Bangalore. You might have to pay your dues, but please don't pay them at the above mentioned places.
And people who look at you as second class undergrads can fuck off (esp the professors at IIT Madras :) ). I know several friends at IITs that preferred to pot-smoke-away their time there. If you're near Chennai I'm happy to chat with you.
Being a good programmer and having a good GPA seems like inversely proportional in our college. Only the students who follow lecture slides and are good at writing exams seem to have >=9 CGPA.
And yeah, it would be great to chat. Here is my mail: [email protected] Or, you can go to my website for social media contacts: http://amandavinci.me/
And yeah, it would be great to chat. Here is my mail: [email protected] Or, you can go to my website for social media contacts: http://amandavinci.me/
I understand the issue of balancing classes and doing projects. If you want to go to grad school GPA will matter a LOT more. Keep it above 8 even at the cost of spending less time on your skills.
If you are sure you do not want to go to grad school (which is very difficult to decide at this point) focus more on projects. Try to get an internship at a good startup and prepare for interviews hard (read DSA). Going to a top employer like Google, MS, Directi will help you get over the second-grade brand. All of these care more about DSA instead of all projects and specialized knowledge in ML and AI. I know preparing for interviews is boring compared to doing projects but take this advice seriously if you want to get hired at one of the places I listed.
If you are sure you do not want to go to grad school (which is very difficult to decide at this point) focus more on projects. Try to get an internship at a good startup and prepare for interviews hard (read DSA). Going to a top employer like Google, MS, Directi will help you get over the second-grade brand. All of these care more about DSA instead of all projects and specialized knowledge in ML and AI. I know preparing for interviews is boring compared to doing projects but take this advice seriously if you want to get hired at one of the places I listed.
Yes, I know that. I'm asking you to keep your GPA up inspite of that :-)
I work at a Fortune 50 in the US, and we hire a lot the TCS devs and others from Chennai. A lot of them whom I talk to say they feel trapped where they are, and exploited by these mass VIT employers.
I'm passionate about solving problems and making things, especially AI and game development. But due to some bad decisions I ended up dropping two years after high school and could not get into the IITs i.e. the top colleges in India. Ever since I started college and found the sub-par level of CS education here, I have tried to take my education into my own hands. I'm an autodidact by choice and here is the strategy that I have followed for the past one and half years at college:
- MOOC : I have studied all the important CS courses from popular MOOCs like CS50, MIT OCW, etc. I have earned a certification in an AI MOOC taught by the IITs and completed the Machine Learning course from Coursera too.
- Projects : I have done some good projects and open sourced them at https://github.com/AmanDaVinci
- Others : I have worked as a two man team to publish a game on Play Store and we also sell our plugins, tools and assets on Unity3D asset store. I have organized and instructed successful game development workshops as I plan to start a Game Dev club in our college.
Considering the experience and expertise of the HN crowd in the engineering field, what more could I do to be at par with the top students of the world?
1) Should I invest in AI / ML nano degree certificates?
2) Should I work more on real software projects like open source AI and games?
3) Can I do anything else to improve myself?