My answers:
Spoiler
I don't know that "engineering model" is the right term to use. With CS being moved to the engineering departments at many universities, software development and CS is really seen as an engineering field. I guess on semantics you could consider it engineering, but software development is different than most engineering fields. If you're building a bridge, you know how it will be used. People will be driving across it. In the software industry, you have an idea of how you want your users to be using your program, but you don't know how they will use it. Beta testing is a great way to handle this. Get the client(s) to thoroughly use your beta. Get the secretary in your office, your boss, the janitor, anyone you know to test it. The more people that use your program, the more likely they will find ways to break it. And you'd rather find these things out early on than in the released "final" version.
I love math and the heavy theory end of computer science. The most math I've used in the real world was designing a layout manager and using graph theory terminology. Chances are unless you're doing scientific computing, or working on something like a GPS system, you won't be using much math. And even with a GPS system, I'm sure a fair amount of it can be abstracted to databases from graph theory.
By make examples, do you mean write code samples on the spot? I could write both quality and nightmarish code on the spot and explain the differences if asked. I could also explain good and poor coding practices. Be prepared to do both. If you're asking about citing examples of quality and poor software, talk about things from a usability perspective. Why is something not user friendly or inefficient? Does a program crash all the time? If so, how will you the developer be alerted to this to fix it? Talk about how you will write quality code, and how you have the foresight to handle usability issues down the road. It shows you're connected with a non-technical userbase.
Almost every project I've worked on has been a learning experience of some sort, whether it be a new skill in an intro to programming class I took a few years back or a large scale project I've worked on recently. I try and look back at what I did well and could have improved upon, and note those for the next time. Then on the next project, I try and improve upon those points. After a certain point, you'll have your code indentation, naming, etc., conventions down. However, you may find certain design choices continue to evolve or shift, if only slightly.
Use tact here. Don't bash anyone. I'd almost be inclined to cite professionalism for keeping things confidential. An HR person could probably better advise you than I could though.
My current job gave me some good exposure to the Android platform. I'm by no means an Android expert, but I can now work proficiently with the API. It also gave me more exposure to writing a large codebase and refactoring one. Refactoring can be a large project pain, especially when the code isn't your own. It's better here to refactor as necessary, rather than trying to redo the entire project, as may seem appealing if for no other reason than you're an anal programmer that hates dealing with crappy code.
I do enjoy going to work. I love doing things that involve problem solving, and my job gives me the opportunity to do that.
In an ideal world, you can find something you enjoy doing in a good environment. If you like what you do and the environment you're in, then you'll be happy overall.
I love data structures and algorithms. I'm not exaggerating when I say I get up in the morning excited about trees and graph theory. That was my priority when learning Java. I also enjoy mathematical computations. Discrete Math last year for me was especially fun, b/c I got to write a lot of code for things we did ranging from number theory to combinatorics to graph algorithms.
The major change Java programmers encountered when the switch from Java 1.4.2 to Java 5 was the incorporation of generics, and having the use of the non-generic tools deprecated. Java isn't moving so fast that you'll have to worry about Java 8 changes screwing up your Java 7 compliant code. The best advice I can give is to write code to adhere to good programming practices and the standards for the version you're using. That being said, if you're writing code for Java 1.2, have a good reason for doing such. IDE's can also help with versioning. Take advantage of your tools when appropriate.
A job. By definition, a professional is one who does this for a job. I've seen plenty of students and hobbyists write awesome code, and there are professionals that write crappy code. Though when we encourage people to be professional in their programming practices, we are encouraging people to be top-notch programmers, not the crappy kind obviously.
At the university level, things that "push the boundaries" are research. And research involves theory at some level. If you're looking to go into a niche area, like virtual reality, do research on computer graphics. Find something that interests you, and meet with the professor doing research on it. Maybe you'll never use high-end computer graphics in your day-to-day job, but it's a great resume builder, at the very least.
I did some research on the Traveling Salesman Problem last year. That was by far my favorite. I really got to explore graph and tree algorithms, and their tradeoffs.
I don't participate in open source projects b/c I don't have the time and sufficient interest. If I had more time to do development outside of class and my job, I'd be doing more graph theory than anything else.
I think the Tiobe index is a good indicator of what to learn. Temper it with the area(s) you are job hunting in. When I was internship hunting a couple years ago, the jobs were almost exclusively .NET and Java EE. Just b/c Tiobe may rank C++ at a certain level doesn't mean that's the language you will be using in your geographic area.
I find that I enjoy my job. I'm not looking to change anytime soon.
I'm probably not the best person to answer this- an HR person is. I would be prepared to discuss your qualifications, display your technical skills, and provide your interviewer with a copy of your portfolio.
I started at age 14 really getting into computer programming. I picked up Java during our algorithms unit in my freshman IT class in high school.
Java has two things on a lot of other languages- the JVM and market penetration. If you're writing an enterprise grade application, it will most likely be in Java EE. If you're writing a mobile app, it will more likely be in Android, followed closely by Objective-C (for the iPhone). And Android is easier to get started with than Objective-C. The other thing I love about Java are its error messages and documentation. Java has the friendliest error messages and documentation for a lot of languages I've seen.
I don't work with C# really, so take this with a grain of salt. This goes back to my answer to your first question though- the JVM. C# isn't cross-platform, in terms of libraries. You have .NET for Windows, and Mono for other platforms. This produces limitations in writing code that can run anywhere. Java doesn't have this restriction, unless you're talking about moving to the mobile platform.
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?
I don't know that "engineering model" is the right term to use. With CS being moved to the engineering departments at many universities, software development and CS is really seen as an engineering field. I guess on semantics you could consider it engineering, but software development is different than most engineering fields. If you're building a bridge, you know how it will be used. People will be driving across it. In the software industry, you have an idea of how you want your users to be using your program, but you don't know how they will use it. Beta testing is a great way to handle this. Get the client(s) to thoroughly use your beta. Get the secretary in your office, your boss, the janitor, anyone you know to test it. The more people that use your program, the more likely they will find ways to break it. And you'd rather find these things out early on than in the released "final" version.
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?
I love math and the heavy theory end of computer science. The most math I've used in the real world was designing a layout manager and using graph theory terminology. Chances are unless you're doing scientific computing, or working on something like a GPS system, you won't be using much math. And even with a GPS system, I'm sure a fair amount of it can be abstracted to databases from graph theory.
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?)
By make examples, do you mean write code samples on the spot? I could write both quality and nightmarish code on the spot and explain the differences if asked. I could also explain good and poor coding practices. Be prepared to do both. If you're asking about citing examples of quality and poor software, talk about things from a usability perspective. Why is something not user friendly or inefficient? Does a program crash all the time? If so, how will you the developer be alerted to this to fix it? Talk about how you will write quality code, and how you have the foresight to handle usability issues down the road. It shows you're connected with a non-technical userbase.
Quote
Did you pick up coding style from the people you worked with or some other way?
Almost every project I've worked on has been a learning experience of some sort, whether it be a new skill in an intro to programming class I took a few years back or a large scale project I've worked on recently. I try and look back at what I did well and could have improved upon, and note those for the next time. Then on the next project, I try and improve upon those points. After a certain point, you'll have your code indentation, naming, etc., conventions down. However, you may find certain design choices continue to evolve or shift, if only slightly.
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?)
Use tact here. Don't bash anyone. I'd almost be inclined to cite professionalism for keeping things confidential. An HR person could probably better advise you than I could though.
Quote
How much of your current knowledge did you gain at your work post?
My current job gave me some good exposure to the Android platform. I'm by no means an Android expert, but I can now work proficiently with the API. It also gave me more exposure to writing a large codebase and refactoring one. Refactoring can be a large project pain, especially when the code isn't your own. It's better here to refactor as necessary, rather than trying to redo the entire project, as may seem appealing if for no other reason than you're an anal programmer that hates dealing with crappy code.
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.
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 do enjoy going to work. I love doing things that involve problem solving, and my job gives me the opportunity to do that.
Quote
How do you guys make it so that the job remains exciting.
In an ideal world, you can find something you enjoy doing in a good environment. If you like what you do and the environment you're in, then you'll be happy overall.
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 love data structures and algorithms. I'm not exaggerating when I say I get up in the morning excited about trees and graph theory. That was my priority when learning Java. I also enjoy mathematical computations. Discrete Math last year for me was especially fun, b/c I got to write a lot of code for things we did ranging from number theory to combinatorics to graph algorithms.
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?
The major change Java programmers encountered when the switch from Java 1.4.2 to Java 5 was the incorporation of generics, and having the use of the non-generic tools deprecated. Java isn't moving so fast that you'll have to worry about Java 8 changes screwing up your Java 7 compliant code. The best advice I can give is to write code to adhere to good programming practices and the standards for the version you're using. That being said, if you're writing code for Java 1.2, have a good reason for doing such. IDE's can also help with versioning. Take advantage of your tools when appropriate.
Quote
In your corner of the industry, what differentiates an experienced programmer/hobbies from a professional?
A job. By definition, a professional is one who does this for a job. I've seen plenty of students and hobbyists write awesome code, and there are professionals that write crappy code. Though when we encourage people to be professional in their programming practices, we are encouraging people to be top-notch programmers, not the crappy kind obviously.
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!
At the university level, things that "push the boundaries" are research. And research involves theory at some level. If you're looking to go into a niche area, like virtual reality, do research on computer graphics. Find something that interests you, and meet with the professor doing research on it. Maybe you'll never use high-end computer graphics in your day-to-day job, but it's a great resume builder, at the very least.
Quote
sense your started programing, what has been your favorite project, personal or work related.
I did some research on the Traveling Salesman Problem last year. That was by far my favorite. I really got to explore graph and tree algorithms, and their tradeoffs.
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 don't participate in open source projects b/c I don't have the time and sufficient interest. If I had more time to do development outside of class and my job, I'd be doing more graph theory than anything else.
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?
I think the Tiobe index is a good indicator of what to learn. Temper it with the area(s) you are job hunting in. When I was internship hunting a couple years ago, the jobs were almost exclusively .NET and Java EE. Just b/c Tiobe may rank C++ at a certain level doesn't mean that's the language you will be using in your geographic area.
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 find that I enjoy my job. I'm not looking to change anytime soon.
Quote
What would be the most important 10 job interview questions and answers someone would need to know?
I'm probably not the best person to answer this- an HR person is. I would be prepared to discuss your qualifications, display your technical skills, and provide your interviewer with a copy of your portfolio.
Quote
At what age did you seriously get into programming?
I started at age 14 really getting into computer programming. I picked up Java during our algorithms unit in my freshman IT class in high school.
Quote
@macosxnerd101, Dogstopper, Programmist, pbl, and jon.kiparsky:
1. What do you think is the greatest strength and weakness the java programming language has compared to other languages?
1. What do you think is the greatest strength and weakness the java programming language has compared to other languages?
Java has two things on a lot of other languages- the JVM and market penetration. If you're writing an enterprise grade application, it will most likely be in Java EE. If you're writing a mobile app, it will more likely be in Android, followed closely by Objective-C (for the iPhone). And Android is easier to get started with than Objective-C. The other thing I love about Java are its error messages and documentation. Java has the friendliest error messages and documentation for a lot of languages I've seen.
Quote
2. 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 don't work with C# really, so take this with a grain of salt. This goes back to my answer to your first question though- the JVM. C# isn't cross-platform, in terms of libraries. You have .NET for Windows, and Mono for other platforms. This produces limitations in writing code that can run anywhere. Java doesn't have this restriction, unless you're talking about moving to the mobile platform.

New Topic/Question
This topic is locked






MultiQuote














|