The following tries to answer some of the frequently recurring questions on the SDP community.

Members are encouraged to ask questions in the community group if they need more info specific to their situation.

Table Of Contents

University and Degree:

Q: I want to go for a degree for software development, which one should I go for among BS(CS)/Software Engineering/ BS(IT) etc.

At least among the above 3 degrees, the difference in the curriculum is so little that it doesn’t even matter eventually. For more answers, check this or search the group.

Some related posts are,

Q: Does it matter which university I graduated from?

Yes it does matter a bit for the following:

  • Quality Of Education
  • Competition with your peers means better skills.
  • Stronger network through alumnis already in the industry.
  • Better prospects of getting into a Masters programme abroad.
  • Looks better on paper.

However, you can overcome these by building skills and network outside the university, if you are coming from a low ranked university. Check this for more details on the topic.

Q: Which university is better among the ones offering a relevant programme?

Based on the feedback people have given on the group.

Top Tier

Middle Tier

The Rest

P.S: Take this with a pinch of salt since it’s an opinionated list :)

It should be kept in mind that because we have the valuable resource of the Internet in this age of humanity, most of things that are practically needed, expected, and which make students really stand out are really self learned. While this thread does not discourage going to University or disregarding it all together, readers should be aware that there are many things that University is simply unable to teach, due to a lot of reasons. These can be,

  • Because of a very fast growing technological community.
  • Books getting outdated very quickly.
  • Courses are designed for the most average of students, not specifically targeted at high achieving students, thus impacting quality.
  • The system of marks and GPA discourages students to work on things other than their university syllabus due to the fear of falling behind in grades.

Related Facebook post:

Q: Can you give some general guidelines about getting the most of my degree programme?

Whatever University you prefer, you should keep the following things in mind while deciding about it, in general. These points are as follows,

The Alumni

The Alumni of that University are actually very precious. Seniors, juniors, and graduates are willing to guide you and give you help if you ask for it. They are highly likely to give you very good advice early on. Whatever University you go to, it’s very important to stay in touch with your seniors so you can learn more from them as time goes on, all the while learning from their experiences.

The Free Time

Since many of the things in Computer Science / Software Engineering can only be really learned through a self taught experience, it’s very important to note down how much free time the University gives you, and how lax it is in not over burdening you with work.

Extra Curricular

A good teamwork in companies and projects helps to move that project ahead. Unlike the common myth that great products are made by a single individual typing away at his keyboard in a silent, empty room, most projects are actually the result of very good cooperation and the collaboration of efforts between individuals that come together to make a solid project.

Societies And Events

Taking care of what societies that University has, and what events it holds. Some Universities have job fairs, or big events for competitions. Make sure to get into something that gives you room to explore in these events. It doesn’t have to be all tech, what it should be, however, it should be about community building and engagement.

Show Off Your Projects!

The number one thing most university students are clueless about in their semesters are the projects that they want to work on. Some build very simple, done and dusted stuff, some like to go all out and do what they can, coming up with original, long, and big ideas, some lie in between.

But mostly, everyone shares the common problem of thinking of ideas in the first place.

And while that project may well for the grading side, it’s not something that students really show in their CVs and resumes because it isn’t that great.

But while the projects themselves can be simple, it gives your employers in the future more things to look at. For example,

  1. How quickly you were able to learn something and build something practical with it
  2. How creatively you can think about problems
  3. What approaches you took to counter your problems

But perhaps the most common dilemma is that people don’t show off their work.

Have a small project that you did for OOP or PF that worked with web development? Put it on your CV! Someone might be looking for a junior or intern web developer.

Good at networking and made a small example of TCP / IP protocols in your project? Put it on your CV! Someone might be looking for students who understand networking.

Made a small project for database that tried to emulate different distributed databases and such? Put it on your CV! Someone might be looking for a database engineer.

The point is, you never know!

Contributing To OSS

Contributing to OSS might be a good way depending on your field of interest to show others that you are a willing contributor and who wants to give back to the community. Contributing back to OSS means that you,

  1. Are able to understand and read code.
  2. Find it easy to expand with the ideas that other people have.
  3. Are good at communication and willing to talk and debate about different problems.

Q: I have to choose an FYP soon, how do I choose a project?

FYP holds a significant importance when it comes to learning and landing a relevant job. A few most important things to consider while choosing the FYP:

Relevancy

Since you are in the final year of your degree, you should already have an idea about what domain you would like to work with after you graduate. If you have a relevant FYP, it will help you learn practical knowledge about the domain. For example, picking a classification/regression problem with open data sets if you would like to work with data science in your career.

Realistic

Make sure you pick a project/topic which is realistic to be finished within the allowed time. It’s fairly common to overestimate your own/team’s capability to solve a novel problem which doesn’t work in the end. You are not expected to build state of the art solution in a bachelor’s FYP. Replicating an already built solution on different data/conditions or building applications on top of industry proven technologies are good ideas to be on the safe side in the evaluation.

Support

Make sure you have the support needed for whatever you are building. Choose the supervisor looking at their strengths and if they are able to help you build the project. Have regular meetings with them and set goals to make sure you are on the right track. Your supervisor gets paid for helping you so make sure they work hard to earn that money ;). You can also use the SDP group to ask questions from the seniors and have a mentor/supervisor outside the university.

Q: Is 4 Years Enough To Learn About Something?

4 years is definitely a lot from a growth perspective. Time comes and time goes, you might not be the best at everything you learn, and that’s completely fine. The point is to keep working on projects, keep trying to grow, and keep exploring and trying to grow your skillset. Not trying hurts, and it’s better that you try your best in something, even though it might not give you 100% of the results you expect, because at the end of the day, you will learn something while doing so.

To quote someone from Quora,

"Remember it is not the money which converts into competency…… It is the competency which converts into money."

Source

Q: Should I go for a masters degree right after graduation or is it better to have some experience before?

Some good insights here.

Q:Should only graduate apply for jobs?

Nope! You are welcome to apply and open up for internships as you keep growing. Most people do that in their junior year, and some talented folks even earlier.

Self taught programmers

Q:Is a university degree necessary for having a career in software development?

Software companies are running businesses, they don’t care if the candidate they are hiring has a degree in computer science as long as the candidate has the required skills and can help them with running the business. Relevant degrees look good on paper and tells the recruiter that the candidate has studied the relevant courses so that gives them an edge but this is as far as it goes. You can overcome that by taking relevant courses yourself or building hobby projects.

Q: What are some good resources for learning programming for a beginner?

Start from https://www.freecodecamp.org/ its a great resource to learn from. Also CS50 is an excellent resource for learning the basics of computing. Check out the Learning Resources file for a complete related list.

Q: I graduated with X degree but now I am interested in switching fields to data science and AI, how do I get started?

A: Three fundamental blocks that should be covered for data science are:

  • Maths (Linear Algebra, Calculus)
  • Probability and statistics.
  • Programming Fundamentals.

And that’s all you need. A basic understanding of all these is enough to get you going. However you can continue building these skills while you are learning machine learning.

Start from https://www.elementsofai.com/ and then move to Andrew Ng’s - Introduction To Machine Learning course. Also this is a good course for applied machine learning. Andrew’s course is more theoretical than practical, and FAST.ai's MOOC is really encouraged for those who want a good hands on as well.

Some machine learning components that you should have good grasp with:

  • Exploratory data analysis.
  • Data visualization
  • Feature Engineering.
  • Modeling
  • Validation, and cross validation.

However, Data Science itself is a very broad term. It can refer to someone who does

  • Data Engineering - constructing pipelines, taking care of the data organization in a company, granting, access, and modifying data schemas as a whole, and who is responsible for the in flow and out flow of data
  • Data Analysis Or Visualization - a section which attemptes at trying to make companies understand the trends in their data, either by easy visualization of numbers through charts, graphs, and other tools, or tries ot give people a quick understanding of the relationships between their different products and statistical measures.
  • Or someone who works heavily on improving the model quality, and working on improving the feature quality of the given data.

Want a quick overview of what tools we have? Take a look at the mini courses by Kaggle!.

When you are confident with your fundamental skills, go for solving challenges on kaggle. They will give you a good understanding about real world machine learning problems.

Q: What are some fundamentals every self taught programmer should know?

Generally it is expected in the industry that developers have a grasp in the following, irrespective of whether they have the degree or not.

  • Object Oriented Programming
  • Data Structures
  • Algorithmic analysis and complexity.
  • Git and Version Control
  • Relational Database Management Systems.
  • Good code practices, like, clean, easy to read code
  • Basics of working with a CLI

Career and growth

Q: How do I enhance my chances of getting hired as a programmer?

The following are some good resources to answer this:

Here are some fantastic pieces of advice from around the Internet:

  • Maintain and contribute to Open Source Software.
  • Use more than one programming language
  • Demonstrate more than one deployment type (web, cloud, desktop, mobile etc), specially early in your career.
  • Show your work in blogs and videos.
  • Don’t be a fanboy/girl.

Get into competitons. Try out Speed Programming if you like it! For that, you can try out

  • CodeForces
  • LeetCode
  • HackerRank
  • Codewars

Also Check:

How to enhance your chances of getting hired as a programmer.

How to get an internship?

Q: There are so many sub fields, which field should I choose for my professional career?

Make sure you know the basics of all the sub fields, and what is required of you should you choose one of them. Also Check this. Once you’re sure and find something fun and interesting, go ahead and learn further and pursue opportunities in it.

Q: How do I make sure I am on a growth track?

The field is continuously evolving, make sure you are always on the track of learning what’s going in the domain of your interest and updating your skills. Some good ways of doing that:

  • Subscribing to good and relevant newsletters.
  • Following tech leaders of the domain of your interests on twitter.
  • Following subreddits on reddit.
  • Having paid subscription for learning new technologies (eg: frontendmasters, safaribooksonline etc)

Also, check out this,

Q: I am a student, how do I improve my skills?

Don’t just watch lectures, but also apply the learning in your own projects. Start with replicating what the instructors are doing in the video lecture. After a while, when you are somewhat confident with your skills. Think of a small project, write some objectives for it and start building the project. You’ll hit many walls while doing that but the learning will be priceless fixing those problems.

Q: What are some good to know online resources/communities?

Here are some events or communities for students that you should definitely keep an eye out for.

  • Google Summer Of Code
    • An open source online event where students come together and apply to open source organizations to contribute to thme, while earning stipends
  • Google - Season Of Docs
    • For those who are interested in writing documentation
  • Github Education Pack
    • There’s no substitute for hands-on experience. But for most students, real world tools can be cost-prohibitive. That’s why we created the GitHub Student Developer Pack with some of our partners and friends: to give students free access to the best developer tools in one place so they can learn by doing.
    • Includes Heroku, GitKraken, Canva, Atom, Jamly, SQLGate, Travis CI, AWS Educate credits, Microsoft Azure credits … and more!
  • Oracle
    • As a student, you can join Oracle Academy directly as an Individual member and get direct access to benefits. If your school is an Institutional member, your teachers and professors can help you get access to discounts on Oracle University courses, Oracle certification exams and prep materials, and Oracle Press Books, to help advance your learning and demonstrate what you know.
  • Microsoft Student Partner
    • Student Partners are a global group of on-campus ambassadors who are eager to help fellow students, lead in their local tech community, and develop technical and career skills for the future. You might find yourself organizing a hackathon to solve the world’s toughest problems, mentoring fellow students, or unlocking the next great idea with your team — it’s all up to you.
  • Amazon Student Partner
    • Bring AWS Educate to your institution. Put the power of cloud learning in the hands of all instructors and students. By signing up as an AWS Educate member institution, your students and staff receive additional benefits, including more AWS Promotional Credit. Not sure if your school has joined? View our membership list.