PDA

View Full Version : Questions about a career in Computer Programming



Dartus
October 28th, 2005, 04:18 PM
I have an assignment in one of my classes to interview someone in career I wish to pursue. If you can’t guess, I want to get a job as a computer programmer. :p
I thought on how to do this and I decided that this forum is perfect to ask these questions; since this place is the friendliest community I have ever seen on the net. I am sure I’ll get the answer I need here.

Anyway, only answer these questions if have or had a paying career in programming. You can PM me if you want. Thanks for your time. :)





Where do you work?
What are you main tasks or responsibilities at work?
What kind of education, training, or other preparation do you need to get into your job?
How did you get into this career?
What personal characteristics are required for someone to be successful in your career?
What is your preferred computer language? Why?
What do you like most about this career?
What do you dislike most about this career?
What the coolest thing that happened to you during this job?
What advice do you have for someone who wants to get in this career?

Pathogenix
October 28th, 2005, 05:38 PM
Where do you work?
I work at a tiny little eensy-weensy company which is now down to two coders from an all-time high of three. It's cosy.


What are you main tasks or responsibilities at work?
I code, I swear, I fix databases. I worry late at night about the state of our refactorings, I tell The Boss "no" when he asks the impossible.


What kind of education, training, or other preparation do you need to get into your job?
Usually either a degree in a related field, or a lot of luck and a good interview technique.


How did you get into this career?
I got a job hand-coding HTML for below minimum wage, moved on to ASP, moved on to .Net. In my spare time I hack around in Python, LISP, C(++), Java, and I'm interested in learning Assembly.


What personal characteristics are required for someone to be successful in your career?
Ooh... good one. Um... You have to be a perfectionist, but not too much of a perfectionist or things will never ship. You have to be able to take criticism of something you have slaved over and thought wonderful. You have to be able to criticise other people's work without getting personal. You need a very clear-eyed view of your own abilities and strengths or your ego will lead you into dangerous waters. You have to be able to scale your view of something from a single line of code up to a million line application and be able to organise your ideas in such a way that this is possible.


What is your preferred computer language? Why?
I think in ECMAScript - the first language with which I fell in love, it's actually a much nicer and more elegant language than people think.

I like C# - Java with the benefit of hindsight - and Python just makes me gooey whenever I get chance to use it.


What do you like most about this career?
I'm kept learning. I spend all my time solving puzzles or proof-reading: what could be better for a geeky pedant?


What do you dislike most about this career?
Working with people who don't get excited about programming. There is nothing more depressing than picking through sloppy, half-finished work to find priority bugs when you don't have time to fix it all. I dislike the mismatch between management thinking and coder thinking because it can lead to "misunderstandings" around deadlines.


What the coolest thing that happened to you during this job?
Um... I caused a minor revolt at my last place of work by sticking to my guns and refusing to admit that the third-party product they were basing their business model on wasn't crap.
People left, arguments were had, salespeople came and went (and agreed), and I had a wonderful time doing nothing more than discussing the technical merits of the code in plain and unambiguous language.
I was there for about 3 months and then left, remaining on their payroll as a consultant for twice the money. Bonus.
I'm not really proud of myself but ye gods it felt good.


What advice do you have for someone who wants to get in this career?
Always remember that computers are stupid. If they can understand code, I'm damned sure you can.
Don't trust yourself, or you'll screw up - 90% of good practice is learning to avoid silly mistakes. When you do make a stupid mistake, write it on a post-it note and stick it to your monitor.
If you study at a university (I didn't) then code in your spare time. A lot. I've worked with several university graduates who barely knew which side of a keyboard to type on. (example quote: Oh I did it that way because I don't like passing parameters to functions)
Read read read read read read read read read read read. Read source code, read textbooks, read C2.Com [http://c2.com/cgi/wiki?WelcomeVisitors] and argue with yourself over the wisdoms and HolyWars contained therein. Read your own source code and wince at your naive mistakes.

Stormy Eyes
October 28th, 2005, 06:11 PM
Where do you work?

A small shop in Connecticut.


What are you main tasks or responsibilities at work?

I fix bugs, add new features, keep the databases running, extend them to meet client demands, and (of course) deal with the clients themselves.


What kind of education, training, or other preparation do you need to get into your job?

I studied computer science and dropped out halfway through. I got my job by wearing a suit, cutting my hair, and giving the boss an answer he didn't expect to the question, "What would you say if I asked you to learn Ada?" My answer was, "Give me a manual and a week to learn the fundamentals. That's what I need before I can give you working code in a new language. The code might be crude, but it will work."


How did you get into this career?

I realized in high school that I wasn't going to earn a living as a musician, took stock of what I could do well, and decided that I might as well hack for a living.


What personal characteristics are required for someone to be successful in your career?

Patience, merciless attention to detail, skill with logic and abstract concepts, and a solid memory. Being able to bite one's tongue and hide the fact that you have been provoked to a killing rage also helps.


What is your preferred computer language? Why?

I don't have a preferred language. I'll use any language I can to earn a living -- even raw binary if I have to. I'm a mercenary.


What do you like most about this career?

Getting paid to solve puzzles reason enough to stick around.


What do you dislike most about this career?

Dealing with people. I don't like people, and I thought that being a programmer meant that I would not have to talk to people in the course of my work.


What the coolest thing that happened to you during this job?

Being able to prove my boss wrong every so often makes this job worthwhile.


What advice do you have for someone who wants to get in this career?

Don't do it. Your co-workers will show you no respect when things are working, while licking your boots when they need you to fix something. Your bosses will view you as a tool to be used.

GeneralZod
October 28th, 2005, 06:41 PM
Where do you work?

I work at one of the UK branches of a large mobile entertainment company.


What are you main tasks or responsibilities at work?

Writing games, and (occasionally) delivering them on time!


What kind of education, training, or other preparation do you need to get into your job?

I think here that the education and training are relatively unimportant; one developer here, for example, started off as a junior games designer with no programming experience. Candidate programmers are required to take a test in C or Java at the interview, however.


How did you get into this career?

I submitted my CV for the first time to a recruitment agency on a Tuesday. By Wednesay, I had an interview scheduled for Friday, which ended up going very well - I liked the place and people immensely. I took the job immediately upon receiving the offer a few days later :)


What personal characteristics are required for someone to be successful in your career?

You need to be prepared to work hard and pay attention to details, and work well with the designers, artists and testers.


What is your preferred computer language? Why?

Tricky one. I like C++ for its raw power and flexibility, but my favourite would probably be ruby, as it is beautiful, powerful, and easy to work with. I'd love to see it being adopted more widely, especially for GUI apps.


What do you like most about this career?

Seeing something you wrote come alive on a small screen :)


What do you dislike most about this career?

Mobile phone firmware typically has so many bugs and quirks that I often spend more time coding ugly workarounds than actually writing games :)


What the coolest thing that happened to you during this job?

Probably getting it in the first place - it's my first real job, and I'd heard endless stories about how inexperienced programmers had no chance of getting a job in today's market, etc, so I was thrilled to bits to get a job so easily and so soon after submitting my CV :)


What advice do you have for someone who wants to get in this career?


These go for programming in general:

1) Be prepared for ugly, difficult tasks. Many hobbiest programmers, when tackling a pet project, will bring it up to the state where it is "good enough" but never add the final polish and bug-fixes that make it a well-rounded app that can be appreciated by anybody (i.e. - people other than the person who wrote it!). In a professional environment, this kind of attitude won't fly - you have to be prepared to go the distance and add that last, unsexy 10% (which can often take just as long or longer than the first sexy 90!), no matter how gruelling it might be. Self-discipline is paramount!

2) Stay on top of your craft - learn as many libraries, API's, languages, coding techniques etc as possible, and don't ever let your skill-set stagnate!

3) Read The Pragamatic Programmer (http://www.amazon.com/exec/obidos/tg/detail/-/020161622X/qid=1130519360/sr=8-1/ref=pd_bbs_1/002-1382567-9886431?v=glance&s=books&n=507846). Twice :)

4) Sometimes you will be given a task that looks so overwhelmingly difficult that you just freeze, and feel like handing in your resignation right there. Don't! Spend a few days going over it, and you will often find that it is dramatically more manageable than you had anticipated.

5) If I could force every young programmer to take a single piece of advice to heart, it would be this:

Learn to work with and on other people's code, and make it easy for others to work on your code. Don't needlessly reinvent the wheel, nor force others to!

Many young programmers learn and subsequently hone their skills by embarking, in solitude, on projects that they have set themselves. Upon reaching the stage where they can program pretty much anything they want, they might try working on someone elses project, at which point they might experience a nasty shock:

The first few times you look at it, code written by another person is utterly incomprehensible.

Many people find this quite surprising, but I've seen it time and time again. All too often, the code appears so alien that the would-be contributor simply re-writes the whole thing from scratch rather than expand on or refine the existing work, which is why there are a multitude of projects on sourceforge with similar goals but mediocre quality, as opposed to a handful that excel :) The good news is that, with perseverance, the alien code is eventually rendered entirely digestable, and you can work with it just as easily as your own code, but this is not at all obvious when you receive that initial shock.

To lessen the shock for others, the advise I would give is quite simple:

Comments, comments, comments!

You can never have enough worthwhile comments in code. You should always give variables and methods descriptive names. There is a school of thought that says that properly-written code should never need comments - I disagree with this, or at least, have never found code that fits this bill. My philosophy is simple - if you can add one sentence that encapsulates how an effect is achieved, or why a function uses approach X instead of the more obvious approach Y, add it. Some people seem to think that writing such comments is some kind of weakness, or resent the inclusion of such comments in other people's code. I think such attitudes are very silly indeed. Why not add those few extra words that can save someone 5 minutes of puzzling over something you've written?

Further to this, I'd add:

Write a brief "Hacker's Guide"

An outline of how things are architected can be a huge blessing to someone who wants to make some small changes to your large-ish project. It can be easy to figure out how an individual function works, but when you have 100's of source files to trawl through it is hard to see how the project as a whole fits together, and thus work out which of the 100's of files must be altered to make your desired change - it's roughly analogous to having to guess what a large portrait is with your eyes kept no more than 1cm from the picture at all times :) Having a thumbnail that describes roughly how the project accomplishes task A, or the directory of files responsible for task B, can make things much easier. Other little things, like simply, in each class declaration or header file, giving a basic one-line description of just why this class is needed and what purpose it serves in the Grand Scheme of your project are also immensely helpful.




Hope this helps,
Simon

blastus
October 28th, 2005, 07:13 PM
I'm sorry if this sounds negative but...


1. Where do you work?

Laid off.


2. What are you main tasks or responsibilities at work?

It really depends on your role, the management style of the company, and the methodologies they use. With smaller companies, you may take on a more varied role; analysis (talking to clients), design, development etc... With larger companies roles tend to be more specialized. It also depends on what type of system is being built--the larger the system the more specialized the roles are.


3. What kind of education, training, or other preparation do you need to get into your job?

B.Sc. in Computer Science + at least 5-8 years of experience and specialization in every relevant technology + one or more certifications in everything that is related to the job you are applying for. Some government I.T. jobs are specifically designed for new grads only so those may be an option for new grads.


4. How did you get into this career?

Job was offered.


5. What personal characteristics are required for someone to be successful in your career?

The ability to work in a team, communicate well, problem solve, and take ownership of your work.


6. What is your preferred computer language? Why?

Java. Java is not a perfect language and has many weaknesses, but, for the most part, it is designed well and has always been able to get the job done for everything that I needed it to do.


7. What do you like most about this career?

Being creative and learning new/better ways to do things. Every project is different so there are always opportunities to learn.


8. What do you dislike most about this career?

IMO there's no such thing as a career in computer science. You just happen to have a job in computer science and that's it. If you lose your job that's pretty much it. The field is extremely over-specialized such that no matter how much education and experience you have, it is extremely difficult to find work anywhere else. The industry has stagnated to the point where you can expect 100 to 200 people applying for every single job--at least this is the case where I live.


9. What the coolest thing that happened to you during this job?

I saved a company $10,000 one day (or so a manager said.)


10. What advice do you have for someone who wants to get in this career?

Forget about a career in computer programming. Careers in computer programming, like engineering, are short lived. They say that the average life of a career in engineering is like 7 years. Further, computer programmers are a dime a dozen and they have been outsourced to India and other foreign countries.

The problems that plague the industry are; far too many people in the industry, rapidly changing technology, SEVERE OVER-SPECIALIZATION, far too many and $expensive$ certifications, and outsourcing. There are also other things that influence the computer programming field specifically; like tools that can automatically build systems. My advice would be to get into Dentristy, Real Estate, Home Renovation, Pharmaceuticals or start up your own company / consulting firm.

Dartus
October 30th, 2005, 03:32 AM
Wow, thanks for all of the replys. This is some great insight you guys are giving. :)

kanenas.net
November 14th, 2005, 04:50 PM
1. Where do you work?
I work in Sportline.gr (http://www.sport.gr)

2. What are you main tasks or responsibilities at work?
Maintain, admin, develop the site...

3. What kind of education, training, or other preparation do you need to get into your job?
Writing code !

4. How did you get into this career?
I got in the job because i needed a hobby !

5. What personal characteristics are required for someone to be successful in your career?
Patience with those folks who don't know and think that know !!!!

6. What is your preferred computer language? Why?
Php is for me , because is more flexilbe.

7. What do you like most about this career?
That always there is something new to learn

8. What do you dislike most about this career?
Pressure without a reason.

9. What the coolest thing that happened to you during this job?
That I am learning from a master !!!

10. What advice do you have for someone who wants to get in this career?
Good luck...

Ride Jib
November 14th, 2005, 06:32 PM
The best thing that I can add to this that hasn't been said already is this:

"It's who you know, not what you know."

This statement could not be any more true. While maturing my career, basically every job I have had was because I knew someone in the company already, or knew someone who had a friend in the company. And while at work, there is often the concept of highering from within. When a company is looking for an employee, they will first see if any current employee can fit the bill. If so, rearrange the office a little. Then they move out a ring, does anyone from the company have a friend/relative that fits the bill? If nothing is found here (rarely), then they move on to friends of friends, and general public.

Start building your relationships as soon as you can. A company doesn't necessarily want a 4.0 GPA student who spent all his time in a computer lab, but rather someone who is more of a complete person, with a personality and social skills. I personally graduated with just shy of a 3.0 in Comp Sci, and have never had a job interview which I didn't receive an offer for a position.

... And in case it is important for you, a couple companies I have worked for include Lockheed Martin (http://www.lockheedmartin.com/alc), and Schlumberger (http://www.slb.com).

kanenas.net
November 14th, 2005, 08:15 PM
The best thing that I can add to this that hasn't been said already is this:

"It's who you know, not what you know."

This statement could not be any more true. While maturing my career, basically every job I have had was because I knew someone in the company already, or knew someone who had a friend in the company. And while at work, there is often the concept of highering from within. When a company is looking for an employee, they will first see if any current employee can fit the bill. If so, rearrange the office a little. Then they move out a ring, does anyone from the company have a friend/relative that fits the bill? If nothing is found here (rarely), then they move on to friends of friends, and general public.

Start building your relationships as soon as you can. A company doesn't necessarily want a 4.0 GPA student who spent all his time in a computer lab, but rather someone who is more of a complete person, with a personality and social skills. I personally graduated with just shy of a 3.0 in Comp Sci, and have never had a job interview which I didn't receive an offer for a position.

... And in case it is important for you, a couple companies I have worked for include Lockheed Martin (http://www.lockheedmartin.com/alc), and Schlumberger (http://www.slb.com).


Ride Jib, tell me something... Why do you have to be so right about public relations !!!
:rolleyes:

Ride Jib
November 14th, 2005, 09:30 PM
Ride Jib, tell me something... Why do you have to be so right about public relations !!!
:rolleyes:

I don't understand your need to attack my opinions, but I will respond anyway.

My post said "the only thing I can add that hasn't been said already." Public relations != success. You obviously need some other skill-set to perform 'work'. Basically what I was getting at is, unless you want to work in a cubicle staring at a computer screen 40+ hours a week for the rest of your career, never advancing in the company hierarchy, I suggest having some p.r. skills. If you are the anti-social, hate-the-world type, and are content with a salary that reflects that, then by all means, enjoy your cube!