Hi, I hope that this isn't too OT for this list and I wish that if you find it useful you will forward it to as many students, friends you can.
It has been a while since I have talked with students. But, when I used to, a constant refrain was "Will this Free Software thing get me a job ?" Since it usually came at the fag end of a long drawn Q+A session, and, keen as I was to avoid trampling on the goodwill of those who hosted me, the quickest response was "Sure, just look at the number of folks who consume FOSS components". The truth is, this FOSS thing won't help you get a job. Period. What will get you a job is how much you actually learn. I work at a small Open Source company. We recruit software engineers and developers. We don't recruit as much as I would like to, but I see enough freshly minted software engineers to be jolted into writing this. There are two basic things that need to be comprehended before we begin a discussion about FOSS, jobs and career. One, any language is built up on constructs, grammar and rules. Two, Free Software is a 'science'. Let's take the last statement first. If 'science' is defined by the ability to take a set of steps and given similar conditions ending up with the same result, then by a somewhat stretched definition of 'science' you will see that FOSS development is science. It requires access to the source code, a knowledge of the options to build software and mandates that the output and raw materials are subject to peer review. Curious isn't it. And, it might be a somewhat refreshing change from the 'Free Software as a restaurant' concept that you will read at various places. So, to develop FOSS components we need a model of software development. That's fairly self evident here - collaboration using various tools and infrastructure. Constant communication leading to a set of improvements. But, where is the code part in all of this ? Hmm... there comes the language, grammar, rules and constructs bit. In this case, if you forget your <insert_your_favorite_programming_language> aspect and focus on your mother tongue - the way you grasped it and became proficient was about learning the atomic building blocks, progressing to more complex grammar and thereupon to rhetoric. It isn't too difficult when it comes to becoming proficient in a programming language. Put particular emphasis to the atomic building blocks and fundamentals. And, once you are fairly confident of taking advanced steps, use the power of access to source code (provided by the Open Source model of software development) to learn about coding in real life. There will be companies which will test you for your aptitude, emotional quotient and what-not. However, at the end of the day what they expect is a more-than-adequate grasp of programming fundamentals and an appreciation of the project complexities of 'real life projects'. And, an awareness of such complexities can come if you have been mucking around code-bases that are large, complex and sometimes fast moving and unwieldy. Thus, you will notice that will your academic training provides you with the knowledge to 'write' code, the discipline of a good software developer comes from keeping a lookout on the 'implementation' aspect of the academic exercises. Trivial example here. The curricula mandates that you learn about data structures and prescribes certain books and the like. However, the actual implications of using various 'like' data structures or, an appreciation of the trade-off between algorithms would come if you start looking at code beyond what is provided by the syllabus. And, such an effort would stand you in good stead irrespective of which company you aspire to join or, what programming language you intend to become a master at. Having a scientific temper - the ability to grasp the core of the problem, figure out a pattern to search and adhere to some logical (and sometimes illogical) reasoning is what will get you a job. Cultivating such a thing is possible within the scope of your syllabus and within the time constraints provided by the semesters and your social life. Have fun, Sankarshan _______________________________________________ Users mailing list [email protected] http://lists.dgplug.org/listinfo.cgi/users-dgplug.org
