What lots of students miss when they start software development
Join the DZone community and get the full member experience.Join For Free
Being a community leader at Dream.In.Code for over a year, I noticed an interesting trend. Lots of students who come for help with programming problems show little or no effort whatsoever in actually trying to solve a problem. We have hundreds (if not thousands) of people who come to our website for help, who also are studying Computer Science, Information Technologies and other tech-related subjects. It seems like there are too many of them who want solutions handed to them rather than try to research the problem on their own.
What's shocking is that people come looking for "final projects" that use biometrics, sound frequency detectors and other complicated algorithms when they clearly don't understand the basics of programming. The question that comes to mind is - what were they doing during college years? Of course, someone can blame the professors, but that's just an excuse. What one learns in college is the foundation and it's up to the person to expand that knowledge.
Given the situation, here are a couple of suggestions (derived from personal experiences handling similar situations).
Learning takes time
To learn a programming language it might take an indefinite amount of time - starting with a week and ending with 5 years. And by "learn" I do not mean become an expert, but rather get acquainted with the fundamentals in a way that a person is able to build a working piece of software (no matter how simple). Do not expect that you will be able to learn everything right before the final project - you will waste a lot of time for nothing. Start early and slowly move towards the final goal.
Nobody wants to give out complete solutions for free
No, seriously - with a "I want the next Facebook source code - I declared this as my final project" request, I can assure you that nobody will take on this project. More than that, nobody will take on this project for free - most of the requested solutions are quite complex pieces of code that take some time to build and test. Time = money when a developer has other stuff to work on. And this brings me to the next point.
Creating complex solutions is not easy
Creating a biometric identification system is not the same as writing a Hello World program - if that is the illusion, the person who has it got it wrong. Take a look at the current software market - how many large projects are developed and maintained by a single amateur developer? Let me know if you find one. It might take years to develop a decent solution and it involves people from different domains with different experience level and lots of hours dedicated to system design and testing. Understand what you can and can't tackle by the deadline.
Learn by yourself
The college curriculum is pretty cool, but on your own you can learn even more. Online communities, Q&A sites, books and user groups are great learning resources for technology-oriented students. I would recommend trying to learn something new (programming practices, facts about a platform etc.) every day and keep "in shape" by coding as much as possible (if coding is something the student likes doing).
Look at how similar projects are done
In some cases there will be open source solutions floating around the web that implement a similar algorithm or principle. The worst one can do is ignore those and try to build something from scratch with zero experience. It doesn't mean that the student should copy an existing solution, but it's always good when there is a possibility to see how an algorithm can be made functional or more efficient when you are stuck.
People are willing to help. Help, not do work for someone.
Taking the initial question ("I want the next Facebook source code - I declared this as my final project"), there will be people willing to help if the original poster described the problem he is having rather than ask for a handout. Instead of what's shown above, someone might say - "I am trying to build a small social network website and I am not entirely sure how to build the authentication system. I tried X but it failed - how should I approach the problem?" With such phrasing, a beginner is more than likely to find help.
With all this being said, as a conclusion read this: How To Ask Questions The Smart Way
Opinions expressed by DZone contributors are their own.