Q&A- Answers

  • (2 Pages)
  • +
  • 1
  • 2

18 Replies - 22124 Views - Last Post: 14 March 2012 - 01:10 PM

#1 macosxnerd101  Icon User is online

  • Self-Trained Economist
  • member icon




Reputation: 10390
  • View blog
  • Posts: 38,450
  • Joined: 27-December 08

Q&A- Answers

Post icon  Posted 07 February 2012 - 06:16 PM

*
POPULAR

It's that time. You asked and our panel of Dream.in.Code Experts answered! Check out what they had to say. Thank you everyone who asked questions, and thank you to our Experts for taking the time to share your knowledge and experiences!


My answers:
Spoiler


Is This A Good Question/Topic? 9
  • +

Replies To: Q&A- Answers

#2 AdamSpeight2008  Icon User is offline

  • MrCupOfT
  • member icon


Reputation: 2241
  • View blog
  • Posts: 9,412
  • Joined: 29-May 08

Re: Q&A- Answers

Posted 07 February 2012 - 06:59 PM

Spoiler

This post has been edited by AdamSpeight2008: 12 February 2012 - 12:02 PM

Was This Post Helpful? 4
  • +
  • -

#3 cfoley  Icon User is offline

  • Cabbage
  • member icon

Reputation: 1940
  • View blog
  • Posts: 4,027
  • Joined: 11-December 07

Re: Q&A- Answers

Posted 08 February 2012 - 03:19 AM

*
POPULAR

What is the most valuable skill you have picked up for programming professionally and why? Or to phrase it differently, what is the one skill you would encourage novice programmers to pick up if they want to succeed?

I donít think there is a single biggest skill but for a novice programmer, the first hurdle is being able to write code. A lot of people seem to think that the exercises they are given in class are enough. They arenít. You need to practice and experiment a lot to gain enough experience to put together medium sized projects.

How often do you use an engineering model apart from trial and error / code patterns to develop your applications? For instance hypothetically, you are developing a web application with a database back-end and know that your web application will be accessed by thousands of clients at the same time (hypothetically the web application becomes live at a certain time). Do you sandbox these things and strength test server load? Apart from the regular safety nets in place for code control and quality, how are these things tested?

Iíve never encountered the kind of scenario you describe but it sounds like something that is easy to test. If the requirement was given to me at the start of the project, I would set up a system and have thousands of robots using it. Any time a feature is added or something is changed, you can still check to see if the system passes the test.


How often do you see mathematics used throughout software engineering that isn't in gaming, but rather for code optimization? When designing algorithms that are applied in real world applications, do you find a firm grasp of Number Theory helps to optimize algorithms, and when openly discussing mathematics are you often greeted with blank faces?

Often you have the choice between spelling out the logic with a clear and simple piece of code or writing an equation to do the same job slightly faster. The former is infinitely more readable and maintainable while the latter will need comments explaining what the hell you are doing and quite possibly a reference. For most pieces of software most of the time you wonít notice the difference in performance and the simple, clear code is far preferable.

For times when you do need to optimise, I find logic is often more important than maths but perhaps thatís just a reflection on where my skills lie.

Let's say you're at a interview for a job and the interviewer asks you to make examples of bad and good software and explain. What would you say? (Would interpret it as a trick question, or give the answer?)

No, I would not interpret it as a trick question, although I would expect the interviewer to be interested in how I interpret it. What does good software mean to me: easy to use, easy to maintain, makes a lot of money? My answer will tell him a bit about my values. Just tell him what you actually think. If you try and make up an answer to please him it will probably just sound false.

Did you pick up coding style from the people you worked with or some other way?

A good place to look is static code analysis tools. (Java has FindBugs.) I was shocked the first time I ran it on one of my projects. I was doing a lot of subtle things that could potentially cause bugs down the line. Getting out of those habits was a lot more important than the things people often argue about like whether to give braces their own line.

Most of my programming has been done on my own so my style has been picked up from books, internet discussions and personal experience. There is one project I have been working on for the last 5 years and itís really interesting to see how my code style has changed since the start. Every now and then, I come across a class or method that Iíve obviously not touched since I wrote it.

I used to be quite dogmatic about coding style rules but now I see them more as guidelines. I strive for my code to be clean and concise. If that means I sometimes use a ternary operator, a break or miss out some braces then so be it.

Again the situation when you're on a interview. If the interviewer asks you what was wrong in your previous job post? (Would you risk of revealing some firm secrets by answering that or would you avoid that question somehow?)

No, that would be an incredibly stupid thing to do. All it would show is that you are untrustworthy. If answering an interview question means you would be breaking confidentiality then simply explain that is the case. It will keep you on the right side of the law and will help the interviewer to perceive you as being trustworthy.

How much of your current knowledge did you gain at your work post?

I gained a lot of the more formal skills like testing and version control at my current post. Things like problem solving are always improving but mine were already well practiced.

Most of you have been in the industry for some time now; some for a longer period than others.

My question is: do you still find yourself motivated to go home after work and learn some technology related things outside of work, or is it more of a 9-5 job now for you and just do it for a paycheck.


Yes, coding has always been a hobby for me. I consider myself lucky to get paid for something I would be doing anyway.

How do you guys make it so that the job remains exciting.

My job is constantly engaging and challenging. There are always new experiments to run, algorithms to implement (and sometimes invent) and codes to optimise. I guess if I was coding the same kind of business logic day in, day out it might get boring.

pbl, macosxnerd101, jon.kiparsky, Dogstopper, KYA, Programmist, baavgai, cfoley: (Java related): Most of you guys have done a lot of Java projects and participating in many java related discussions, what unique way which you used your self to master Java? I mean when studying Java, what things you gave priorities(or ways you used- which you think were different from others) till now we are proud of you?

I just practiced. Lots. But I didnít set out on a mission to learn. I just programmed lots of things for my own entertainment, and when I didnít know how to do something, I looked it up.

pbl, macosxnerd101, jon.kiparsky, Dogstopper, KYA, Programmist, baavgai, cfoley: (Java related): We have a version change after every time, now Java 7 and we are moving to 8... and in every new version we have some changes in API which means some old code wont be supported. What do you advice us, new programmers, to do so to reduce the negative effect of those changes to our code?

Itís not something to worry about too much in Java. They are big on their backwards compatibility, yet occasionally things do break. Recompiling your code will fix binary incompatibilities and search/replace will sort out problems caused by new reserved words (e.g. enum being introduced in Java 5). Sometimes a library you use will be incompatible with the new version which means you will have to wait for it to be updated.

stayscrisp, SixOfEleven, cfoley and ButchDean: Game and scientific programming are areas that interest me as they tend to require a lot of original thinking and problem solving, keeping you thinking about what you are doing with each iteration. What was it that attracted you to these fields initially, what is it that keeps you there, and what one thing makes you want to throw out your computer? and what would you do untethered to your IDEs and compilers?

I did a degree in Chemistry and had a hobby in programming. I kind of fell into scientific programming naturally at the end of my degree but if I hadnít, I think I would have applied for R&D jobs in medicinal chemistry. Looking at how the economy has turned out and the huge job cuts in that sector, Iím glad I didnít! I still find science interesting so scientific programming is ideal for me. If I could no longer program Iím not sure what I would do. My synthetic chemistry knowledge would be considered out of date by now. My best bet would be some non-programming bioinformatics, although I canít envisage a situation where I would be able enough to do that but unfit for programming. Iíd be more likely to go the other way and get a job as a developer with no scientific element.

In your corner of the industry, what differentiates an experienced programmer/hobbies from a professional?

My corner of the industry is bioinformatics which, at its core, involves manipulating high volumes of biological data. It is a research field that draws professionals from biology, chemistry, physics, maths, medicine and occasionally computer science.

Most people in this field donít program or only write scripts. Thatís fine. They are busy working on other important areas. In fact, the standard text (http://www.amazon.co.uk/Introduction-Bioinformatics-Arthur-Lesk/dp/0199208042/) recommends that students aspiring to get into the field become comfortable with a scripting language but donít learn serious programming.

sense your started programing, what has been your favorite project, personal or work related.

There have been lots of fun projects but my current one is my favourite. It comprises a library for analysing protein topology, a GUI viewer and a few other tools. One reason I like it is that I have been working on it for the last 5-6 years and I can see how my skills have progressed as I browse through the older parts of the code.

Are you guys participating/used to participate at open source projects? Why did you do it/are doing it? - sense of achievement, getting better at programming, boredom?

No. Itís something I have always fancied but never had to do out of necessity and never made time for.

What has been your favorite project during your career? Why was it your favorite? Was it an easy or hard project to do?

See above. I think easy/hard is a false dichotomy. There were certainly challenges and parts that needed some serious thinking and planning, and parts where I had to look up books, blogs and journals. But there was nothing hard in the way that I was ever at risk of not being able to make the features I wanted.

What is your opinion in regards to the authenticity of the Tiobe index? Is it a reliable source to use to determine which language is the most used/popular?

Itís not something I have ever considered. I am interested in computer languages but I follow my interests rather than using Tiobe as a guide.

Do you find that you are happy with your line of work? If you could change to some other (realistic) line of work, would you?

Iím perfectly happy. Unfortunately, it might be coming to an end fairly soon. Iím hoping to secure some funding to continue my research but if this doesnít happen Iíll be looking for another job. Iíd like to do some sort of scientific programming if I canít stay in bioinformatics.

What would be the most important 10 job interview questions and answers someone would need to know?

I donít know. My approach to interviews has always been to make sure I have a good background in the area Iím applying for, have some knowledge of the company and be honest if there is something I donít know. I feel that coming clean about not knowing a detail and saying where I would look it up must come across a lot better than trying to bullshit. Also, talking through my thinking in problem solving gives them a better idea of how I might perform than ďOh, Fizz Buzz! I know this one!Ē

At what age did you seriously get into programming?

Nine. I wrote my first Hello program (didnít know I was supposed to greet the whole world) and was instantly hooked. Never looked back.

How much have you learned after your first professional employment?

Iíve never really had professional programming position per se. Iíve done some commissions and have written some software as part of my research. The latter has taught me a lot. Itís difficult to quantify but being surrounded by similarly minded people has helped a lot.

How do you guys use your programming languages for your company?

I write bioinformatics tools to help answer research questions.
Was This Post Helpful? 5
  • +
  • -

#4 codeprada  Icon User is offline

  • Changed Man With Different Priorities
  • member icon

Reputation: 944
  • View blog
  • Posts: 2,353
  • Joined: 15-February 11

Re: Q&A- Answers

Posted 08 February 2012 - 07:01 AM

Spoiler

This post has been edited by codeprada: 21 February 2012 - 05:12 PM

Was This Post Helpful? 3
  • +
  • -

#5 tlhIn`toq  Icon User is offline

  • Please show what you have already tried when asking a question.
  • member icon

Reputation: 5436
  • View blog
  • Posts: 11,659
  • Joined: 02-June 10

Re: Q&A- Answers

Posted 08 February 2012 - 07:57 AM

Answers without some context about the person answering can seem ...odd
I work from home full time, not in a office cubical, not in a Google-esque free run campus.
I did not go to university: At all. I grew up with ham radios and Commodore computers.
I make software to use/control devices such as barcode scanners, sensors, cameras and so on: Not business models, web integration, cell phone apps.
User desktop applications: Point of sale systems, security systems, Amusement park ride integration

I see this thread is a mile long, so I'm putting my answers in the spoiler.
Spoiler

This post has been edited by tlhIn`toq: 12 February 2012 - 07:51 AM

Was This Post Helpful? 4
  • +
  • -

#6 Raynes  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 611
  • View blog
  • Posts: 2,815
  • Joined: 05-January 09

Re: Q&A- Answers

Posted 09 February 2012 - 04:41 AM

Quote

What is the most valuable skill you have picked up for programming professionally and why? Or to phrase it differently, what is the one skill you would encourage novice programmers to pick up if they want to succeed?


The ability to take criticism from people who are more experienced than you.

When I first started working at my company, everything I did was generally looked over by someone else, and a lot of the time it would result in some slight changes being made to my code. This can really hurt your feelings, but you mostly should just shut up and realize that you're being taught a better way of doing things. If someone changes your code and you *know* that it is for the better, then you've learned something new. Otherwise, you can just explain why your way is better.

I know you said one skill, but how about one more: the ability to learn new things quickly. When I joined my company, pretty much everything I've had to do since has been completely new and alien to me. I wouldn't be there if I wasn't willing to learn new things. Keep in mind that these things may not always interest you significantly. Just learning something new should be enough to keep you motivated.

Quote

How often do you see mathematics used throughout software engineering that isn't in gaming, but rather for code optimization? When designing algorithms that are applied in real world applications, do you find a firm grasp of Number Theory helps to optimize algorithms, and when openly discussing mathematics are you often greeted with blank faces?


We all use mathematics in our code, we usually just don't realize it. Furthermore, you don't have to have a formal education in mathematics to do so.

Quote

Let's say you're at a interview for a job and the interviewer asks you to make examples of bad and good software and explain. What would you say? (Would interpret it as a trick question, or give the answer?)


That isn't that hard and it certainly isn't a trick question. Bad software is the culmination of a number of things: bad developers, bad organization, bad companies, etc. What are some examples of bad software? Can't say I have a list handy. Examples of good software? I can't really list that either, because I use a lot of good software.

Quote

Did you pick up coding style from the people you worked with or some other way?


Languages you use typically have a set of generally accepted styling guides. I tend to not stay far from what the majority uses and I wont use terrible formatting just because I'm working on a project with someone who does. If they refuse to accept my well-formatted contributions, I'll simply not work on their project.

Quote

Again the situation when you're on a interview. If the interviewer asks you what was wrong in your previous job post? (Would you risk of revealing some firm secrets by answering that or would you avoid that question somehow?)


This makes the wild assumption that I've left my previous job because there was something 'wrong' with it. No, I certainly would not dog my previous company, but if there was some obvious reason that I left I'd certainly point it out as long as it wasn't personal.

Quote

How much of your current knowledge did you gain at your work post?


Significant amounts. I don't really know what to list in particular.

Quote

Most of you have been in the industry for some time now; some for a longer period than others.

My question is: do you still find yourself motivated to go home after work and learn some technology related things outside of work, or is it more of a 9-5 job now for you and just do it for a paycheck.


I wouldn't code at all if I didn't love it. I do tons of work in my spare time, but to be fair, I only work part time. Working full time, my only limitation will be time and my ability to stay awake when I get home. But I'm still young, so there is plenty of time to get sick of development. If that happens (and I highly doubt it ever will), I don't think I'd keep working as a developer. It would be an extreme disservice to my coworkers to give them half-assed Anthony.

Quote

How do you guys make it so that the job remains exciting.


I don't -- my boss does. So far, every project I've been given to do has taught me something new.

Quote

In your corner of the industry, what differentiates an experienced programmer/hobbies from a professional?


I don't know. The ability to get the job done?

Quote

sense your started programing, what has been your favorite project, personal or work related.


Wow, that's difficult. There are three that I'm very fond of and would have trouble choosing between: clojail, lazybot, and RefHeap. I actually spoke at the 2011 Clojure Conj conference about clojail and it is used in a lot of important Clojure projects, so I'm leaning towards it. RefHeap is one of my newest projects, and I'm fond of it because it is the first non-trivial website that I've done the majority of development on, and I have a lot of ideas to make it great.

Quote

Are you guys participating/used to participate at open source projects? Why did you do it/are doing it? - sense of achievement, getting better at programming, boredom?


Absolutely. Even at work, the majority of our backend projects are open source and we rely on open source software. I support it because I need to, and because how can I not? Open source is how you build a community and make a language useful. I'm not sure how this is a question -- there are people who *don't* work in open source? This is news to me. ;)

Quote

What is your opinion in regards to the authenticity of the Tiobe index? Is it a reliable source to use to determine which language is the most used/popular?


Fun stats, useless to take seriously. Is it a reliable source? Does it matter? Please stop caring which language is the most 'popular' and use the best tools for the job. Languages get popular because people use them. If you keep only using the languages that are popular right now, you're blocking programming from evolving. Give the less popular languages a chance -- make them popular by using them.

Quote

Do you find that you are happy with your line of work? If you could change to some other (realistic) line of work, would you?


To be honest, I don't care what I have to do at work. The most important thing about my job is that I work with amazing people who are my friends before they are my coworkers.

But my line of work (genealogy) is plenty interesting enough to keep me motivated.

Quote

At what age did you seriously get into programming?


I started playing around with programming when I was like 12. I was probably around 14 when I got really serious about it.

Quote

How do you guys use your programming languages for your company?


We use Clojure for the backend stuff. All of the underlying projects are open source, and we keep the open source parts of Geni in a Github organization called 'flatland': https://github.com/flatland
Was This Post Helpful? 3
  • +
  • -

#7 SixOfEleven  Icon User is offline

  • using Caffeine;
  • member icon

Reputation: 945
  • View blog
  • Posts: 6,342
  • Joined: 18-October 08

Re: Q&A- Answers

Posted 09 February 2012 - 06:37 AM

Quote

what is the most valuable skill you have picked up for programming professionally and why? Or to phrase it differently, what is the one skill you would encourage novice programmers to pick up if they want to succeed?


Communication skills. You will be parts of meetings and having to document solutions. Being able to communicate properly will be very helpful in the future.

Quote

How often do you see mathematics used throughout software engineering that isn't in gaming, but rather for code optimization? When designing algorithms that are applied in real world applications, do you find a firm grasp of Number Theory helps to optimize algorithms, and when openly discussing mathematics are you often greeted with blank faces?


Mathematics is important in programming and when I was in school a lot of math was required to get your degree. You will find math in a lot of areas other than game programming. It will become important when youíre trying to optimize new algorithms for sure.

[quote] Let's say you're at a interview for a job and the interviewer asks you to make examples of bad and good software and explain. What would you say? (Would interpret it as a trick question, or give the answer?)[quote]

The interviewer is rarely trying to trick you. Answer all questions to the best of your ability. If you have an interview that goes badly practice the questions that gave you problems at home. Your resume got you the interview so the interviewer clearly thought you had the skills necessary for the position. Doing a good interview is probably the hardest part of getting a job.

Quote

Did you pick up coding style from the people you worked with or some other way?


My teachers in school influenced my coding style for sure, especially my grade 11 computer science teacher. That is still probably the biggest influence in my general style.

Quote

Again the situation when you're on a interview. If the interviewer asks you what was wrong in your previous job post? (Would you risk of revealing some firm secrets by answering that or would you avoid that question somehow?)


Again, interviewing for a job is probably the hardest part of getting the job. The interviewer is rarely trying to trick you and may often be as nervous as you are, unless there is a human resources department. Practice interviews and answer questions to the best of your ability.

Quote

Most of you have been in the industry for some time now; some for a longer period than others.

My question is: do you still find yourself motivated to go home after work and learn some technology related things outside of work, or is it more of a 9-5 job now for you and just do it for a paycheck.

How do you guys make it so that the job remains exciting.


I donít program for a company at the moment and have been out of programming for quite a while. All the work I do is on personal projects. I keep the job exciting by working on projects that interest me. I would still find time to code outside of work though because I like problem solving, that is what programming is mostly in the end.

Quote

I've seen in your bios that most of you have had a beginning programming class before college. I was wondering two things:

A ) What had sparked your interest

B ) When did you decide to become a professional


My brother brought home a computer from school and I fell in love with the thing. Iíd never heard of or seen anything like it before. I started to play around with it and I was hooked from that moment on. I decided I want to get into programming seriously when I was in high school. I did a few freelance projects when I was in high school.

Quote

I am a student and I would like to know from you what ways you used when you were students to thicken your programming skills. How were you involved in real-life development like get an inter-ship or participating in some works done by real software dev companies? Also if you have been in any online works which you think was useful, and you would like to advice us, newbies,(may be a site with real online dev) which we can benefit when participating.


As I said in my previous answer I did some freelance project when I was in school. Working on freelance projects is one way to help you break into working for a company. Having a profile of work youíve done can be helpful. Iíve known people who give away thumb drives with sample projects theyíve done.

[quote] Game and scientific programming are areas that interest me as they tend to require a lot of original thinking and problem solving, keeping you thinking about what you are doing with each iteration. What was it that attracted you to these fields initially, what is it that keeps you there, and what one thing makes you want to throw out your computer? and what would you do untethered to your IDEs and compilers?[quote]

Though there is a difference between playing games and making games it was playing games when I was a teen that got me interested in making games. I already had skills as a programmer and thought: Hey, I can do this. What keeps me there is the challenge and I like problem solving. I also like seeing the fruits of my labors on the computer screen. What makes me want to throw out my computer? Nothing really ever makes me want to do that but there are times where I want to give it a swift kick when things arenít working the way I think they should but are working the way I told the computer to do them.

Quote

Also, targetted at SixOfEleven, pbl and the rest of you that have been "in the real world" for a fair time, what kind of things should we do alongside university to make it more useful? I currently freelance as a website developer but I also try to have programming projects, but all I can ever think of are things that do not really push boundaries or anything!


Doesnít matter if your project is pushing boundaries because very often ďin the real worldĒ what you are doing has been done before. Keep building a portfolio but try and have that portfolio in areas that you are interested in getting into. If you donít want to get into web development then donít freelance as a web developer. If you want to get into desktop development then develop desktop applications. Freelancing is always a good thing.

Quote

sense your started programing, what has been your favorite project, personal or work related.


My favorite project was a game that I wrote for BBSes years ago. It was a lot of fun and I really enjoyed working on it. Game projects have been a favorite since I started programming back in the Jurassic period.

Quote

Are you guys participating/used to participate at open source projects? Why did you do it/are doing it? - sense of achievement, getting better at programming, boredom?


I work on open source projects/tutorials to try and help those who are up and coming learn to program. It is usually because I want to give back to the community.

Quote

What has been your favorite project during your career? Why was it your favorite? Was it an easy or hard project to do?


Just answered that but my favorite project was a game that I wrote for BBSes. It was a favorite because I enjoyed watching people play it on my BBS. It was cool to see it in use. It was something that I hadnít tried before so it was challenging.

Quote

I'm a CS graduate who is a programmer analyst at a local community college and I make games on the side. My goal is to get into the game industry but I find it very difficult to find any "Entry-level" programming jobs. It seems as if every programming job description I come across require 5-10 years experience with 1-3 AAA titles shipped.
  • Is there any trick to making myself more marketable to an employer, beside including my meager (at least in my eyes) personal projects in my CV/Resume?
  • Should I look for an open-source game/engine to contribute to?
  • Do employers care about those projects that are not "professional" (i.e. personal projects)?


I donít work in the industry so I canít really say. I do know from people Iíve talked to that companies do look for demos when they are hiring. The usually like to look at the source and if your code produces any warnings at all you can forget about the job.

Quote

Do you find that you are happy with your line of work? If you could change to some other (realistic) line of work, would you?


Iím moving from software to hardware. Iím currently looking for work in IT support rather than software development.
Was This Post Helpful? 4
  • +
  • -

#8 modi123_1  Icon User is online

  • Suitor #2
  • member icon



Reputation: 8939
  • View blog
  • Posts: 33,516
  • Joined: 12-June 08

Re: Q&A- Answers

Posted 09 February 2012 - 09:38 PM

Quote

What is the most valuable skill you have picked up for programming professionally and why? Or to phrase it differently, what is the one skill you would encourage novice programmers to pick up if they want to succeed?

How to debug your own code. Being able to take some random piece of code, slap a break point, and step through it to follow the chain of logic and processing until you discover the error.. or taking it from the error point and back tracing through the stack to suss out the problem. Benefits: A ) it gets you over the hubris that any code you write is right, B ) it allows you to be a more self reliant developer, C ) you gain a better grasp of writing more clear and manageable code when you are subconsciously thinking of how it would look to trace an error through.

Quote

How often do you use an engineering model apart from trial and error / code patterns to develop your applications? For instance hypothetically, you are developing a web application with a database back-end and know that your web application will be accessed by thousands of clients at the same time (hypothetically the web application becomes live at a certain time). Do you sandbox these things and strength test server load? Apart from the regular safety nets in place for code control and quality, how are these things tested?

Sandbox, there's apps for load testing, etc. The higher ups like fancy reports and pseudo expensive programs in chrome filled labs to show that a website is ready and stress tested.

Quote

How often do you see mathematics used throughout software engineering that isn't in gaming, but rather for code optimization?

I rarely see it for code optimization. Other places, say in the construction industry, I saw it used frequently.

Quote

When designing algorithms that are applied in real world applications, do you find a firm grasp of Number Theory helps to optimize algorithms

No, not really.

Quote

, and when openly discussing mathematics are you often greeted with blank faces?

Mostly, but it is not like I have time to lounge around philosophize on the possibilities of one optimization strategy over another to find the best one. Usually it's a quick and dirty shake down and what ever 'optimization' programs the higher ups were sold on.

Quote

Let's say you're at a interview for a job and the interviewer asks you to make examples of bad and good software and explain. What would you say? (Would interpret it as a trick question, or give the answer?)

Is this my own software, or software in general? I would find something with a bad user interface - something clunky and not intuitive. That or something that tries to mask complex things with simple buttons. Conversely something that worked, was intuitive, and gave me great control would be examples of 'good'.

Quote

Did you pick up coding style from the people you worked with or some other way?

It's a mash of things I've picked up from other companies, techniques I am currently forced to use, and personal habits. It's always good to attempt to keep the style the same through out though.

Quote

Again the situation when you're on a interview. If the interviewer asks you what was wrong in your previous job post? (Would you risk of revealing some firm secrets by answering that or would you avoid that question somehow?)

I would advise against revealing a "firm's secrets", and I would also avoid dishing on people like gossip hour. There are ways of putting situations in a less than harsh light without being catty or perceived as mean spirited. This is where picking up some 'managerial' speak is helpful. Was your previous boss an overbearing, verbally abusive, clod? Then he was more of a "micromanager without a firm grasp on the project that relied on substantial negative feedback". There are always tactful ways of putting things that get the point across without the bitterness.

Quote

How much of your current knowledge did you gain at your work post?

Quite a bit. School work is great for getting heady concepts under your belt, but the work place usually operates in a more cut down, time critical, high pressure situation. You find out quickly that some skills from school are useful (having a large sample space of how to tackle a problem) while others (having near endless time to pontificate the most optimal solution) are not.


Quote

Most of you have been in the industry for some time now; some for a longer period than others.

My question is: do you still find yourself motivated to go home after work and learn some technology related things outside of work, or is it more of a 9-5 job now for you and just do it for a paycheck.

Some days yes, some days no. I tend to be more project planning when I go home so I can minimize my coding time. That and I also tend to find hobbies that are a bit different that programming. I have people on my team that are just the 9-5'ers.. so when I talk about cracking a Kinect apart they smile and wander off. So it goes... not everyone is going to be a hundred percent jazzed at coding all the time. I also find that if I don't take a break from writing code (say outside of work) I feel burned out more. If you want to maintain a good burn on your passion you need to know when to recharge.

Quote

How do you guys make it so that the job remains exciting.

The job tends to take care of that with the crazy variations of projects I have. If that fails then I wander off and meeting with my users face to face... see how they are using system X of mine (because invariably they are using way different than I had envisioned). Getting the perspective of those on the other end of process is always amazing and insightful. That helps provide an experience for the next time or for future upgrades.

Quote

AdamSpeight2008, Curtis Rutland, tlhIn`toq, modi123_1, CodingSup3rnatur@l-360, baavgai: (NET related): You have done a lot of .net projects and being in .net industry for a time now, what specific topics or knowledge from .net advanced learning someone need after finishing his degree(or any) so he can be hired and do well in .net industry?

Database interactions. If you can't efficiently operate a CRUD (create, read, update, delete) application then you are sunk. Check the forums - how many questions are there "how do I connect to database X and read data from it?" - tons. The work place is mostly collecting, storing, and manipulating data and information. If you cannot make an app that does that then what good are you?

Quote

AdamSpeight2008, Curtis Rutland, tlhIn`toq, modi123_1, CodingSup3rnatur@l-360, baavgai: What is your advice for .net languages learners(VB & C#) in order to improve their knowledge? Like if you can give us ways which you used to be that much...

Get used to going to MSDN docs for help first. If you don't understand a function, a method, or a data type - go there first and read all about it. Understand what it requires as a parameter, what it returns, and so forth. Traversing around the MSDN docs is invaluable and cements what you know to what you should know. No more flailing around in the dark - find the light!

Quote

In your corner of the industry, what differentiates an experienced programmer/hobbies from a professional?

Efficient with a of design, documentation, quick problem solving, self sufficiency, and the ability to program for a larger group, and not sloppy/cut corners for self consumption.-

Quote

Also, targetted at SixOfEleven, pbl and the rest of you that have been "in the real world" for a fair time, what kind of things should we do alongside university to make it more useful? I currently freelance as a website developer but I also try to have programming projects, but all I can ever think of are things that do not really push boundaries or anything!

Volunteer work - donate your time and skills to local causes, bands, scenes, and such. Figure out how long things take for your to do, how to approach the same idea with three or five mockups.. etc.

Quote

sense your started programing, what has been your favorite project, personal or work related.

The new robot/hardware interaction I am starting! Well that and my rock'n geocities I opened up in 1997.

Quote

Are you guys participating/used to participate at open source projects? Why did you do it/are doing it? - sense of achievement, getting better at programming, boredom?

No, I haven't come across an open source project that really tripped my trigger and motivated me into joining. Everything I see just looks like what I am doing at work for less pay. Hahaha..

Quote

What has been your favorite project during your career? Why was it your favorite? Was it an easy or hard project to do?

There hasn't been a "favorite" per say. There are interesting, complex, and horribly ran ones that provided much insight after the pain, but those are my "favorite lessons learned" not favorite like "*squee* I just got a pony!" favorite.

Quote

What is your opinion in regards to the authenticity of the Tiobe index? Is it a reliable source to use to determine which language is the most used/popular?

Honestly, I have never heard of 'Tiobe index' so I just don't regard it period. I tend to believe a two minute job search for one's area to be a good indicator of what is hot and what is not.

Quote

Do you find that you are happy with your line of work? If you could change to some other (realistic) line of work, would you?

Yes I am generally happy with my work. I do what I love, get paid an okay amount, and create things all day long. I sometimes think I wouldn't have minded my original college plan - or even revised college plan 'd' - but both of those still had me working to some degree as a programmer..

Quote

What would be the most important 10 job interview questions and answers someone would need to know?

That's hard to nail down. It all depends on the company, your skill set, the requirements of the job, etc. A few things have stuck out for me. If you are applying for a .NET position (as a senior developer) be able to answer "which version of the framework do you mostly use?" and "which version of visual studios do you use?". Be prepared to 'whiteboard' code out in front of people. If given a programming test - don't cheat by attempting to mimic the console output by typing it directly into the console screen (versus fixing the app as it was explained). Be familiar with the general BS interview questions (your biggest strength, weakness, times you overcame adversity, etc).

Quote

At what age did you seriously get into programming?

In theory I started when my mom pickedup Doom1 for me, from Pace, and I had to figure out how to get the damn thing to run on her 486 Packard Bell work machine. Thankfully she had a half read 'dos 6.0/6.2' book on her shelf that I was able to hack through and get a boot disk made so the memory files and what not were right. Then expanded to some basic batch programming, a boyscout merit badge, more time at the local public library, a loaded visual c++ editor.. and then it spiraled out of control. So I am looking at 1993? Though I was a hell of a hypercard on her Mac Classic so perhaps more like 1991 or so.

Quote

How much have you learned after your first professional employment?

Boat loads. Reference above for the differences I have previously mentioned. There's a philosophical difference that drives importance in one area and in the other it is less so.

Quote

@Curtis Rutland, modi123_1, tlhIn`toq, baavgai, and CodingSup3rnatur@l-360:
1. What do you think is the greatest strength and weakness the .Net programming languages have compared to other languages in general?

Strength - the framework itself. It makes it easy to do the same sort of app in various environments and not have to completely punt what you already use.
Weakness - the stigma attached by being a "microsoft language".

Quote

2. What do you think is the greatest strength and weakness C# has compared to other languages in general?

Strength - the ability to rapidly create fully working apps with similar syntax as other languages... also XNA and the .NET Microframework.
Weakness- I would have to know what 'other languages' you mean.

Quote

3. What do you think is the greatest strength and weakness C# has compared to java specifically?

Strength: making desktop apps faster.
Weakness: platform independence.


Quote

How do you guys use your programming languages for your company?

I use it in a ton of places... back office applications that rip a part emails in an inbox to be reformatted, distributed, and stored for later use...shuffling data from one archaic system to the new system for consumption.. huge ol' databases... web pages, web applications, small video games, estimating software, testing tools, employee "tracker" applications, facilitating the purchasing work flow, and so on.
Was This Post Helpful? 3
  • +
  • -

#9 baavgai  Icon User is online

  • Dreaming Coder
  • member icon

Reputation: 5780
  • View blog
  • Posts: 12,594
  • Joined: 16-October 07

Re: Q&A- Answers

Posted 10 February 2012 - 10:20 AM

*
POPULAR

What is the most valuable skill you have picked up for programming professionally and why? Or to phrase it differently, what is the one skill you would encourage novice programmers to pick up if they want to succeed?

I don't know if skill is the right word. Perhaps trait. I'd say perseverance.

Programming is hard. It's fine when all the elements you're working on are humming along the way you expect, but at some point you will hit a roadblock. Your roadblock can be simple, taking only a moment to resolve. Sometimes problem resolution is measured in hours, days, weeks...

What you will learn programming, what you must learn to effectively program, is a very high tolerance for frustration. When you hit the wall, you can't just throw up your hands and leave. You can't blame the wall, the computer, the OS, the language, the guy next to you, solar flares, or anything else. You created the wall, you have to get rid of it. The only way to do this is to keep trying. You will eventually get through it. You must. Period. No other option need be entertained.

Perseverance. As a programmer you will acquire and nurture this quality or you will fail.


What subjects did you study prior to undertaking an undergraduate in CS/SE (did you undertake a degree)?
Did any other study such as mathematics, linguistics, physics etc apart from the aspiration of working with computers as an external motivation become a determining factor for selecting this profession?
What keeps you intrinsically motivated to perform at your best without falling into a slump?
Finally, what hobbies do you have?


I got my Bachelor's Degree in English Literature. ;) I got a Computer Science minor. I was three creds away from the Philosophy minor. Probably six from the Journalism minor. Liberal Arts, man. It's a blast.

As to other study... That would be another required quality of the programmer; self learning. When I was in school, there was no web. We learned mostly on Pascal, a little Assembly, maybe some C and Lisp. The world of computers today is drastically different from when I went to school. It's different than it was ten years ago. Five years ago. Some of the stuff I've learned over the years has come from company training, but most is from simple curiosity and exploration. You need to be able to learn on your own from resources available; sometimes there's no other choice.

Programming is hard, but it's also fun. It can be a rush, actually. More absorbing than the best solitaire game. As a profession, it's a good balance of work and play. If you don't actually enjoy programming, I really couldn't recommend it as a career path.

Yes, programming can get dull. Particularly if you've been staring at the same thing for way too long. I tend to do other development problems when I'm bored with the main job. DIC is, frankly, one of my diversions; the problems tend to be small and self contained.

Hobbies? Computers doesn't count? Spare time is never a problem. I watch too much TV, movies, cartoons. I read, well, anything. I cook; anything. I study medieval history. I do leather work. I once sold leather gear, chainmail, and various other props to renfairs and larps. I once taught a class on how to butcher large animals.

If I don't know it, and it catches my interest, I'll learn it. I took three semesters of welding for amusement. I have a motorcycle class coming up. It's kind of part of being a geek. Never loose your curiosity.


Let's say you're at a interview for a job and the interviewer asks you to make examples of bad and good software and explain.
Something with gotos? Software is good when it runs and the users are happy. However, the best looking most user friendly software can have a hideous, unmanageable code base. Conversely, the worst software a user has ever had the misfortune of seeing can have the most elegantly written code behind it.

From a programmer's perspective, the best software has code that is easily maintained, debugged, extended. It's the software where a minor change involves one line and not having to even worry about how that change might impact the millions of other lines. From a user's perspective, it has to do what they need and never crash. Software, of course, can be both, but it's a different context.


Did you pick up coding style from the people you worked with or some other way?
Style is organic and personal. It starts with what you're introduced to and then evolves as you use a language. It's like writing style. I don't know that most programmers spend a lot of type analyzing it, they just use what they believe is "right."


If the interviewer asks you what was wrong in your previous job post?
Trick question. You never dis an employer in an interview. Ever. It makes you sound like a petty bastard and gets the interviewer wondering what you might say about their company if they hired you. You find a politic why to cite irreconcilable differences. Any prior employment issues were simply things that didn't work out; blame no one.


How much of your current knowledge did you gain at your work post?
Probably 95%. Anything you learn today has a good chance of not existing tomorrow. Keeping current means working and learning at the same time. No one can teach you most of what you need, that's why experience is so valued.


How do you guys make it so that the job remains exciting.
If it's the same thing forever, you'll be bored to tears no matter what your job. Computers change constantly. Today's tech will be old news sooner than you expect. There's always something new to play with. If I'm working a long project I'll often amuse myself with doing smaller projects than can be done quickly. Often, as programmer, you fight many fires at once. Sometimes its harder to just be left alone to finish one job.


what unique way which you used your self to master Java? I mean when studying Java, what things you gave priorities(or ways you used- which you think were different from others) till now we are proud of you?
I think this question could be applied to any language. I've often written things, like Java servlet frameworks, that I thought were brilliant at the time. I believed I'd reuse this code over and over. Only to came back to it years later, feel it's too complex and messy, and rewrite the thing.

I actually had something pop up yesterday. A desktop Java app I'd written over ten years ago is still being used in the field. However, the installer has issues with Windows 7. The bytecode itself is fine, we just needed a different delivery mechanism than the web start it had.

What I'm proud of is when stuff I wrote so long ago I forgot about it is still being used by people to do real work. And I haven't needed to patch it since the first few weeks of release.


What do you advice us, new programmers, to do so to reduce the negative effect of those changes to our code?
Object Oriented principals, particularly for Java. You write code with as little public and as little tight coupling as you can get away with. If you need to leverage a particular set of third party tools or exotic API calls, wrap them in your own code. If you can limit your calls to outside code, you limit your rewrites when that outside code changes on you.

OO seems like a waste of time to new programmers; just extra work. It is extra work, now. The idea is to avoid extra work later. You don't really understand this until you have experience dealing with it.


You have done a lot of .net projects and being in .net industry for a time now, what specific topics or knowledge from ".net advanced learning" someone need after finishing his degree(or any) so he can be hired and do well in .net industry?
Always know the basics and know them cold. The more rarefied stuff comes later. You might find a place that loves LINQ and uses it for everything, another place might think it's the Devil. Same with any other "advanced learning."

You can try to be familiar with everything, but there's a lot. Unless you use it every day, it will just be a footnote in your memory. Don't get too hung up on it, you'll get up to speed when you need to. Have a strong foundation and you can build anything you need on top of that.


What is your advice for .net languages learners(VB & C#) in order to improve their knowledge? Like if you can give us ways which you used to be that much...
This is really another any language question. Simple answer, write code. Write lots. If you're unfamiliar with a technology, write something in it. For .NET, fire up Visual Studio and run through the projects it offers. If you aren't familiar, poke around. You get better through active curiosity. Don't get stressed about it, just play.


what differentiates an experienced programmer/hobbies from a professional?
Money. Professionals get paid. That's really about it.

I want to hire hobby programmers. Someone who programs out of real interest rather than someone who just needs a job. You have education, experience, and passion. If you can show me passion and some amount of ability, the other two will flow. If you have experience, you can at least fake it. If you just have education, I have no way of knowing how much sunk in.


What is your opinion in regards to the authenticity of the Tiobe index?
There a lie, a damn lie, and then there's statistics. The Tiobe index, salary surveys, popularity surveys in general, are an accurate representation of the result set being modeled. Meaning that such things are probably meaningful for someone. Unfortunately, you really can't know if they are meaningful to you. The best you can do is take all such information as a reflection of someone's reality and try to figure out if that reality is reasonably close to yours.


Do you find that you are happy with your line of work?
I would prefer to telecommute... Yes, happy. You either like your job or you mark your work hours like a prisoner scratches time on the wall, waiting to be let out. Part of being happy is being good at what you do. There is an innate satisfaction in that. To be good at what you do, you have to like it. So, kind of full circle. If you don't like programming now, do not choose it as a career.


If you could change to some other (realistic) line of work, would you?
Other options... A teacher of some sort, probably doesn't matter what. I entertained the idea of a writer, but it's honestly too much work. I did get paid for a few articles once, so I guess I could claim profession writer. Come to think of it, I've also gotten paid for teaching. I can cook and have worked kitchens before, but that's also too much work.

Programming gives me a good balance of problem solving and sitting on my ass in a climate controlled office. It's hard to beat.


At what age did you seriously get into programming?
The first time I typed in 10 PRINT "HELLO!!! "; : GOTO 10 on some computer in the mall. Maybe 13? I mean, as serious as you can be at 13. But I kept it in mind and it kind of stuck.
Was This Post Helpful? 5
  • +
  • -

#10 Dormilich  Icon User is offline

  • 痛覚残留
  • member icon

Reputation: 3485
  • View blog
  • Posts: 10,045
  • Joined: 08-June 10

Re: Q&A- Answers

Posted 12 February 2012 - 05:18 AM

(using spoiler tags to make the thread less long, thx to tlhIn`toq for the idea)
Spoiler

This post has been edited by Dormilich: 12 February 2012 - 08:24 AM

Was This Post Helpful? 3
  • +
  • -

#11 Programmist  Icon User is offline

  • CTO
  • member icon

Reputation: 252
  • View blog
  • Posts: 1,833
  • Joined: 02-January 06

Re: Q&A- Answers

Posted 12 February 2012 - 07:34 AM

Quote

2. Most of you guys have done a lot of Java projects and participating in many java related discussions, what unique way which you used your self to master Java? I mean when studying Java, what things you gave priorities(or ways you used- which you think were different from others) till now we are proud of you?


I'm not entirely sure I understand this question, but I think you are asking what techniques I used in learning Java. How you learn a language depends heavily on whether it's your first language or not. For a true beginner, learning a language is much more than understandably syntax, but understanding programming and computing concepts. In this case your learning will be slower than someone who already knows other languages. But in either case the most important thing is to practice. I equate it to learning an instrument, or learning math. You can "get" the concepts and even reproduce some simple examples, but you really don't get a deep understanding until you've built a lot of working software. One thing I did was make a list of software I wanted to build. Some members of that list were pretty lofty goals (a CMS) while others were more simple (GUI blackjack game). I started building many of the things on my list before I even knew how. For instance, I built the blackjack game before I knew that much about Java 2D or Swing, but I learned them as I needed them. I also learned that I hated Swing and thus avoided (most) jobs in the future that had that as a requirement. JavaFX fixes a lot of what I hated. If Java is your first language, get a book that teaches programming concepts while teaching Java. Otherwise the Java tutorials and API are all you need. You can also find blog posts on just about anything you'd ever want to know. But let me reiterate: practice. Build something. Build several things. If you find yourself going back and re-factoring old projects when you learn something new, that's a good sign.



Quote

3. We have a version change after every time, now Java 7 and we are moving to 8... and in every new version we have some changes in API which means some old code wont be supported. What do you advice us, new programmers, to do so to reduce the negative effect of those changes to our code?


So far Java versions have not introduced many breaking changes. The fact that each Java version is mostly backwards compatible is one of its strengths and weaknesses. It's obviously a strength because old code is more likely to work on a new version of the JRE. The weakness, as I see it, is that it ties Java down from innovation. Some will argue that this is not a weakness, and that's fine because it's all a matter of perspective. Anyway, to your question. There are a few things I would advise in the case of version updates.

1. Stay on top of what's new in each Java version by downloading the latest milestone in the early access snapshots. You can usually get them many months before release, so you'll have a chance to try them out. Once the snapshots reach a "feature-complete" stage, try running your software on it. Did it compile? Did it crash? Was it a Java bug or a change that caused the crash? Either way, you'll have time to figure out and potentially fix problems before that Java version hits gold and your users update.

2. In some cases it's likely that you won't need to upgrade right away. Unless there is some whiz-bag feature in a newer version of Java that you just have to use in version "2.0" of your software, there is no reason to update. You can always keep an old Java version installed.



Quote

4. What do you think is the greatest strength and weakness the java programming language has compared to other languages?


As I mentioned in another question I think that fact that Java strives for backwards compatibility is both a strength and a weakness. Its strength lies in the likelihood that upgrading to a new version of Java will not break your software from a previous version, which is a feature very much loved by enterprises. For instance, when Java 1.5 was released, new code written with 1.5 parameterized types (generics) still ran on a 1.4.2 JVM because 1.5 was designed to remove parameterized types at run-time (type erasure). So a 1.4.2 java.util.List looks the same as a java.util.List<String> at run-time. On the flip side, type erasure made life painful for programmers using the Reflection API because they couldn't do anything the depended on knowing the generic type. This is one of the reasons strict adherence to backward compatibility was a weakness for Java. Without the need for backwards compatibility the implementation of Generics could gave been much more more useful. Java could have evolved, taking on new and useful features, but instead languished under the heavy yolk of backwards compatibility.

Quote

5. What do you think is the greatest strength and weakness the java programming language has compared to C# specifically? What are the possible weaknesses of the language compared to C#?


I hate to keep repeating myself, but the fact that Java has been driven by a committee and has to adhere to backwards compatibility while C# was driven by a singular company and vision and breaks compatibility between major versions has to be their biggest differences. For businesses, the backwards compatibly of Java is great, but for developers the new, interesting, and often time-saving features and syntax sugar of C# are a great advantage. The tools are an area of big difference as well. VS.NET is an excellent IDE, but the "pro" version is expensive while Eclipse, Netbeans, and STS are free and very good IDEs and IntelliJ is modestly priced and excellent. Another big difference is platform. C# is tied to Windows and IIS for the most part while Java can run on just about any. The Mono project does allow you to run C# and .NET on non-Windows platforms, but it usually lags behind the latest release of the official version of C#.NET. If this were the whole story the two would be beck-in-neck, but "Java" means much more than just a language. It also encompasses the JVM. And there are several very good JVM languages that replace or enhance the Java language. I find this a huge plus in the Java column. Also, there are and have been many fantastic open-source libraries and frameworks for Java. From what I've heard from my .NET colleagues, many of those have started to port to .NET (Hibernate, etc), but things like .NET ORM and MVC frameworks lagged behind the Java world. I make my money in the Java world, but I think C# is a great language. I usually have a copy of VS.NET installed a. alongside IntelliJ IDEA.
Was This Post Helpful? 4
  • +
  • -

#12 Dogstopper  Icon User is offline

  • The Ninjaducky
  • member icon



Reputation: 2870
  • View blog
  • Posts: 11,021
  • Joined: 15-July 08

Re: Q&A- Answers

Posted 12 February 2012 - 08:33 AM

Quote

What is the most valuable skill you have picked up for programming professionally and why? Or to phrase it differently, what is the one skill you would encourage novice programmers to pick up if they want to succeed?


I have only coded professionally for 2 years, and of that, it's mostly scientific computing with little or no software development. With that in mind, my most valuable skill is being able to break down a problem into the smallest parts, and then understand how those pieces fit into the whole. This allows for the proper code separation into methods, classes, and packages (in OOP) or functions (in functional and structured).
One more important thing to realize is that the end user is ALWAYS stupid. Treat your code this way too, whether you are developing an API for use in other applications or developing directly for the end user. Always make sure your code is either robust enough to handle any issues that are encountered in a safe, controlled way.

There is a combination answer for the second question. The two most important things for a novice to learn is that experimentation is key. NEVER be afraid of trying something that may help you. To go along with that, you need to learn how to debug and interpret error messages, so that when you experiment, you know what goes wrong. Learn this, and you're one step closer to being a great programmer.

Quote

How often do you use an engineering model apart from trial and error / code patterns to develop your applications? For instance hypothetically, you are developing a web application with a database back-end and know that your web application will be accessed by thousands of clients at the same time (hypothetically the web application becomes live at a certain time). Do you sandbox these things and strength test server load? Apart from the regular safety nets in place for code control and quality, how are these things tested?

How often do you see mathematics used throughout software engineering that isn't in gaming, but rather for code optimization? When designing algorithms that are applied in real world applications, do you find a firm grasp of Number Theory helps to optimize algorithms, and when openly discussing mathematics are you often greeted with blank faces?


I'm not a software engineer, nor am I a "developer". I am a computational scientist (and I will do such when I finish my CS degree). I have very little experience in your first question, so I cannot answer that. However, your second question I can answer. I use mathematics all the time, as typically, what my work entails is modeling a scientific process, and this involves a lot of math and optimization to make the calculations run faster and more accurately.

Quote

Let's say you're at a interview for a job and the interviewer asks you to make examples of bad and good software and explain. What would you say? (Would interpret it as a trick question, or give the answer?)

Itís an interview for a job, so I would definitely follow through with the request. An example of bad software would be (in the OOP world at least) something where all the code is thrown into one class or method or even a few badly designed one. Generally, if a method is larger than on screen height, then that method COULD be split up more modularly. The single exception to this might be a function to do XML parsing from a DOM, but even that can be modularized.

Quote

Did you pick up coding style from the people you worked with or some other way?

I work primarily for myself, so I guess I could say yes. Since I am a student, most of my style has come from experts and mentors here at </dream.in.code> that have taught me better ways to do things.

Quote

Again the situation when you're on a interview. If the interviewer asks you what was wrong in your previous job post? (Would you risk of revealing some firm secrets by answering that or would you avoid that question somehow?)

It really depends. At the moment, again, Iím a student, so I move around a lot (and am about to enter college). I have not had a ďbadĒ job yet, and so my answer would likely be about moving away from the job. However, some of the work I do is confidential company/governmental work, so I would not be able to go into great gory detail about that.

[code]
How much of your current knowledge did you gain at your work post?
[/quote]
Most of my rudimentary knowledge of programming I have learned on my own. At the Oak Ridge National Laboratory, I have mostly increased my knowledge of physics, scientific computer modeling, and optimization (for supercomputers). I also have learned some great values about debugging and code protection using tools such as GIT and SVN.

Quote

Most of you have been in the industry for some time now; some for a longer period than others.

My question is: do you still find yourself motivated to go home after work and learn some technology related things outside of work, or is it more of a 9-5 job now for you and just do it for a paycheck.

How do you guys make it so that the job remains exciting.

Iím an intern, and thus, I am expected to learn. It makes this simpler to answer. However, some of the work that I have done is much more than can be expected from an intern, and the reason for that is that I donít just do the work set in front of me. I try to push whatever code Iím given and make it do great things.
As an example, lots of my work involves data mining, and thus, I use a lot of Excel, VBA, and Python (depending on the task). Frankly, data mining itself is not that fun, so instead of simply producing the data, I create a set of codes that makes life easier for everyone by running a calculation, mining the data, and putting it into an easy format automatically, which saves time and money. The challenge of optimization and bundling tools up for both *NIX and windows users is also challenging.
So in essence, if it isnít fun, I make improvements. Sure, there are some down days, but for the most part, I make my job fun.

Quote

pbl, macosxnerd101, jon.kiparsky, Dogstopper, KYA, Programmist, baavgai, cfoley: (Java related): Most of you guys have done a lot of Java projects and participating in many java related discussions, what unique way which you used your self to master Java? I mean when studying Java, what things you gave priorities(or ways you used- which you think were different from others) till now we are proud of you?

I have not ďmasteredĒ Java. There are loads of things that I still need reference guides to do. Yes, I am probably an expert, as I have been labeled, but there are so many libraries out there that I have not ever used yet. I think the key to my learning was learning to debug my code and learning how to read the docs. Using those two factors, I am capable of doing just about anything I want with the language. I have a lot of experience with 3rd party Java APIs, and knowing how to use them also has brought me up well. Finally, knowing how to ask the right questions in the correct fashion is how Iíve been able to get help when I need it.

Quote

pbl, macosxnerd101, jon.kiparsky, Dogstopper, KYA, Programmist, baavgai, cfoley: (Java related): We have a version change after every time, now Java 7 and we are moving to 8... and in every new version we have some changes in API which means some old code wont be supported. What do you advice us, new programmers, to do so to reduce the negative effect of those changes to our code?

My advice is to just be aware of these changes as they occur and be sure to always use modern programming practices. Chances are that if youíre using Java 6, it will be far better 10 years down the road than if you chose to use Java 1.1. Even though both will be considered ďoldĒ, the former is less old and most likely to be supported.
Also remember that it is an expectation that things will change. Expect to make updates to old code that you wrote 5 or 10 years ago. Thatís why you want to use as modern practices as you can now, and to use good programming practices.
[quote]
In your corner of the industry, what differentiates an experienced programmer/hobbies from a professional?[/quote
Well, I donít work at a programming firm. I work at a facility where complicated, high performance scientific computing applications are made. Frequently, the ďexperiencedĒ ones are those who use the worst coding practices and ancient languages like FORTRAN and COBOL. Itís us youngsters who use things like Perl, Python, and maybe Java.

Quote

Since your started programing, what has been your favorite project, personal or work related.

By a long shot, my Android application that I wrote to handle nuclear materials calculations is my favorite. It was my summer work, and it has brought my loads of opportunities to give talks, write papers, and the like. Though the application already exists, I took a supercomputing application (that takes 5+ minutes on occasion) and placed it onto an Android phone that calculates results in less than 5 seconds. The accuracy is almost the same. Itís my favorite project because of the data and calculational optimizations that I developed for this project.

Quote

What has been your favorite project during your career? Why was it your favorite? Was it an easy or hard project to do?

This is the same as the above. And yes, it was difficult to design the models and do the calculus required to achieve accurate results.

Quote

Are you guys participating/used to participate at open source projects? Why did you do it/are doing it? - sense of achievement, getting better at programming, boredom?

Not really. I would though, if I was given more time. At the moment, I am busy with school, proprietary work, and robotics. I do believe in open-source of course, but when you work for the government, you have to follow their restrictions.

Quote

Do you find that you are happy with your line of work? If you could change to some other (realistic) line of work, would you?

No, I would not. I love what I do, and couldnít even think about switching.

Quote

What would be the most important 10 job interview questions and answers someone would need to know?

I really wish I could answer this, but unfortunately, I have not ever needed to interview for a job, so at the present time, I am unsure of the ďBestĒ questions. If I was able to guess, I would say that knowing what your favorite project is and why is important. Also make sure that you know the importance of debugging and backing up your code.

Quote

At what age did you seriously get into programming?


Seriously got into programming? 14. Iím still only 17 and have had one heck of a time programming thus far. My first professional job was at age 16.

Quote

How much have you learned after your first professional employment?

A lifetime. As I said above, at age 17, there is still so much to do and see, so every chance I get, I try to learn.

Quote

What do you think is the greatest strength and weakness the java programming language has compared to other languages?

The Java Virtual Machine is a truly fantastic piece of software. It allows for bytecode compiled anywhere to be run anywhere. As for Java itself; I do use it frequently, but by no means do I think that it is a better language. Unlike some languages, it is extremely verbose, and you have to know your English well to use some of the libraries it has. It also hides pointers, which while good for beginners, does not allow for the true power that other languages have. Python comes to mind in that it is a simple language that is great for beginners but does not restrict the things that one can do with it. However, it does have fantastic error handling and makes it easier for beginners. And yes, you CAN do anything that other languages can do, but it may take some work to make it happen.

Quote

What do you think is the greatest strength and weakness the java programming language has compared to C# specifically? What are the possible weaknesses of the language compared to C#?

Again, the only real strength of the Java language is the machine on which it is run. It is not restricted to Windows systems (or Mono w/ restricted functionality). However, in almost every way, I have to say that I think C# is a superior language. It is newer than Java and has done what Java did wrong right. Java is too verbose, and the fact that it is not TRULY object oriented really bothers me. (Fundamental data types are not inherently objects). The only reason that I use Java instead of C# is because I am either doing mobile programming or programming for a wide array of UNIX systems.

Quote

How do you guys use your programming languages for your company?


My company is my own, so yes, we use whatever language we want. At ORNL, I tend to use Python, which is my favorite language anyway.
Was This Post Helpful? 3
  • +
  • -

#13 KYA  Icon User is offline

  • g++ jameson.cpp -o beverage
  • member icon

Reputation: 3093
  • View blog
  • Posts: 19,139
  • Joined: 14-September 07

Re: Q&A- Answers

Posted 12 February 2012 - 10:17 AM

*
POPULAR

Quote

What is the most valuable skill you have picked up for programming professionally and why? Or to phrase it differently, what is the one skill you would encourage novice programmers to pick up if they want to succeed?


Google-Fu. I'm serious. The ability to go and research a problem is an invaluable skill. If you're the new guy on the team, it's expected that you will have a lot of questions; HOWEVER, those questions should be insightful and relevant to the team's work/products, not why a function is named this or what is hexadecimal. Until someone is up to speed, not only are they not productive, but they prohibit other people from being productive while they get them caught up.

A close second is the ability to test stuff. Let's say you want to know what happens to a Java thread when its parent locks up and you attempt to kill its grandparent. Well, you could sit there and speculate all day OR you could write a quick test to verify behavior. Don't run over to the senior guy on the team and ask what should happen, because the first question out of their mouth is "Well, did you try it out?" followed immediately by "What was the result?". Be prepared to answer that line of inquiry.

Quote

pbl, macosxnerd101, jon.kiparsky, Dogstopper, KYA, Programmist, baavgai, cfoley: (Java related): Most of you guys have done a lot of Java projects and participating in many java related discussions, what unique way which you used your self to master Java? I mean when studying Java, what things you gave priorities(or ways you used- which you think were different from others) till now we are proud of you?


Start writing something. As soon as you hit a wall, research the problem and devise a solution to it. Since you wrote it yourself, there is a slim chance you'll forget it and will be able to harness this knowledge in the future. The best part of this approach is that it applies equally across the board for any programming language or problem solving endeavor.

Quote

pbl, macosxnerd101, jon.kiparsky, Dogstopper, KYA, Programmist, baavgai, cfoley: (Java related): We have a version change after every time, now Java 7 and we are moving to 8... and in every new version we have some changes in API which means some old code wont be supported. What do you advice us, new programmers, to do so to reduce the negative effect of those changes to our code?


Low coupling. I try to write code so that if underlying data structure is changed, interfaces add/remove methods, or any other possible examples one might run across when the standard is updated, the most work myself or a coworker has to do is find/replace and a quick recompile. A perfect example of this is a recent issue I had in a C++ product [not Java, but extremely relevant]. The data structure I was originally using was a std::set. After an intense brainstorming session that redefined our problem, it was decided that a std::deque would better suit the modeling for the data we were keeping state on. The code was written in such a manner that all I had to was replace the word set with deque in my typedef and move set.find() to std::find(). Plug and play is the way to go; less stuff breaks that way.
Was This Post Helpful? 5
  • +
  • -

#14 Curtis Rutland  Icon User is online

  • (╯į□į)╯︵ (~ .o.)~
  • member icon


Reputation: 4436
  • View blog
  • Posts: 7,707
  • Joined: 08-June 10

Re: Q&A- Answers

Posted 13 February 2012 - 08:56 AM

Quote

(NET related): You have done a lot of .net projects and being in .net industry for a time now, what specific topics or knowledge from .net advanced learning someone need after finishing his degree(or any) so he can be hired and do well in .net industry?


One trend I'm seeing is a greater push for Service Oriented Architecture. From a .NET perspective, that means WCF. WCF is one of the most amazing (and complicated) tools MS has given us. It's incredible in what it's capable of, but you can't just slap it together and expect it to work. Seriously, go buy a book on WCF right now. You'll think of three things you wish you would have done with WCF, and you'll think of a dozen more you can do. And it's in demand right now, and it should stay that way for a while.

Quote

What is your advice for .net languages learners(VB & C#) in order to improve their knowledge? Like if you can give us ways which you used to be that much...


Books and forums. Really, I've learned more by attempting to answer other people's questions than I ever did in a formal class. One big difference between experts and non-experts is that while neither may know the answer to a particular question, the expert knows how to find it, quickly and efficiently. So, train that skill. Even if you don't actually post answers, go through questions and see if you can figure it out. Create a "Demo" project in VS so you can screw around with questions and challenges. It really does help. And a few books don't hurt either.

Quote

1. What do you think is the greatest strength and weakness the .Net programming languages have compared to other languages in general?

2. What do you think is the greatest strength and weakness C# has compared to other languages in general?

3. What do you think is the greatest strength and weakness C# has compared to java specifically?


1) Hmm. Well, one of the things that'll always be a strength and a weakness is the lack of portability of the framework. It's a strength, because it means the team can focus on making it work great on one single platform, instead of working just OK on several. But it's also clearly a weakness. Choosing .NET development is, for the most part, locking yourself into a Windows stack. Yes, there's Mono, but I would argue that it's not mature enough to simply replace .NET, and if you're developing on *nix, there are better platforms available than Mono. So, you can't easily port your code from Windows to another OS, and you're fairly locked into a development platform as well.

2) C#'s strength is that the people making and updating it aren't afraid of the future. There's not a whole lot that C# has actually been innovative with, but they've been wildly successful because they're not afraid to borrow what works from other languages, and sometimes even improve on it. Generics, lambdas, things like that. Weaknesses...I haven't worked long enough with any other language professionally to really give a useful opinion here, except perhaps RPG III, which nobody cares to hear about here.

3) I'd have to repeat my answer from 2, except with a firmer focus on the fact that C#'s not afraid of the future. I'm not sure how much of this had to do with Oracle, but Java's almost painfully behind in terms of modern paradigms. Lots of people like this because it means that their knowledge is "current" longer, and some people love stability. I can understand that, but I'd rather have new tools and techniques available to me so I can always learn new things. Weakness, of course, is portability again. Java may be a pain to write in, but at least I know it'll work on most any platform.

Quote

Most of you have been in the industry for some time now; some for a longer period than others.

My question is: do you still find yourself motivated to go home after work and learn some technology related things outside of work, or is it more of a 9-5 job now for you and just do it for a paycheck.

How do you guys make it so that the job remains exciting.


Well, luckily I still get to do new things at work. I don't know everything, and I never will. I just hope that I can always keep doing something new. So I really don't feel compelled to go home and research new stuff, because I get to work with new stuff at work itself.
Was This Post Helpful? 3
  • +
  • -

#15 CodingSup3rnatur@l-360  Icon User is offline

  • D.I.C Addict
  • member icon

Reputation: 991
  • View blog
  • Posts: 971
  • Joined: 30-September 10

Re: Q&A- Answers

Posted 13 February 2012 - 03:39 PM

Spoiler

This post has been edited by CodingSup3rnatur@l-360: 14 February 2012 - 01:29 AM

Was This Post Helpful? 3
  • +
  • -

  • (2 Pages)
  • +
  • 1
  • 2