All pastes #2075574 Raw Edit

Something

public text v1 · immutable
#2075574 ·published 2011-06-06 14:02 UTC
rendered paste body

   1. Can you provide a specific description and title of your work.  How long you have been doing it?

I am a software developer.  I have been making software since I graduated from university 13 years ago, and it has been a lot of fun!  I design, implement, and test software.  Sometimes I gather requirements that affect the design of the software.
Specifically I was mostly writing middleware software that mediated between simulations and military systems.

   2. Can you describe your workplace?

Well, right now I'm unemployed, so I'll tell you about my last workplace.  It's an office environment where everybody has their own cubicle.  The lucky people have a cubicle near a window.  There are meeting rooms for when I need to talk to a co-worker without disturbing people in the other cubicles.  Whiteboarding happens in the meeting rooms.  There are only 10 cubicles or so, but I have worked in office buildings with hundreds of cubicles.

   3. What are the typical working conditions of this job?

The typical working conditions are 7.5 hours a day, with stat holidays off.  I get paid by the hour (the alternative is to be paid a salary).  Every office has "core hours" which means I am required to be there at certain hours; but beyond that I like to come in early for 7am so I can leave early around 3pm.  A typical day will be mostly sitting at a desk, with maybe a few meetings interspersed throughout the day.

   4. Are there any health or safety risks?

The health risks are mostly ergonomic.  Sitting down so often can cause back problems.  Typing a lot can cause carpel tunnel syndrome, or repetitive stress injury.  In the past I have set a "typing break" on my computer that forces me to stop typing; so that I can get up and stretch my limbs and shake-out my hands.  I don't know of any safety risks.

   5. Where do you work now (or most recently)/ Why did you become interested in this job?

I am currently unemployed, but most recently I worked for a company called ADGA.  ADGA is a staffing company, and through them I was employed with the Department of National Defense as a contractor (the alternative is a civil servant).  I became interested in the job when the contract I was on got passed from another company I worked for, to ADGA.  This happens from time-to-time to allow the government to save money.  I originally took up contract work because the pay was very good.


   6. How difficult is the job? Do you enjoy it?

The job wasn't too difficult -- probably because I had been working in the same organization for about 10 years.  I enjoyed it but it wasn't difficult enough.  Challenging and interesting work in the software development field can be hard to find.  I enjoy writing software so much that I also write it in my spare time.

   7. Are there any specific skills or educational requirements that would be useful?

This is hard to describe, but one of the most important skills is knowing how to decompose a big problem into a set of small problems.  Another important skill is to know how to name things like variables, methods, functions, classes and files.  These two skills/activities bring a lot of enjoyment when done correctly!
And lastly troubleshooting (or debugging) requires a skill of thinking like a computer -- being able to look at code and comprehend what the aim of the code is, versus what it is actually doing.  I don't know anybody who enjoys the activity of debugging, but every good programmer is a good debugger.
Specifically, learn about programming languages (like C, shell, and python).  Learn about compilers and interpreters.  Learn about pointers and memory.  Learn how to operate an editor -- as a software developer you often spend all day running an editor.  Editors like vim and emacs will seem hard to use and archaic at first, but then will become indispensible, and part of the fun of developing software.
Lastly I'd like to reiterate that the most important skill is knowing how to critically decompose a big problem into a set of small problems within a rather large set of constraints.  It has to be implemented in a programming language; it has to interface with somebody else's code; it has to be able to run quickly and without errors, and so on.
This is the skill that we never stop learning.

   8. What is the biggest challenge doing your job?
Developing software requires large amounts of dedicated time.  The biggest challenge can be obtaining a large enough contiguous block of time (3-7 hours) required to write code or debug a problem.  Meetings are rarely set with this fact in mind; and it can be difficult to "get back into the zone".  Maintaining concentration on the task at hand in a world of distractions is definitely a big challenge.
Another big challenge is to get the software done on time and without bugs.  It's a sad fact that most software is usually late (but not MY software of course); so it's definitely a big challenge to finish on time, especially if I'm working on several different pieces of software simultaneously.

   9. Are there any particular highlights of your career that you can share?

One memorable highlight was when I saw a newspaper advertisement for some software I made!  My first job was creating email-to-pager software for Cantel (now part of rogers I think).  I saw an ad for "email2go" and I was on cloud nine; because this was something I could point to and say: I made that.

Another highlight was when I pulled an all-nighter on an army base in the United Kingdom working on software that had to work by the morning.  The middleware didn't work due to version incompatibilities with a connected piece of software, and had to be completely rewritten.  It's a highlight because I overcame extremely tight timelines, and through sleuthing and critical thinking, I solved the mystery of how that other connected piece of software was operating.  It was a huge challenge that I overcame, and it was an exciting time!


   10. What advice would you give to a young person interested in pursuing a
   career in your field of work?

Write lots of software.  Write it in a real editor (not notepad).  Start out with small programs, and then write bigger programs.  Learn how to maintain your concentration for hours at a time.  Don't start projects that are too big to complete.  Write in more than one programming language.  Try to find a programming language that you like more than the others.  Write software even if it's already been written by somebody else.  But try to write software that hasn't been written by anybody else (make it unique somehow).  Get a degree in computer science.  Find the fun in writing computer software; it will serve you well in your career.