CompSci.ca/blog » Career http://compsci.ca/blog Programming, Education, Computer Science Fri, 30 Jun 2017 02:31:52 +0000 http://wordpress.org/?v=2.8.4 en hourly 1 (Important) Computer Science jobs are not outsourced http://compsci.ca/blog/important-computer-science-jobs-are-not-outsourced/ http://compsci.ca/blog/important-computer-science-jobs-are-not-outsourced/#comments Sun, 09 Jan 2011 21:58:31 +0000 Tony http://compsci.ca/blog/?p=979 I don't feel that intellectual outsourcing is about exploiting developing countries for cheap labour (as oppose to this being the case for physical labour; stereotypically for shoe factories). It's cheap pay for either low-skills at market rate, or cheap pay for poor quality "high-skills". There are high quality high-skill software developers in all of those countries -- they migrate to where the high paying jobs are (or start their own companies in their home countries). It doesn't seem like anyone is selling themselves short to get the jobs. It's just that in today's global economy, a failing company/department/project could make that final leap for the cheap options rather than folding right away. As I see it, those jobs would have been lost regardless of the outsource option being available or not. Related posts:
  1. More on the future of Computer Science Careers – outlook still promising
  2. Computer Science jobs for University Students
]]>
No, you may not outsource your homework to India.

Cartoon by Jeffrey Koterba

There still seems to be a lot of misinformation about the outsourcing of technical jobs. Strictly speaking, yes, some jobs are either moved or created in India, China, or a number of other places with people and relevant skills. At this point a distinction should be made between “moved” and “created” — both India and China are huge and rapid growing markets, and a lot of international companies want to expand and set up shop in those locations. Such activities create _new_ jobs, but I feel that some people lump it all together with the dreaded “moved” (true outsource) jobs when they see sensationalist headlines in newspapers.

So what kind of technical jobs move offshore? The general trend is “cost saving”, so it’s typically low-value/low-skill positions; call centres are popular, but also other levels of “support” positions. While support also falls into an incredibly broad definition of IT, lets assume that a pursuit of a degree leaves us with a higher level of skills. To be fair, when the management doesn’t have the understanding or the budget for a high quality development team, the entire department could be let go. If such was a software company, that company would have already been dead.

I don’t feel that intellectual outsourcing is about exploiting developing countries for cheap labour (as oppose to this being the case for physical labour; stereotypically for shoe factories). It’s cheap pay for either low-skills at market rate, or cheap pay for poor quality “high-skills”. There are high quality high-skill software developers in all of those countries — they migrate to where the high paying jobs are (or start their own companies in their home countries). It doesn’t seem like anyone is selling themselves short to get the jobs. It’s just that in today’s global economy, a failing company/department/project could make that final leap for the cheap options rather than folding right away. As I see it, those jobs would have been lost regardless of the outsource option being available or not.

Things might change in the future, but for now there are a number of software jobs that are guaranteed to stay local (for some definition of “local”) and high-paying:

Startup jobs — it’s you and 4 other guys building the next Facebook (at $50 billion valuation, we are partying like it’s 1999 again). Since just over a year ago, my favourite startup job posting site Startuply has more than doubled the number of companies that are _currently_ looking to fill positions. There is simply no room to cheap out on innovation. The same is actually true for any technology company that is trying to develop new products and lead its industry. Besides, it’s now easier than ever to start your own software company.

Just about any technology other than Java — offshore shops that aim to attract outsourcing business specialize in the lowest common denominator of the software industry, which happens to be Java. Ability to pick up on other languages opens up many new opportunities that might be immune to any outsourcing for years to come. This is especially true of emerging technologies, more so in the mobile space. Acquiring the skills, knowledge, and hardware to develop for the newest release of, for example, an iPad simply has very different economics than doing generic projects in the same technology, year after year.

High reliability jobs — there are just a few jobs that require one to carry a pager; they include doctors and software development engineers that make 6 figures per year. What if one of Amazon’s servers crashes and some pages become inaccessible at 4am? There’s absolutely no way that the responsibility to fix things _right now_ will fall on anyone who’s not getting paid high enough to get out of bed and start coding in the middle of the night. When the company’s online store sells up to 158 items per second (yeah, second), _any_ downtime is incredibly more expensive than $100,000+ salaries.

Along the same high-reliability/high-skill line of thought, Google has recently given out a 10%+ raise to the entire company (and some Engineers still leave to work for Facebook instead).

Having worked at both startups and major software corporations, it has always been the case that _everybody_ is always looking to hire. Many will even pay employee referral bonuses for simply pointing towards a candidate that accepts a job. An important note, of course, is that there’s a certain skill baseline that needs to be crossed to get hired. This is a matter of having the education, experience, and drive for high quality results. Above this quality requirement, there are more job openings than people able to fill them.

So sure, there’s some outsourcing happening in the industry, but the jobs that we really want — they have a pretty good outlook. In fact, the salaries and the hiring outlooks are so good, that CareerCast has named Software Engineer to be the best career for 2011 (up from 2nd place last year).

software_engineer_best_job_of_2011

P.S. “Software Engineer” is typically used in an American definition, where the term “Engineer” is unregulated. Meaning that any of Computer Science / Software Engineering / Computer Engineering degrees could lead to the same job. Feel free to pick a major that suits you best.

Related posts:

  1. More on the future of Computer Science Careers – outlook still promising
  2. Computer Science jobs for University Students

]]>
http://compsci.ca/blog/important-computer-science-jobs-are-not-outsourced/feed/ 2
Venturing beyond the office, with Computer Science http://compsci.ca/blog/venturing-beyond-the-office-with-computer-science/ http://compsci.ca/blog/venturing-beyond-the-office-with-computer-science/#comments Sun, 15 Nov 2009 08:08:31 +0000 Tony http://compsci.ca/blog/?p=873 There is this perception that a typical programming job involves being locked away in a grey cubicle at some LargeCorp Inc., buried in mediocre tasks, and rarely seeing the light of day. While this grim illustration is not exactly the case, there is some motive to such stereotype.

So we’ll be going on an adventure through on-site programming positions that are anything but typical. No related posts.]]>
xkcd's Interesting Life

xkcd's Interesting Life

There is this perception that a typical programming job involves being locked away in a grey cubicle at some LargeCorp Inc., buried in mediocre tasks, and rarely seeing the light of day. While this grim illustration is not exactly the case (or I was simply fortunate enough to avoid such fate), there is some motive to such stereotype. So just as a classic xkcd suggests:

“Quick, fashion a climbing harness out of cat-6 cable and follow me down.”

We’ll be going on an adventure through on-site programming positions that are anything but typical.

Inside a shipping container, in the middle of an ocean…

cargo boat

Original photo by cfarivar, reused from another boat post

The first location comes from the experiences of Reto Meier, who’s job took him out to sea — When Offshoring Your Development Team Means Buying a Boat.

By the time you realise their office isn’t exactly in Portland, you’re sitting in a 10′ sea container floating in the middle of the Indian Ocean pressing a button every 108 minutes.

It’s a pretty intense story, and is worth a read.

South pole

south pole station entrance

Original photo by µµ

How about the South Pole? The IceCube Neutrino Observatory has a job posting — just some requirements: Linux, security, Perl/Python/Java, and to “deploy to the South Pole in early October for 12-13 months with no possibility of leaving during the winter months from mid-February to mid-October”.

To be fair, the science is pretty amazing, and some people would jump at an opportunity to get close to this kind of research.

Race around the world

What about debugging C# “memory leaks” (or as close as one can get to such in a managed memory language) in Mojave desert, during DARPA’s Grand Challenge?

Or racing to the clouds with an autonomous Audi in a Pikes Peak International Hill Climb?

As Universities and research groups push autonomous cars to their limits, various races and challenges will take the technical teams throughout the world.

Out of this world

NASA STS-127 mission

STS-127 mission, via TopTechWriter.US

The sky isn’t even the limit. Julie Payette, a Canadian Computer Engineer, has “conducted research in computer systems, natural language processing and automatic speech recognition”. She has then gone to space. Twice.

In 1999 Julie has gone on STS-096 as a crewmember to operate the Canadarm robotic arm. In 2009 she has gone on STS-127 as the flight engineer, operating robotic technology.

Scott Maxwell has gone from writing software to driving the Mars rover. Not really on-site, but “it’s the greatest job on two planets.”

No related posts.

]]>
http://compsci.ca/blog/venturing-beyond-the-office-with-computer-science/feed/ 4
Computer Science jobs for University Students http://compsci.ca/blog/computer-science-jobs-for-university-students/ http://compsci.ca/blog/computer-science-jobs-for-university-students/#comments Wed, 30 Sep 2009 05:05:02 +0000 Tony http://compsci.ca/blog/?p=795 I’m often asked about available jobs for Computer Science students. More so in light of the recent economic downturn. A new trend that I’m observing, since 2 years ago, is that there is a substantial increase of job postings from much smaller start-up companies.

Economic hardship breeds innovation. It puts large corporations into a compromised position, and that opens up an opportunity for small, agile, smart, inexpensive, but super-productive startups to come into play and compete with established corporations. Related posts:
  1. Computer Science enrollment trends
  2. (Important) Computer Science jobs are not outsourced
  3. More on the future of Computer Science Careers – outlook still promising
]]>
Software jobs posted to U Waterloo

Software jobs posted to U Waterloo

I’m often asked about available jobs for Computer Science students. More so in light of the recent economic downturn. An interesting point to reflect against is a benchmark from 2007 when “950 Computer Science related jobs” were advertised to the University of Waterloo students. This Fall’s 782 seems lower than pre-economic-meltdown numbers, but a lot of large corporations now group multiple positions into single postings. RIM alone has 100+ student positions advertised over just 3 posts. So it’s difficult to compare those numbers accurately.

Other technology power-corporations (Google, Microsoft, Amazon) continue employing students as well.

A new trend I’m observing, since 2 years ago, is that there is a substantial increase of job postings from much smaller start-up companies, as well as not-so-small ex-startups (Facebook in particular had a few different positions advertised).

Economic hardship breeds innovation. It puts large corporations into a compromised position, and that opens up an opportunity for small, agile, smart, inexpensive, but super-productive startups to come into play and compete with established corporations. Unconvinced? Today Startuply is listing “1375 jobs from 1293 startups”, and I’ve noticed some of them cross-listed on Waterloo’s job website, specifically looking for students. Quality software always needs to be build, and Computer Science students who do their craft well are “pretty much guaranteed an interesting job, that actually does something useful to society”.

Alternatively, there is always grad school.

Unemployment rate vs. Grad School enrollment

Which I might or might not be considering. Hint: I am. Though with so much opportunity for interesting work, it will be a difficult decision to make.

Tony's tweet

Related posts:

  1. Computer Science enrollment trends
  2. (Important) Computer Science jobs are not outsourced
  3. More on the future of Computer Science Careers – outlook still promising

]]>
http://compsci.ca/blog/computer-science-jobs-for-university-students/feed/ 9
Blocking students on school network is wrong http://compsci.ca/blog/blocking-students-on-school-network-is-wrong/ http://compsci.ca/blog/blocking-students-on-school-network-is-wrong/#comments Mon, 27 Oct 2008 03:08:42 +0000 Tony http://compsci.ca/blog/?p=713
"I think this is one of those problems that does not need a technological solution, but a social one." No related posts.]]>
Just because we might have access to some technology to fix a problem, does not necessarily mean that the problem itself is a technical one. Sparked by a forum conversation, the key example is the use of technology to filter out web content in a classroom. Asked for is, perhaps, the technical prevention side of the previous discussion of wireless in classrooms. Dan pointed out the flaw with that plan:

Really it should be the teacher stopping their students from playing youtube videos out loud in class and disturbing other students.

I think this is one of those problems that does not need a technological solution, but a social one.

There are many layers to block network access

There are many layers to block network access

There are a lot of obstacles that could (and often are) put in place between users and their desired network accessible content. Some are legitimate security measures aimed at protecting the network. Others are roadblocks that annoy users more than prevent whatever has prompted the measure.

One of the most ridiculous “security measures” I once saw on some system was that the right-click of the mouse was physically disabled. The sys-admin must have disassembled the mice and popped off the plastic extension that clicks.

While well though out network rules are possible, it seems that more often that not the systems are simply crippled in a blanket policy of “just don’t do anything, ever”. There will be a locked down kiosk mode browser with broken settings; to ensure that everyone uses only this (very inconvenient) browser, the installation of any other browser will be forbidden… the same enforcement will also prevent the use of any other legitimate software, as a side effect. Soon enough the entire system is a crippled fraction of the former self, all because some student was watching YouTube videos. This is excessive. Everybody suffers.

While complicated systems could make it just that much harder for the students to get around them, perhaps the root of the problem is in the fact that those students are aiming to get around all this technology in the first place. In such a case, throwing more technology at the problem only masks its symptoms.

No related posts.

]]>
http://compsci.ca/blog/blocking-students-on-school-network-is-wrong/feed/ 21
You don’t know that programming language http://compsci.ca/blog/you-dont-know-that-programming-language/ http://compsci.ca/blog/you-dont-know-that-programming-language/#comments Mon, 09 Jun 2008 01:36:28 +0000 Tony http://compsci.ca/blog/you-dont-know-that-programming-language/
  • Looking back at working with PHP
  • Ruby – best introductory programming language
  • The most important programming language
  • ]]>
    a variety of programming language books
    Original image by cote

    Or maybe you do? How about your favourite programming language? What does it take to say that one “knows” it?

    michaelp asks:

    When exactly do you “know” a language?

    There’s a gradient of choices to pick from.

    1. You know of the language“I hear they call it Java.”
    2. You’ve memorized the “hello world” program<?php echo ‘Hello World’; ?>
    3. You know something unique about the language“Ruby has closures, but Java does not.”
    4. You have all of the documentation memorized — because looking things up is much too slow.
    5. And just to get to the other extreme, you wrote a compiler for the language… in itself. (That’s actually not rare, and is termed bootstrapping.)

    So what does it take for a programming language to make it onto a resume? Apparently not much, if you are a student. “Know” is more like “know of”. Though perhaps that is fair enough. A lot of skills are transferable, and it’s quite easy to pick up on new languages with similar paradigms. I’ve done this myself before:

    Even though I had no experience with PHP or Oracle, I was fairly familiar with Ruby and MySQL. My job offer relied on the claim that such web development is logistically similar, having substituted Ruby documentation for PHP.

    Dan agrees.

    I don’t think “knowing” a language is any where close to as important as knowing the concepts of computer science and software engineering. Once you have a good grasp of the basic and more advanced concepts, changing languages is trival and becomes easier with the more experience you have.

    So perhaps it would be more honest to focus on what really matters — algorithms, design patterns, etc. Memorizing the syntax / API will let one type out that bubble sort faster, though that arguably demonstrates the lack of knowledge that matters.

    I recall the first drafts of my resume, as I’ve started out in co-op at University. I’d list a dozen different programming languages that I knew of. Now I would probably list none. That is not to say that I have unlearned things over the years but, on the contrary, that it’s true that the more you know, the more you realize of how little you know in the grander scheme of things.

    So, with a few exceptions, I don’t think one gets to “know” a programming language. I also think that this shouldn’t matter.

    Related posts:

    1. Looking back at working with PHP
    2. Ruby – best introductory programming language
    3. The most important programming language

    ]]>
    http://compsci.ca/blog/you-dont-know-that-programming-language/feed/ 45
    Cool Tech Jobs: Driving the Mars Rover http://compsci.ca/blog/cool-tech-jobs-driving-the-mars-rover/ http://compsci.ca/blog/cool-tech-jobs-driving-the-mars-rover/#comments Tue, 25 Sep 2007 04:48:05 +0000 Tony http://compsci.ca/blog/cool-tech-jobs-driving-the-mars-rover/ Mars Rover

    Computers are integral to everyday life, though the understanding of the variety of jobs available in the field is sometimes impaired by a few persistent stereotypes. It’s not all raw programming and data crunching. There are interesting technology jobs as far out there as a rover on the surface of Mars. That someone gets to drive! From the PC World article just about this:

    So if you try to drive it like a radio-controlled car or a slot car … nothing would happen on the rover for at least four minutes until the commands reached Mars. Because of that delay, by the time you see a cliff coming, you’ve already driven over it because what you see already happened in the past. As a result, we don’t drive them that way.

    Instead, there’s a driver team that puts together a plan, runs it vigorously through simulations, and sends the instruction set once per day. It’s interesting to point out that a critical piece of the process, the simulator, is run on a Linux PC. Though really, I wouldn’t have expected anything less.

    Cape Verde Panorama

    The Mars exploration produces some spectacular results, such the panorama of Victoria Crater as seen from Cape Verde (above).

    “I get up and I go to work and I drive a rover around on another planet. It’s the greatest job on two planets.”

    Of course this ultimate remote control “toy” may not be appealing to everyone. So what are some other interesting jobs that are not typically associated with Computer Science, Engineering, or any related degree?

    No related posts.

    ]]>
    http://compsci.ca/blog/cool-tech-jobs-driving-the-mars-rover/feed/ 2
    Computer Engineering and You http://compsci.ca/blog/computer-engineering-and-you/ http://compsci.ca/blog/computer-engineering-and-you/#comments Wed, 19 Sep 2007 14:00:10 +0000 Brandon http://compsci.ca/blog/computer-engineering-and-you/
  • 6 Degrees of Computer Science
  • Computer Science at Ryerson University
  • Choosing between Computer Science and Computer Engineering
  • ]]>
    tweaking with server hardware

    Since the tender age of four, I have always been in awe with technology, especially computers. They have been an integral part of my life. I am positive I was not alone when I said, “I would like to do something with computers when I grow up.” And through searching and various single-day research expeditions into the internet, I’m sure we’ve all come up with a single, ominous answer: Computer Science. However, me being the sh** disturber that I am, I will attempt to turn your beliefs upside-down. Try to convert the heathens, so to speak, to a little discipline I like to call Computer Engineering.

    What is Computer Engineering?

    Computer engineering is defined as the discipline that embodies the science and technology of design, construction, implementation, and maintenance of software and hardware components of modern computing systems and computer-controlled equipment. Computer engineering has traditionally been viewed as a combination of both computer science (CS) and electrical engineering (EE). It has evolved over the past three decades as a separate, although intimately related, discipline. Computer engineering is solidly grounded in the theories and principles of computing, mathematics, science, and engineering and it applies these theories and principles to solve technical problems through the design of computing hardware, software, networks, and processes. This makes Computer Engineers particularly versatile upon graduation.

    How do I become a Computer Engineer?

    With the ubiquity of computers and computer-based systems in the world today, computer engineers must be versatile in the knowledge drawn from standard topics in computer science and electrical engineering as well as the foundations in mathematics and sciences. Because of the rapid pace of change in the computing field, computer engineers must be life-long learners to maintain their knowledge and skills within their chosen discipline. The education for Computer Engineers can be broken up into:

    • Algorithms
    • Computer Architecture and Organization
    • Computer Systems Engineering
    • Circuits and Signals
    • Database Systems
    • Digital Logic
    • Digital Signal Processing
    • Electronics
    • Embedded Systems
    • Human-Computer Interaction
    • Computer Networks
    • Operating Systems
    • Programming Fundamentals
    • Social and Professional Issues
    • Software Engineering
    • VLSI Design and Fabrication
    • Discrete Structures
    • Probability and Statistics

    Just from this information alone, it is quite evident that one would receive quite a well-balanced education in all things computer and technology. Which is the goal of Computer Engineering: to create individuals able to stay in sync with recent technological developments pertaining to their field. Of course, a Computer Engineering degree program is completed at an accredited university. However, these programs vary, and I would suggest checking out your university of choice to get the specifics on the Computer Engineering program besides the core curriculum(above). If you would like to register as a Professional Engineer(P.Eng), you should consult your regional regulations, though being a Professional Engineer is not required to work, and in my opinion, pertains more to the other engineering disciplines.

    What do Computer Engineers do?

    iPhone taken apart

    First off, a Computer Engineering degree is compatible to a Computer Science degree. So, you can get any sort of programming or developer or software engineering job that a Computer Scientist could get. Now, since that’s all cleared up, we’ll move into the jobs that are more exclusive to Computer Engineers. These generally involve hardware or hardware-software integration. This can be from making various components for personal accessories (such as that pretty iPhone) to programming firmware or both together. If you look up to our core-curriculum list above, you’ll see what a Computer Engineer is taught, and most of the objectives pertain to a job. Basically, anything that involves applying computer systems to solve a problem is a job for a Computer Engineer. Whether it be working for Google on that next hit web application or at Intel working on that new microprocessor, Computer Engineers are there.

    Computer Engineering vs. Computer Science

    computer mice facing off

    By now, you have an idea of what Computer Engineering is, hopefully. Since you are viewing this Computer Science blog, I do assume you know what Computer Science is. Without further a due, the comparison between Computer Science and Computer Engineering shall begin.

    Computer Science has a pure focus on the theory and application of computation. It is generally focused at the more abstract ideas, and focuses on how computation should work and so on.

    Computer Engineering uses aspects of Computer Science and Electrical Engineering to solve problems. This is the more “practical” option. It focuses more on the concrete ideas, such as how things actually work.

    Basically, if you are more interested in theory and the application of that theory, Computer Science is your choice. If you are more interested in building things and applying everything you learn into a practical setting, Computer Engineering is your choice.

    If you wish to read more on the differences, I recommend this discussion.

    Conclusion

    It would have been quite impossible to include everything on this subject, even just my own opinions and such, on a blog post. However, I feel that I have covered some basic points to spark interest in some people. But, all of you have the opportunity to read up on Computer Engineering and compare it to Computer Science, if you so desire (see the bottom of the post for the main resources I used).

    ———

    Time for a bit about myself. My name is Brandon Skinner, and I am from Newfoundland, Canada. I have been programming since the tender age of 10, and I have branched off in ways I never thought possible. Personally, I will go to university for Computer Engineering. However, I am interested in all aspects of Functional Programming, as well as many AI topics. I do feel that Computer Engineers don’t get the respect and admiration they deserve. Their skills allow them to use their understanding of the underlying system and of algorithms and such to create some crazily efficient code. I know this for a fact, as I did work in the Assembly language and low-level C for quite some time, and the things you can do and control are amazing. I can only wonder what a professional could manage.

    ———

    References made to IEEE Computer Society:



    Computer Engineering related degrees
    compare Computer Engineering with related fields in 6 Degrees of Computer Science.

    Related posts:

    1. 6 Degrees of Computer Science
    2. Computer Science at Ryerson University
    3. Choosing between Computer Science and Computer Engineering

    ]]>
    http://compsci.ca/blog/computer-engineering-and-you/feed/ 20
    For an enjoyable co-op work term experience… http://compsci.ca/blog/for-an-enjoyable-co-op-work-term-experience/ http://compsci.ca/blog/for-an-enjoyable-co-op-work-term-experience/#comments Thu, 13 Sep 2007 07:06:31 +0000 Tony http://compsci.ca/blog/for-an-enjoyable-co-op-work-term-experience/ This article is intended both for employers to boost student’s moral and productivity, and for students to enhance their co-op work term experience with promises of the same.

    A lot of Universities now offer co-op variations of their programs, especially among the Engineering and Computer Science degrees. My University tries to answer some common questions in their about pages.

    What is co-operative education?

    Co-operative education is an educational model that formally integrates academic studies with relevant work experience. Co-op students alternate terms of school and work in appropriate fields.

    startup office

    A startup office I worked at.

    So similar to an intern position, though usually limited to a 4 months period (or rarely a multiple there of) and a student could be as young as in their first year of studies. There are many advantageous reasons to be a co-op student and to hire co-op students, but this article assumes that both parties are in the know. Now that a student is in the office, there are a few things that could make the experience better for everybody.

    1. Competitive salary – one of the leading reasons for hiring students is that they are considerably cheaper than full-time staff. Though paying minimum wage will result in minimal results. Here’s some basic math – if a $20/hour co-op student completes work in 3 times as long as it should, but otherwise the same work would have had to be done by a $60/hour developer instead – the employer still breaks even!
    2. It’s the little perks that count – students are especially receptive to small occasional bonuses in forms of food or drinks. Look for small, rewarding, investments. A $40 coffee machine that was bough for me during my last work term (I’ve asked for it during an interview) easily had the greatest Return on Investment for the company!
    3. Interesting work – students are here to learn and to get practical experience. Find out what the student is interested in. An occasional exciting assignment can easily counteract the onset of boredom from monotonous tasks. Tip for students: you can usually just ask for more work that you enjoy doing.
    4. A part of the team – co-op students want their work terms to matter. Just because they’ll be gone in 4 months, doesn’t mean they can’t contribute well to the team effort. A more comfortable relationship with other developers promotes cooperation – it’s easier to share ideas and get things done faster.
    5. Meaningful work – similar to the one above, it’s nice when the userbase consists of more than one person. More responsibility leads to more effort. It’s simply nice to actually care for the work done.

    Not a complicated list. Co-op students are a competitive bunch that like to show off, otherwise they are not that different from the full time developers. Probably for a good reason, students are real people too!

    There is a mutual understanding that a co-op work term involves learning and gaining experience. Though also, given a right opportunity, a student would demonstrate the best abilities. Unless, of course, the objective is to get away with the least amount of work possible – but that’s what the interviews are for.

    No related posts.

    ]]>
    http://compsci.ca/blog/for-an-enjoyable-co-op-work-term-experience/feed/ 4
    My job is more addictive than Facebook http://compsci.ca/blog/my-job-is-more-addictive-than-facebook/ http://compsci.ca/blog/my-job-is-more-addictive-than-facebook/#comments Sat, 28 Apr 2007 21:14:38 +0000 Tony http://compsci.ca/blog/my-job-is-more-addictive-than-facebook/ Recently I was asked as to why I was not available on IM or other forms on online social communication mediums, during the work hours. My initial response of “it’s distracting from work” was not met with any understanding. I have thought of quoting a good practice of checking one’s email when one has time for it, not have it pop up on screen, as to not break the zen like state of programming. It soon became apparent that I simply had a different perception of what “work” is.

    Jessica Hagy of Indexed has put things into a nice perspective.

    Tony on Work vs Play graph

    I’m an amateur programmer, I write code for fun, but I also get paid well – for a computer science student. I love my work! I am lucky enough to work with Ruby and Rails. I’m finally getting to figure out AJAX, and more in-depth JavaScript. All this Web 2.0 awesomeness contributes to the “oh, it’s 6pm already? I guess I should go home now…” type of reaction, instead of packing up at 4:55. There is an overwhelming feeling of accomplishment when my code begins to work as it should, and once more when I put the task paper back on the wall, marked with an all done sticker. Alright, I’ll check for your email now.

    Though it seems that not everybody is as fortunate, and it appears to be especially bad for many students. Lacking experience and educational credentials, there is little room to be picky about jobs. Some companies worsen the problem by advertising positions through Universities, but are really looking for cheap, disposable labour. Last year I met 4 students from my University (Mechanical and Mechatronics Engineering) who all worked on synchronizing AutoCAD drawings with database data – apparently it’s cheaper to hire a bunch of students than to invest into a piece of software that does the same thing.

    In the above example, the guys got as much Facebook experience as they did of technical AutoCAD. Alright, I can see them wasting the day away, chatting to other bored students who don’t particularly care for their Quality Assurance tasks.

    Clearly they are in the wrong field. You’ve got to do what you love. Now that I’m here, I can continue on improving my salary with more experience, finishing my undergraduate degree in Computer Science, etc – though not at the expense of enjoyment of what I do. I suppose everything has its price, but I will not cross to the left of the Professional-Amateur line. So that’s why I am not on MSN or Facebook during the day – it’s distracting from what I want to be doing. I might check Digg’s technology/programming sections though.

    So where do you find yourself on the graph, and how do you plan on getting to where you want to be instead? Reply with a comment!

    No related posts.

    ]]>
    http://compsci.ca/blog/my-job-is-more-addictive-than-facebook/feed/ 10
    Software startups: success and failures http://compsci.ca/blog/software-startups-success-and-failures/ http://compsci.ca/blog/software-startups-success-and-failures/#comments Fri, 30 Mar 2007 00:40:28 +0000 Tony http://compsci.ca/blog/software-startups-success-and-failures/ Professor Larry Smith

    Larry Smith, the most influential professor I’ve had a pleasure of taking a class with, lectures on economics, and acts as an advisor for many University of Waterloo startups. Being an innovative university that it is, there is no shortage of, at least, attempts at entrepreneurship by knowledgeable and passionate students. Filled with stories of experience from both successful startups and failed ventures, Prof. Smith gives talks with advice for essential steps and common pitfalls.

    A 40 minute video: UW Software Start-ups: What Worked and What Did Not is available from the University of Waterloo’s Computer Science Club.

    A discussion of software start-ups founded by UW students and what they did that helped them grow and what failed to help. In order to share the most insights and guard the confidences of the individuals involved, none of the companies will be identified.

    Efficacy

    One of the main points necessary for a successful startup is the ability to demonstrate efficacy. Be able to demonstrate your capacity to produce the desired effect. One might be full of absolutely brilliant ideas, but they need an effective demo to attract clients and investors.

    Partners

    The other point is that one should not venture alone. You could, but it’s a really bad idea. You need a partner to tell you – “Dude, this is the stupidest idea you’ve had in your whole life”. Others might be saying that all the time, but a partner who actually knows what you are doing and where both of you are heading is an essential reality check. Also, a startup’s workload is often too much for a single person. As an added bonus, investors prefer to see teams, instead of putting money into a one-man-show that is not could-get-hit-by-a-bus proof.

    Communication

    Communication, or rather lack of networking skills is the major pitfall of many startups. People are different, unpredictable, and could even come across as creepy. Yet a face to face communication is required to obtain clients, secure investors, and establish deals. Learn, practice, “go to parties” if you have to. This goes back to the point of demonstrating what an awesome new thing you can do. And building up a network of contacts required to succeed.

    Lawyers and Accountants

    Don’t be your own lawyer. Don’t be your own accountant. Don’t let your buddy’s uncle act as either. Those things are important, and it is essential to find a good fit to secure the startup, especially from the legal point. In a couple of dramatic stories that Larry Smith presented, some ventures established with a few fellow students and no legally recognizable bindings. Those startups have hit all the above points to come to an enormous success, promising the realization of student’s dreams… but ended in a burning crash when, with no legal obligation, one of the “partners” simply disappeared with all the source code.

    Even Google with their high salary, free food, and other perks doesn’t compare to the feeling of burning through millions of dollars of venture capital, working on creating your own vision. It’s the difference between being an employer and employee. Doing so before completing an undergrad degree, for massive bonus points, is possible – just mind the common pitfalls.

    No related posts.

    ]]>
    http://compsci.ca/blog/software-startups-success-and-failures/feed/ 7