Q and A With The Pros - The Answers

Our Pro's answer your questions

  • (2 Pages)
  • +
  • 1
  • 2

19 Replies - 16588 Views - Last Post: 26 May 2010 - 12:17 PM

#1 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1642
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Q and A With The Pros - The Answers

Post icon  Posted 17 July 2009 - 11:40 AM

Well here it is (finally) the questions you have asked of our experts over the past couple months have arrived, with answer too (go figure). Each of the following Experts (in certain) fields have been asked a series of questions from you, the members who make Dream.In.Code the #1 Programming Community on the internet!

First let’s take a look at the experts who you will be reading from (Not necessarily in that order)
  • Baavgai View Post
  • Martyr2 View Post
  • NickDMax View Post
  • PsychoCoder (That would be moi) View Post
  • Programmist View Post
  • PBL View Post
  • Skyhawk133 (Our fearless leader) View Post
  • SixOfEleven View Post
  • Amadeus View Post
The format will follow as such:
  • Questions asked of all the experts will be addressed by our experts first
  • Followed by the questions asked specifically by a member of the community
Once you have read the answers this will remain open for comments and discussion so feel free to post your comments :)

Is This A Good Question/Topic? 3
  • +

Replies To: Q and A With The Pros - The Answers

#2 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1642
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Re: Q and A With The Pros - The Answers

Posted 17 July 2009 - 12:43 PM

PBL was the first to get his answers so he goes first:

From Everyone

Quote

Skyhawk133: If you could suggest just one thing for a student interested in a programming career to learn/do, what would it be?


I don't think you can isolate a single thing. Even if you could identify which one is the more important it is not by doing that one that you will be able to actually do good coding.

Quote

SwiftStriker00: As a computer science student graduating within the next few years I am consistently hearing how my jobs are being outsourced yet my I have a few professors telling that they are coming back (I can't tell if they are just trying to keep me motivated). So my two part question is:
  • Being in the field you have seen first hand where the jobs go, and over the last decade is the trend to outsource or keep jobs state side, or is there a more recent change in said trend?
  • Everyone knows that good work ethic, pride in the subject, and good grades help, is there any good tactics to market myself or ways to win over employers to keep the job local?


I have always been the one to whom outsourcing was done so there will always be job for consultants but I don't think a shop can run only with consultants

Quote

bdprogrammer: Hello, i have a question. As i am not a computer science student(doing my graduation in other engineering subject) can i build my career as a software developer? What is needed to learn? I will be highly pleased if you show some way of starting my journey. Thanks in advance.


There are a lot of shops where programming is done by people having their main background in engineering or accountant. In bio-medical fields you'll find physicians and pharmacists doing the coding. You will still need "pure" computer specialists for the network and the servers but they do not represent 25% of the job.

Quote

crazyjugglerdrummer:Where do you think the OS trends are going? What impacts will this have?Windows Vista is gradually replacing windows XP, will this allow us to use more cutting edge .NET technology as people upgrade? Mac OS X and Linux are steadily gaining popularity, Is cocoa mac development/linux development going to be more important in the future? Will we finally get C# semi-cross platform with MONO?


Nobody can really predict what will be "the" OS in 5 or 10 years. 10 years ago VM, Solaris, VMS were holding more than 50% of the market and they are almost completely done. Not a serious company will hire you based on the OS you learned at school. Being a software specialist means that you would update (upgrade) yourself as technology evolves. Learn in which OS you want, this OS will probably be outdated anyway when you'll graduate.

Quote

masteryee: do any of you actually NOT have a bachelor's degree in computer science or computer engineering? If so, how difficult was it getting into the industry in terms of landing a full-time programming job? I know you're all programming gurus, but I'm curious how important a degree is to you and/or your employers, and how you would evaluate a potential coworker or employee who does not have a bachelor's degree, but knows how to code. Thanks.


I am a drop out from Physics... but that was in 1973
At that time anybody that knew a bit about logic circuits were hired for the new computers
If you are lucky an got a first job, then futur employer will look more at your experience and realisations that at your degrees


Quote

red_4900:To elaborate on the above post, how would someone like me, who's taking system engineering, fare when trying to get into the industry? We do learn programming, although not as detail as those in CS do. I'm more interested in desktop application than system-embedded software, so I would appreciate it if any of you could give me any advice on trying to break into the industry.


Same answer as above

Quote

Smurphy:Have you ever had trouble communicating with people? To give an example last night after watching the video on Google wave I was excited. Tried to explain it to my my dad and he was extremely rude and exclaimed he didn't understand, saying everything short of "I do not give a shit I am watching UFC ugg ugg me smash" Any tips on trying to communicate with people who are not computer savvy? I seem to be stuck trying to fix problems no one understands and am the target anytime a computer breaks.


I don't think watching a video on Google wave has nothing to do with computer. Sure it is technology but you are not forced to use it. You can still by car with manual transmission or buy black and white TV (may be not :-)) If you can discuss with your dad on the message transmitted in that video that is what counts.


Quote

papuccino1:Do you think that eventually there will be an ultra-high level language, essentially making us coders unnecessary? Maybe we won't be called coders anymore (because we'd just say to the computer: do this, make that), and be known as something entirely different.


They said that 50 years ago when Fortran was introduced. Programmers won't be needed anymore because engineers will be able to program their problems themselves. The thing is that as technology evolves other fields where it can be applied growths so don't worry.
Secretary haven't lost their job typing letters for their boss when word processing was introduce. Now they do not type their boss messages anymore but because they are a lot more productive with the word processor that they use to be with a type writer they have 50 times more reports to produce.


Quote

nick2price:As you probably know Moore's law states that the number of transistors that can fit onto a silicone chip will double approx every two years, a trend which has continued for over fifty years. When do you think this trend will stop and what do you feel the next step will be in silicone design? I read a topic about the future being 3d silicone chips. Also, Just to get an argument, when do you think the first AI robot capable of outshining a human will be developed and what technologies do you think it will be developed in?



They are talking about quantic computers. That will be the next big step.

Quote

masteryee:Cloud computing has become a big topic over the past few years. Do you think it will become the next big trend and gain a lot of traction? Do you like the idea of the OnLive MicroConsole that will supposedly offer efficient cloud gaming?


I know nothing about gaming.


Quote

PJLabowski:
  • Do any of you have experience with distributive programming?
  • What do you think about the fact that the best developers have managed to do is create a Go game that plays at an intermediate amateur level and takes over 100 hours a turn on a supper computer? My cousin, who is a CS prof at Georgia Tech, thinks it's a matter of "teaching" the pc to "think" like the professionals do.
  • Those of you who work with databases. Can you point us to some good books for working with them and Java?


  • Yes what is the question.
  • GO is a very bad example. It is a kind of game really difficult to code.
  • Any SQL manual will do. When you'll know SQL integrating with Java is nothing.



Quote

macosxnerd10: When going into college, do you think a computer science degree of an Information Systems degree looks better to employers and why?


Depends of the college I guess. The distinction between the 2 must vary a lot between college to college.

Quote

macosxnerd101: When you are coding and need to use a data structure, which one do you think of first? Why do you prefer this structure over the others that exist?


You will have to provide an example. And Java does not have structure. The equivalent of a C/C++ struct must be put in a class.

Quote

Nic30n3: What is the fastest and best way for a computer science graduate with no professional experience to land a job as a programmer?


I guess it depends a lot in the country where you live.

Quote

firebolt: My teacher said that if you want to make money for a long time, then databases is the way to go. Correct me if I am wrong. But will programming (as in a dedication to a language/s; creating programs for a business) do the same?


Will be a question of luck in your first jobs I guess

Quote

ivey.eli: What is the pay like for normal programmers and are many jobs in the industry that pay more than say, a doctor? If so, what are these jobs and what are the kinds of skills would someone require to get the jobs? Thanks!


Depends of the country where you live

Quote

jase81: Computer programmer, Software engineer, Software developer, Software architect... etc etc
  • Are there any differences between these (or other similar) titles or are they just a way for programmers to market themselves?
  • If they are different, what is the definition for each title?


I think it is more a question, for the employer, to determine the rate of pay

Quote

alexlafreniere: Do any of you have experience in Bioninformatics? If so, please explain what an aspiring Bioninformatics student could look forward to in college and in working life. I'm just fishing here, as I realize nobody in the "Pros" section listed any Bioninformatics skills.


No

Quote

ditsy5154: Is it worth it to learn C++ for a language? I mean, what are the odds of my video game being published? Are any programming codes easier than C++. If so, what are they, and can they make 3D games? Thanks in advance.

PS: I am not in college, and therefore not learning programming. I am in 7th grade. I don't even have programming homework.


Sure learn C++

Quote

ghqwerty: looking at going into software development for a missile and aerosystems company where my dad currently works as a manager type person. wondering what language is best to learn c# or c++ or c and also a little brief explanation on what the software actually does in something like a missle (apart from take it to its target lol well how )


Learn the 3 the difference between them are not that different. Then, for a specific project, you'll be able to judge which one fits the best

Quote

ditsy5154: I am a 13 year old kid, and I want to make an action game. What would be the easiest programming code for me to learn? I have a short attention span. Anybody can answer. Also, it is a 3D action game. I already installed CodeBlocks. This is for C++ and C, OpenGl, and Ogre3D. Should I get new software? I also need FREE ways to learn the easiest programming.


Surely easier to start with Java

Quote

ladyinblack: Where do you see the evolution of programming to be, in the future?
Considering I started out with GWBasic and some started with other things which I don't know about (let say assembly language since some still use in programming PICs but now they use C) then moved on with Turbo pascal, then further down the line with now C++, Java and the like. And for the current year, we get Django and Grails, by the way to me its new, certainly not listed on your Programming Help menu here.[/i]


The guy who pretends he knows the answer to that question is a liar..

Now questions specifically for PBL:

Quote

Core: what made you choose Java as your primary language instead of something else, like C++?


I have code in C for years. When they introduced C++ I hate it. C++ is patched C to accommodate the new feature but being still able to run old C code. Java was started from scratch in a clean and logic way.

Quote

firebolt: You have about 35 years of programming experience and I was wondering, how has programming changed in all those years and what are your thoughts on the future of programming and changes in languages?


Being in the field, you'll have to study every year to keep in touch with technology.Java and even C didn't exist when I started to code. If I haven't learn those languages on the fly I would be unemployed today.

Quote

Fuzzyness: I am currently waiting to start college, I am going to have to choose my major and as I was going over the list of Majors I knew what I want to go into, Computer Science. I however ran into a slight problem, there is Computer Programming and Computer Science as a major. My academic Advisor couldn't tell me jack sh** about the difference. I love Java, tried C++ and hated it, took Ap Comp Sci I my senior year before graduating High school and have fell in love with it. I wish to pursue a career in a Java based field.


Does not matter. Your future employer won't hire you because you know Java more than C++ or vice versa or he is not a good employer.Taking a Java Course Track, what is the difference in a Computer Science Major and Computer Programming major? Is one more beneficial to a programmer then the other?

Should I look into taking one of them then going back and taking the other? Must depend a lot of the school/college. I am sure that at some places they are almost equivalent

Was This Post Helpful? 0
  • +
  • -

#3 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1642
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Re: Q and A With The Pros - The Answers

Posted 17 July 2009 - 12:58 PM

Now let's move on to SixOfEleven, first the questions for all the members

From Everyone

Quote

Skyhawk133: If you could suggest just one thing for a student interested in a programming career to learn/do, what would it be?


There are actually two things that I recommend to a student interested in a career in programming. The first is if you are interested in web development, don't neglect programming. The reverse is true for those interested in programming, don't neglect web development. The other is learn how to write and communicate well.

Not matter what type of job you are interested in, freelancing, working with a company or developing your own software company, you will definitely have to interact with others. If you are freelancing, you will have to make bids, communicate with clients and write documentation. Being professional in your communications and documentation will be valuable. If you are part of a company, you will have to follow their standards.

You will have to write reports, attend meetings and work in groups. Being able to communicate with others and write reports, documentation are things that you will have to do. If you are creating your own company, good communication skills and writing
kills will also be invaluable.


Quote

SwiftStriker00: As a computer science student graduating within the next few years I am consistently hearing how my jobs are being outsourced yet my I have a few professors telling that they are coming back (I can't tell if they are just trying to keep me motivated). So my two part question is:
  • Being in the field you have seen first hand where the jobs go, and over the last decade is the trend to outsource or keep jobs state side, or is there a more recent change in said trend?
  • Everyone knows that good work ethic, pride in the subject, and good grades help, is there any good tactics to market myself or ways to win over employers to keep the job local?


To be honest, I haven't worked for a company for six years now. The ones that I did work for did prefer in house programmers. Many companies prefer to keep their code in house and proprietary. This is definitely true for game makers. Freelancing is a good way to make a living.

Good communication skills will help you tremendously. The first time an employer sees your resume, there will be a cover letter with it. This cover letter will be the first thing they read. You will need to make a good impression. Having a portfolio web site, CD or memory stick that you can give the interviewer can be helpful. Try and work on projects while you are in school. Creating any application or web site if you are into web development will be helpful later on down the road.


Quote

bdprogrammer: Hello, i have a question. As i am not a computer science student(doing my graduation in other engineering subject) can i build my career as a software developer? What is needed to learn? I will be highly pleased if you show some way of starting my journey. Thanks in advance.


I have two friends here who are engineers but have careers related to software development. I'm not sure how many electives you have in your engineering program but I would consider taking a few classes on programming. Object-oriented analysis, design and programming would all be very helpful to you in the search of a job in software development as object-oriented is by far the most used in software development.

Learning a .NET language and C++ would both be helpful as well. If you can't take the courses at university or college, try working on relevant real world applications.


Quote

crazyjugglerdrummer:Where do you think the OS trends are going? What impacts will this have?
Windows Vista is gradually replacing windows XP, will this allow us to use more cutting edge .NET technology as people upgrade? Mac OS X and Linux are steadily gaining popularity, Is cocoa mac development/linux development going to be more important in the future? Will we finally get C# semi-cross platform with MONO?


OSes have come a long way since I've started out. In the past they were all console based. I think the first true GUI OSes I saw were for the Mac and the Amiga. OS/2 and Windows were not far behind. I think the GUI trend will continue, making it easier and easier for people to use their computers.

I do hope that Mac OS X and Linux will continue to gain support and popularity. I also hope that .NET will become cross platform. Microsoft would have to allow the other OSes access to the .NET framework or the other OSes would have to develop their own libraries that will work with C#. I don't think it is out of the realm of possibility.


Quote

masteryee:do any of you actually NOT have a bachelor's degree in computer science or computer engineering? If so, how difficult was it getting into the industry in terms of landing a full-time programming job? I know you're all programming gurus, but I'm curious how important a degree is to you and/or your employers, and how you would evaluate a potential coworker or employee who does not have a bachelor's degree, but knows how to code. Thanks.


No, I don't have a degree in computer science. I did computer studies and mathematics. You will have to remember I got into the industry 16 years ago though. Things have changed a lot since then. I know many people who are in the industry that don't have computer science degrees.

Some of them have degrees in engineering, two of them having electrical engineering degrees. Two having MBAs as well. I have one friend who is a professor at a university, who teaches first year programming, that is an electrical engineer as well. He also maintains his departments network.

I would say that while a degree is important, there are other alternatives. In Ontario, in Canada, there are colleges and universities. Colleges give you a diploma, which a lot of companies will accept, where as universities will give you a degree.


Quote

red_4900: To elaborate on the above post, how would someone like me, who's taking system engineering, fare when trying to get into the industry? We do learn programming, although not as detail as those in CS do. I'm more interested in desktop application than system-embedded software, so I would appreciate it if any of you could give me any advice on trying to break into the industry.


I think system engineering would be an excellent way to break into the industry. I don't think straight programming is essential in breaking into the industry. I would suggest, while you are in university to create real world applications. Understanding how systems work will be invaluable in your pursuit of a job in either creating desktop applications or embedded systems. Don't neglect web development though. As the Internet continues to evolve there will be more and more opportunities in web development.

Quote

Smurphy:Have you ever had trouble communicating with people? To give an example last night after watching the video on Google wave I was excited. Tried to explain it to my my dad and he was extremely rude and exclaimed he didn't understand, saying everything short of "I do not give a shit I am watching UFC ugg ugg me smash" Any tips on trying to communicate with people who are not computer savvy? I seem to be stuck trying to fix problems no one understands and am the target anytime a computer breaks.


Yes, communication can be difficult. Like I responded to Skyhawk133's question, communication is an important part of working with others. Learning how to express yourself, in writing and verbally are both important skills to learn. Try and not neglect them. How to communicate with those who are not as you said computer savvy can be difficult.

This can be a problem in freelancing when you have a client who wants a project but doesn't know what is involved and the scope of the project. One thing I do recommend is the KISS approach, Keep It Simple Stupid. Try and not overwhelm the person with technical jargon. I realize that some times this is inevitable but if they are not understanding, take a step back and think of a way to explain it with out using technical jargon.

I recently had to explain to a family friend why upgrading his anti-virus software was a good idea. It took quite a while, as he is not computer literate at all. The same is true for my father. He keeps call his USB UBS and such. To tell the truth, he is quite lost since my mother passed on, as she was the one who kept the computer going, but I try and break things down into terms that he understands.



Quote

papuccino1:Do you think that eventually there will be an ultra-high level language, essentially making us coders unnecessary? Maybe we won't be called coders anymore (because we'd just say to the computer: do this, make that), and be known as something entirely different.


Interesting question. There is always the possibility for programming to evolve to that level. But then, there would be the people who would have to code that. If you look at say the Star Trek universe, where there is a high level language. Somebody would still have to program the systems that would run it.

It could definitely not be programming like we know it. As our ability to process natural language and understand artificial intelligence increases there is always the possibility of reaching that level. I doubt it will be anytime soon though.


Quote

nick2price:As you probably know Moore's law states that the number of transistors that can fit onto a silicone chip will double approx every two years, a trend which has continued for over fifty years. When do you think this trend will stop and what do you feel the next step will be in silicone design? I read a topic about the future being 3d silicone chips.

Also, Just to get an argument, when do you think the first AI robot capable of outshining a human will be developed and what technologies do you think it will be developed in?



I am not too familiar with silicone chip technology. It is true that chips have been growing at a phenomenal rate. If you were to look back, there was a time when a 640KB machine was considered to be top of the line. Memory has changed dramatically since then with memory being in the gigabytes not hard to do. Processors have also changed dramatically. There are desktops out that would rival early super computers. As well storage space has exploded. I think that the future is in nanotechnology with superconductors.

AI is also something that has been increasing over the years. To outshine a human, the memory would have to be enormous and the transfer rate phenomenal. Another problem, in my mind, is in teaching the AI and have it to continue learning on it's own.

Natural language processing will also have to be improved as parsing human speech is still difficult. I have no idea when these things could be reached. Even teaching a computer to play game, like Go and Chess is hard. If you look at other games, like strategy games, you can easily out think the computer. Many games that you play against the computer will also cheat at higher difficulty levels, instead of building a better AI, they will give the computer advantages such as extra resources, letting the computer know what the map. The more complex the game, the harder it is for the computer to process the results.


Quote

masteryee:Cloud computing has become a big topic over the past few years. Do you think it will become the next big trend and gain a lot of traction? Do you like the idea of the OnLive MicroConsole that will supposedly offer efficient cloud gaming?


I'm very interested in cloud computing and it's use in peer-to-peer games. I would like to look into it deeper and use it more but at the moment there are more things on my plate to deal with. I think it could be very useful in peer-to-peer gaming. I do think that it is an emerging technology that needs to be explored further


Quote

PJLabowski:
  • Do any of you have experience with distributive programming?
  • What do you think about the fact that the best developers have managed to do is create a Go game that plays at an intermediate amateur level and takes over 100 hours a turn on a supper computer? My cousin, who is a CS prof at Georgia Tech, thinks it's a matter of "teaching" the pc to "think" like the professionals do.
  • Those of you who work with databases. Can you point us to some good books for working with them and Java?



No, I don't have experience with distributive programming.Creating an AI that could play a game of Go would be hard. The fact that we can teach a computer to do anything on it's own is amazing. We are basically telling something that only understands ones and zeros how to understand the world around it. How to process information and learn as it goes.

As you can see from the world around you, there are many complex systems. Games are some of the most complex. There are nuances to games, like Go, that only a human will understand. Teaching a computer to think on it's own is hard. You would need tremendous speed and memory. If you look at the way we think a human brain works, it is about the most complex system out there. Model such a complex system would be tremendously hard.



Quote

macosxnerd10: When going into college, do you think a computer science degree of an Information Systems degree looks better to employers and why?


I think they both have their merits. A think a computer science degree is a generalization. You would have an understanding of many different aspects of the computer. From what I know of an Information systems degree, that is more about programming business systems and information management. As most companies deal with business systems and information management a degree in Information Systems would be just as valuable.

Quote

macosxnerd101: When you are coding and need to use a data structure, which one do you think of first? Why do you prefer this structure over the others that exist?


I am not sure what you are asking here. I like to use dynamic data structures, such as the List class in the .NET framework. I like data structures that can be expanded later as the program I'm working on grows in complexity. I guess you can say there is no one perfect data structure out there, it depends a lot on what you are trying to accomplish. Dynamic data structures are usually my first choice though.


Quote

Nic30n3: What is the fastest and best way for a computer science graduate with no professional experience to land a job as a programmer?


I would say, that if you want a position with a company as a programmer, would be to do freelance work as well as create relevant, real world applications to build a portfolio. Being able to communicate to the potential employer that you are the right fit for the job can also be a big bonus. Having a good, solid portfolio with excellent references to show that you can fill the job is I would say the best way.


Quote

firebolt: My teacher said that if you want to make money for a long time, then databases is the way to go. Correct me if I am wrong. But will programming (as in a dedication to a language/s; creating programs for a business) do the same?


As you can guess, there will always be a need to store and search through data. Database programming will pretty much always be needed, in my opinion. Most companies deal in information management in my experience. Being able to work with databases as well as programming business systems, which will pretty much have to do with databases, will always be in demand.I know you asked this question of pbl but I thought I would offer you the changes I've seen in programming over the past thirty years. One of the first big changes in programming, in my mind, was the move to object-oriented programming. It pretty much revolutionized the way we think of programming today. That was the first big change I remember.

The move from C to C++ was a huge change in the way I thought of programming. The next big one was moving from owning the operating system, like in MS-DOS, to having to share the operating system, like in Windows programming. In console programming you typically decided what to do and when to do it. In Windows style programming you had to respond to events the user wanted to do. Another big change was visual programming, like Visual Basic. Being able to create programs by dragging controls onto a window was a tremendous change.

Another one was managed code, like .NET. True cross platform programming, like Java, with the program being able to run on any system that could process Java byte code was also a big change. The last one I can think of is web development. That was also a big change in the way the world of programming worked. Being able to create applications that could run from a computer that did not have the source code was a big change. So, you can see that programming has really evolved over the past thirty years.


Quote

ivey.eli: What is the pay like for normal programmers and are many jobs in the industry that pay more than say, a doctor? If so, what are these jobs and what are the kinds of skills would someone require to get the jobs? Thanks!


Sorry, I can't really offer any recent information on that. I have not really worked in the industry as a programmer for several years. I've been focusing more on writing than programming. However, I do know some local companies that offer their services that charge $30+ Canadian for their services.

Quote

jase81: Computer programmer, Software engineer, Software developer, Software architect... etc etc
  • Are there any differences between these (or other similar) titles or are they just a way for programmers to market themselves?
  • If they are different, what is the definition for each title?


Yes, there are differences in the titles, in my mind. I don't have definitions of each but the role they would play in creating software would be different. For example, in a company a computer programmer would be a person who writes classes or modules that would fit into a bigger software package. A software engineer or software developer would be the person responsible for designing the system. They would be responsible for deciding what would be included in an application.


Quote

alexlafreniere: Do any of you have experience in Bioninformatics? If so, please explain what an aspiring Bioninformatics student could look forward to in college and in working life. I'm just fishing here, as I realize nobody in the "Pros" section listed any Bioninformatics skills.


No, that would be a specialization of computer science. It does look like a fascinating field though. I wish you the best in it.

Quote

ditsy5154: Is it worth it to learn C++ for a language? I mean, what are the odds of my video game being published? Are any programming codes easier than C++. If so, what are they, and can they make 3D games? Thanks in advance.
PS: I am not in college, and therefore not learning programming. I am in 7th grade. I don't even have programming homework.


Yes, it will definitely be worth your while to learn C++ if you want to get into programming. You might not be able to get your game into a big publishing house like EA but the indie scene is rapidly gaining popularity. When it comes to 3D games C++ is usually the language of choice. There are many libraries and packages that would make creating 3D games easier in C++. I started programming at age 10 so I don't think that age should limit you in programming. I would recommend learning C++ well before you start programming games.

Games programming is a specialization of general programming. Knowing how to program in C++ would make game programming a lot easier. I wouldn't say that it is easier or better but you could also look into the XNA framework with C#. It is an excellent way to create games.


Quote

ghqwerty: looking at going into software development for a missile and aerosystems company where my dad currently works as a mager type person. wondering what language is best to learn c# or c++ or c and also a little brief explanation on what the software actually does in something like a missle (apart from take it to its target lol well how )


I would think that software for aerospace systems could be written in C or C++. I think that assembler would be more likely though. I don't see something like C#, which is for Windows, being used in a system like a missile would use. Systems for aerospace would require real time processing. The code would have to be fast and optimized. C++ would reduce the performance

slightly, because of the over head involved. An aerospace system might not even run on Intel, AMD or other chipsets. They would probably have their own chipsets.


Quote

ditsy5154: I am a 13 year old kid, and I want to make an action game. What would be the easiest programming code for me to learn? I have a short attention span. Anybody can answer. Also, it is a 3D action game. I already installed CodeBlocks. This is for C++ and C, OpenGl, and Ogre3D. Should I get new software? I also need FREE ways to learn the easiest programming.


Many programmers have a short attention span. The thing is, creating a game takes a lot of work. C++ would be a good place to start game programming. I haven't used CodeBlocks or OpenGL or Ogre3D so I can't advise you on that. If you are developing for Windows, Visual C# 2008 Express and XNA 3.1 Framework would be excellent places to start with game programming.

I know that you probably want to dive right into game programming but ideally you should know how to program in the language you want to create games in before you start programming games. There will be no easy. It will take a lot of work.


Quote

ladyinblack: Where do you see the evolution of programming to be, in the future? Considering I started out with GWBasic and some started with other things which I don't know about (let say assembly language since some still use in programming PICs but now they use C) then moved on with Turbo pascal, then further down the line with now C++, Java and the like. And for the current year, we get Django and Grails, by the way to me its new, certainly not listed on your Programming Help menu here.


You and I have followed similar paths in learning programming. I learned BASIC first, on the VIC20 and TRS80. Then I actually moved to COBOL before Pascal. Then C then to C++, VB6 and .NET languages. Programming languages continue to evolve. I think platform independence will be one of the major evolutions in programming languages.

Web based programming and Java have shown that being able to execute code on different operating systems could the future. The problem is that there is competition between the different platforms, Mac, Windows, Linux, etc. Each of them wants their share of the market.


Now for questions directed at SixOfEleven

Quote

Core: As an active XNA user I can say that it is a good place to start for those who are just getting into game programming. However, do you think that it is also a domain for professional game developers? We don't see too many major game projects being developed in XNA.



I agree, XNA is an excellent place to start with game programming. I would like to think that XNA may become a domain for professional game developers. XNA is still a relatively new technology. Just like any new technology it will take time for it to be considered seriously. I'm not sure how many out there will remember this but it took some time for game developers to realize that Windows was a good platform for creating games.

Many were used to having complete control of the operating system, like in MS-DOS. They had better control over the computer and some even went so far as to have a customized operating system that had nothing to do with MS-DOS. They had complete control of the computer and they liked it. The same is true for just about any new technology. .NET took some time to be considered a reasonable platform, Java took a while.

Developers don't seem to like to immediately switch to something new. I believe, that in time, with a few professionals taking the time and creating some excellent game with XNA it might become a serious platform. It is good for the independent developer though. With now being able to create games for the Zune it might gain a little more popularity as well. I guess part of the problem might also be because it is written with C# and it is managed code and big developers don't like managed code Time will tell, let's hope that it does become a platform for professional developers.

Was This Post Helpful? 0
  • +
  • -

#4 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1642
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Re: Q and A With The Pros - The Answers

Posted 17 July 2009 - 01:15 PM

Now for Amadeus

From Everyone

Quote

Skyhawk133: If you could suggest just one thing for a student interested in a programming career to learn/do, what would it be?


If I had to pick one thing to really concentrate on, it would be concepts, as opposed to specific implementations. Understand data structures, not a specific linked list. Understand concurrency, not simply just implementing two threads. Once you understand programming concepts, you can implement in any language.

Quote

SwiftStriker00: As a computer science student graduating within the next few years I am consistently hearing how my jobs are being outsourced yet my I have a few professors telling that they are coming back (I can't tell if they are just trying to keep me motivated). So my two part question is:
  • Being in the field you have seen first hand where the jobs go, and over the last decade is the trend to outsource or keep jobs state side, or is there a more recent change in said trend?
  • Everyone knows that good work ethic, pride in the subject, and good grades help, is there any good tactics to market myself or ways to win over employers to keep the job local?


There has indeed been a huge shift towards outsourcing in the last decade, mostly for economic reasons (it’s a fraction of the price). However, it’s been painfully obvious over time that much of the supposed savings have been vapor – while saving on the cost of developers, companies have add costs in 2 main areas – project management/oversight and quality assurance.

The quality of the code developed in outsourcing situations is traditionally lower than in house, and requires significant project management overhead to keep on top of delivery. The delivered product also has to be more rigorously tested and yields more defects that in house (or at least on-shore) development. Communications ahs also proven to be a major challenge. More recently, there has been shot to bring a lot f the broad development work back on shore, while off shoring discrete pieces of work (something like automating a test suite). Please note my response applies to enterprise scale businesses, not the small/medium business market. There are still many advantages to off shoring smaller pieces of work.

2) Emphasize that you have a track record of quality deliveries.


Quote

bdprogrammer: Hello, i have a question. As i am not a computer science student(doing my graduation in other engineering subject) can i build my career as a software developer? What is needed to learn? I will be highly pleased if you show some way of starting my journey. Thanks in advance.


Assuming that you are already programming in one way or another, I’d suggest taking few intermediate or advanced programming classes to build your skill set. If you’re already top-notch, look for an opportunity to pout your programming knowledge into practice – small assignments, automation tasks, areas in which you can showcase your skills and build a portfolio. Think about joining one of the larger open source projects out there, resolving a few bugs.

Quote

crazyjugglerdrummer:Where do you think the OS trends are going? What impacts will this have?
Windows Vista is gradually replacing windows XP, will this allow us to use more cutting edge .NET technology as people upgrade? Mac OS X and Linux are steadily gaining popularity, Is cocoa mac development/linux development going to be more important in the future? Will we finally get C# semi-cross platform with MONO?


OS trends are a complex subject – lot of potential out there, with many possibilities. While Vista has never come near the projected adoption rates, Windows 7 is likely to win over the XP crowd, and maybe a few others outside it. Linux and Mac have both made big steps towards more cross platform compatibility, as has Microsoft in the last few years (albeit in a different approach).

Short term, I don’t think you’ll see any massive changes in adoption rates over the next few years – Windows will continue to be the major player as suits the needs of the majority of users more than adequately. So much peripheral software has been built for Windows compatibility that any fundamental shift to one of the other major platforms will certainly require time, and it may never happen.
I find some of the testing around cloud type OS’s very interesting…lot of potential there, especially for enterprise grade companies.


Quote

masteryee:do any of you actually NOT have a bachelor's degree in computer science or computer engineering? If so, how difficult was it getting into the industry in terms of landing a full-time programming job? I know you're all programming gurus, but I'm curious how important a degree is to you and/or your employers, and how you would evaluate a potential coworker or employee who does not have a bachelor's degree, but knows how to code. Thanks.


I do have a degree in computer engineering, but I did not when I began as a programmer, I had a degree in math. Of course, at the time, the industry was screaming for developers, and degrees were not that important, just talent. The industry has changed somewhat with the proliferation of developers over the last 15 years, and degrees do play a bit of a more important role.

From a hiring perspective, I do not base my choice on having a programming degree or not – talent and drive still wins out for me. That being said, I will sometimes grant interviews to people based on the fact that they have a programming degree, simply because I make an assumption that they are at least moderately well versed in programming concepts. Not always the case :)


Quote

red_4900: To elaborate on the above post, how would someone like me, who's taking system engineering, fare when trying to get into the industry? We do learn programming, although not as detail as those in CS do. I'm more interested in desktop application than system-embedded software, so I would appreciate it if any of you could give me any advice on trying to break into the industry.


I’d think you would fare well (depending on your area, of course). Many of the courses re: programming you are taking are likely focused in programming concepts, which is really the most important piece. As for advice – try to build a portfolio, join some open source projects, and show your value to prospective employers :)

Quote

Smurphy:Have you ever had trouble communicating with people? To give an example last night after watching the video on Google wave I was excited. Tried to explain it to my my dad and he was extremely rude and exclaimed he didn't understand, saying everything short of "I do not give a shit I am watching UFC ugg ugg me smash" Any tips on trying to communicate with people who are not computer savvy? I seem to be stuck trying to fix problems no one understands and am the target anytime a computer breaks.


I’m afraid I don’t have a great answer – having spent a good portion of my life speaking to crowds in one way or another, communication has not been one of my difficulties. I can offer the same old tips you’ve likely heard before, however. When it comes to communicating with someone who does not share your interest in a subject, tray and frame it or relate it to something they do understand or find interesting.

Quote

papuccino1:Do you think that eventually there will be an ultra-high level language, essentially making us coders unnecessary? Maybe we won't be called coders anymore (because we'd just say to the computer: do this, make that), and be known as something entirely different.


Very interesting question. We’ve actually already seen the seeds of this with the development and adoption of IDEs and languages like VB over the years – both of those had the distinctly stated goal of making programming a viable option for a wider audience than just the hardcore coder.

We continue to make steps in this direction, so your thought may not be far off the mark. That being said, there is a till a need to translate that high level information into a language (1s and 0s) that a computer will understand, so I surmise there may always be a need for lower level programming, even if it may be contained to the translation layer between interface and implementation.


Quote

nick2price:As you probably know Moore's law states that the number of transistors that can fit onto a silicone chip will double approx every two years, a trend which has continued for over fifty years. When do you think this trend will stop and what do you feel the next step will be in silicone design? I read a topic about the future being 3d silicone chips. Also, Just to get an argument, when do you think the first AI robot capable of outshining a human will be developed and what technologies do you think it will be developed in?



I’m afraid I’m not as skilled in the hardware aspects as some of the other experts, so I’ll defer to them.

Quote

masteryee:Cloud computing has become a big topic over the past few years. Do you think it will become the next big trend and gain a lot of traction? Do you like the idea of the OnLive MicroConsole that will supposedly offer efficient cloud gaming?


I do think cloud computing will become one of the next large scale initiatives with a lot of traction, particularly as it relates to operating systems and content management systems. I’m not familiar with OnLive MicroConsole.

Quote

PJLabowski:
  • Do any of you have experience with distributive programming?
  • What do you think about the fact that the best developers have managed to do is create a Go game that plays at an intermediate amateur level and takes over 100 hours a turn on a supper computer? My cousin, who is a CS prof at Georgia Tech, thinks it's a matter of "teaching" the pc to "think" like the professionals do.
  • Those of you who work with databases. Can you point us to some good books for working with them and Java?


  • I come from a telecommunications background, where distributed computing models are fairly common over the various networks, so am certainly familiar with it with the main tents of distributed programming. That being said, I’ve not had a great deal of experience in that field from a programming perspective.
  • See above
  • My experience is mostly with JDBC…never read a book on it, but have certainly devoured the online documentation. Sun lists some JDBC related books here ) Understanding the query language is the first step...once done, implementing it any language is pretty easy.



Quote

macosxnerd10: When going into college, do you think a computer science degree of an Information Systems degree looks better to employers and why?


As this likely refers to U.S based educational streams, I’ll defer to my U.S colleagues. Not sure of the content of one vs. the other in the U.S.

Quote

macosxnerd101: When you are coding and need to use a data structure, which one do you think of first? Why do you prefer this structure over the others that exist?


I'll start by assuming you mean a pre supplied data structure, as opposed to buliding one's own. If that is the case, for me, it’s pretty much always a vector, and pretty much for the usual reason – automatic memory management.If we're including user defined data structures, I'll build my own class most times.

Quote

Nic30n3: What is the fastest and best way for a computer science graduate with no professional experience to land a job as a programmer?


Connections! ;) All joking aside, with no experience, you need to build a portfolio you can show case to prospective employers…consider doing dome pro bono work.

Quote

firebolt: My teacher said that if you want to make money for a long time, then databases is the way to go. Correct me if I am wrong. But will programming (as in a dedication to a language/s; creating programs for a business) do the same?


Yes and no. Dedication to a single language is never a wise idea (look around and tell me how many COBOL only programmers still have a secure career path :) ), but understanding programming concepts, regardless of language, should keep you comfortable if you’re any good.

As for the database side, it’s simple economics…they are far fewer people who go into database development or database administration (and do it well) than there are programmers. It’s a smaller pool, it’s a vital function, and therefore demand is higher. In Canada, a skilled and certified DBA can pretty much write their own ticket on the open market.


Quote

ivey.eli: What is the pay like for normal programmers and are many jobs in the industry that pay more than say, a doctor? If so, what are these jobs and what are the kinds of skills would someone require to get the jobs? Thanks!


I can’t speak for the world, but in Canada, very few professions as a whole make more than doctors – certainly not your average programmer or support consultant.

Quote

jase81: Computer programmer, Software engineer, Software developer, Software architect... etc etc
  • Are there any differences between these (or other similar) titles or are they just a way for programmers to market themselves?
  • If they are different, what is the definition for each title?


there are subtle differences (and some large ones), although many folks with those individual designations find themselves performing overlapping responsibilities.

Quote

alexlafreniere: Do any of you have experience in Bioninformatics? If so, please explain what an aspiring Bioninformatics student could look forward to in college and in working life. I'm just fishing here, as I realize nobody in the "Pros" section listed any Bioninformatics skills.


I have no background in bioinformatics...apologies.


Quote

ghqwerty: looking at going into software development for a missile and aerosystems company where my dad currently works as a manager type person. wondering what language is best to learn c# or c++ or c and also a little brief explanation on what the software actually does in something like a missle (apart from take it to its target lol well how )


I’m afraid I don’t have any background in missile systems, but presume much of the programming would be around targeting, systems management, and accounting for aeronautical variables.

Quote

ditsy5154: I am a 13 year old kid, and I want to make an action game. What would be the easiest programming code for me to learn? I have a short attention span. Anybody can answer. Also, it is a 3D action game. I already installed CodeBlocks. This is for C++ and C, OpenGl, and Ogre3D. Should I get new software? I also need FREE ways to learn the easiest programming.


Using OpenGl with C/C++ is extremely versatile, but some of the more complex interactions require an understanding of deeper mathematical concepts. There are many game development engines out there that make things easier on new game developers starting out...you may want to visit the games forum here at DIC to get an idea about how some of those engines may be useful to you.

Quote

ladyinblack: Where do you see the evolution of programming to be, in the future? Considering I started out with GWBasic and some started with other things which I don't know about (let say assembly language since some still use in programming PICs but now they use C) then moved on with Turbo pascal, then further down the line with now C++, Java and the like. And for the current year, we get Django and Grails, by the way to me its new, certainly not listed on your Programming Help menu here.


Well Django and Grails are actually frameworks as opposed to languages, both designed to speed up development (Grails leverages the language Groovy, which is based on java, while Django leverages python I believe), but the examples are good. I feel there will be a continued trend towards frameworks such as these (and of course the big players like .NET). That being said, I don’t think we’ll see C++ or Java dropping of the radar anytime soon :) .

Questions specifically for Amadeus:

Quote

Core:as a database administrator, what was the worst problem you encountered when managing a database server?



Wow, good question. It’s been a number of years, but one of my largest single problems was not database related…it was people related. I came into a shop as the DBA (among other things) to find that a) the production data was not being backed up regularly to a prod mirror, B) that several company employees (including 2 from Marketing for God’s sake) had direct access to the database server so they could run ad hoc queries as required.

I put a stop to both practices immediately. Many smaller companies, and even medium sized ones, are not aware of the true value of their data – without it, their day to day operations would be paralyzed – yet here were several users directly accessing the server. One wrong key stroke could delete a data set, not return it for analysis! Fun times.


Quote

xiii1408: What would you advise those studying C++ on their own to study after finishing their first C++ book supposing the book covers C++ concepts leading up to and including the STL?



My number one recommendation for C++ books is always the one from the source: http://public.resear...om/~bs/3rd.html. You get that down pat, you’ve got a great foundation. From there, you may want to look at advanced data structures, algorithms, or programming techniques…depends what you may be interested in.

Was This Post Helpful? 0
  • +
  • -

#5 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1642
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Re: Q and A With The Pros - The Answers

Posted 17 July 2009 - 01:51 PM

Now for PsychoCoder (Me :) )

From Everyone

Quote

Skyhawk133: If you could suggest just one thing for a student interested in a programming career to learn/do, what would it be?


I'm not sure this could be narrowed down to a single item that would make them wanted in the field. If I had to pick a single item I would say to concentrate on the concepts of programming. If you have the general concepts down then learning new languages will be a lot easier on you

Quote

SwiftStriker00: As a computer science student graduating within the next few years I am consistently hearing how my jobs are being outsourced yet my I have a few professors telling that they are coming back (I can't tell if they are just trying to keep me motivated). So my two part question is:
  • Being in the field you have seen first hand where the jobs go, and over the last decade is the trend to outsource or keep jobs state side, or is there a more recent change in said trend?
  • Everyone knows that good work ethic, pride in the subject, and good grades help, is there any good tactics to market myself or ways to win over employers to keep the job local?


Yes a lot of jobs are being outsourced, simply because a corporation can outsource and pay several programmers about the same as they would pay someone like myself. I have seen a trend where more jobs are staying home, and the Government is thinking about rewarding corporations who keep the jobs here in the US. I say keep yourself motivated, there will always be programming jobs in the US

Quote

bdprogrammer: Hello, i have a question. As i am not a computer science student(doing my graduation in other engineering subject) can i build my career as a software developer? What is needed to learn? I will be highly pleased if you show some way of starting my journey. Thanks in advance.


I think someone like an Electrical Engineer could be a good programmer becuase they have the ability to pay attention to the small things, and have already shown the aptitude to perform complex tasks. I've worked with several programmers in my career who were not initially programmers.

Quote

crazyjugglerdrummer:Where do you think the OS trends are going? What impacts will this have?
Windows Vista is gradually replacing windows XP, will this allow us to use more cutting edge .NET technology as people upgrade? Mac OS X and Linux are steadily gaining popularity, Is cocoa mac development/linux development going to be more important in the future? Will we finally get C# semi-cross platform with MONO?


It's hard to say where it will go, it seems my crystal ball is broken (waiting for it to get back from the shop :P) I hope to see Linux grow in popularity, and they have the Mono project which is a Linux version of .Net.

Quote

masteryee:do any of you actually NOT have a bachelor's degree in computer science or computer engineering? If so, how difficult was it getting into the industry in terms of landing a full-time programming job? I know you're all programming gurus, but I'm curious how important a degree is to you and/or your employers, and how you would evaluate a potential coworker or employee who does not have a bachelor's degree, but knows how to code. Thanks.


I personally have a couple degrees, including a Masters but I have worked with many excellent programmers who have no degree. The problem is as things change employers are looking more and more for a degree. I guess this is because it shows that you are willing to stick to something until it's complete.I know when I'm looking at potential programmers the first thing I look for is their education and whether they have a degree, but it is not something that will make or break the deal.

Quote

red_4900: To elaborate on the above post, how would someone like me, who's taking system engineering, fare when trying to get into the industry? We do learn programming, although not as detail as those in CS do. I'm more interested in desktop application than system-embedded software, so I would appreciate it if any of you could give me any advice on trying to break into the industry.


One thing you can do is to study it on your own, practice makes perfect.

Quote

Smurphy:Have you ever had trouble communicating with people? To give an example last night after watching the video on Google wave I was excited. Tried to explain it to my my dad and he was extremely rude and exclaimed he didn't understand, saying everything short of "I do not give a shit I am watching UFC ugg ugg me smash" Any tips on trying to communicate with people who are not computer savvy? I seem to be stuck trying to fix problems no one understands and am the target anytime a computer breaks.


Some people you can just never communicate. My wife and son are not programmers but they at least try to grasp what I'm talking to. One thing non-geeks get frustrated with is when we use industry geek lingo when trying to explain something. That normally makes them think that not only do we thing we're better than them, but that we're talking down to them.Always try to put things in terms that anyone can understand, and make sure to not come across as condescending.


Quote

papuccino1:Do you think that eventually there will be an ultra-high level language, essentially making us coders unnecessary? Maybe we won't be called coders anymore (because we'd just say to the computer: do this, make that), and be known as something entirely different.


I dont see this happening (I know a short answer but that's just my feeling on it :) ).

Quote

nick2price:As you probably know Moore's law states that the number of transistors that can fit onto a silicone chip will double approx every two years, a trend which has continued for over fifty years. When do you think this trend will stop and what do you feel the next step will be in silicone design? I read a topic about the future being 3d silicone chips. Also, Just to get an argument, when do you think the first AI robot capable of outshining a human will be developed and what technologies do you think it will be developed in?



Unfortunately I dont have a lot of experience and expertise in that field so I'll leave it to the ones who do :)

Quote

masteryee:Cloud computing has become a big topic over the past few years. Do you think it will become the next big trend and gain a lot of traction? Do you like the idea of the OnLive MicroConsole that will supposedly offer efficient cloud gaming? I know nothing about gaming.


Quote

PJLabowski:
  • Do any of you have experience with distributive programming?
  • What do you think about the fact that the best developers have managed to do is create a Go game that plays at an intermediate amateur level and takes over 100 hours a turn on a supper computer? My cousin, who is a CS prof at Georgia Tech, thinks it's a matter of "teaching" the pc to "think" like the professionals do.
  • Those of you who work with databases. Can you point us to some good books for working with them and Java?


  • Yes what is the question.
  • GO is a very bad example. It is a kind of game really difficult to code.
  • Any SQL guide (whether it be MySQL, MSSQL) or Oracle book will help learn what you need. I would honestly say that I use more online resources than I do actual books.



Quote

macosxnerd10: When going into college, do you think a computer science degree of an Information Systems degree looks better to employers and why?


I guess it depends not only what it taught in each program at your college and what potential employers are looking for

Quote

macosxnerd101: When you are coding and need to use a data structure, which one do you think of first? Why do you prefer this structure over the others that exist?


I guess it really depends on the situation and what exactly I need to accomplish. I really dont think one structure is better than the other(s).

Quote

Nic30n3: What is the fastest and best way for a computer science graduate with no professional experience to land a job as a programmer?


Networking, networking, networking. It's (a lot of the time) who you know and not what you know.

Quote

firebolt: My teacher said that if you want to make money for a long time, then databases is the way to go. Correct me if I am wrong. But will programming (as in a dedication to a language/s; creating programs for a business) do the same?


You will always want to know the latest in database technology, especially considering that the large majority of databases run on some kind of database. Also, learn and know XML, this is something a lot of employers are looking for (at least in my area).

Quote

ivey.eli: What is the pay like for normal programmers and are many jobs in the industry that pay more than say, a doctor? If so, what are these jobs and what are the kinds of skills would someone require to get the jobs? Thanks!


Depends of the country where you live

Quote

jase81: Computer programmer, Software engineer, Software developer, Software architect... etc etc
  • Are there any differences between these (or other similar) titles or are they just a way for programmers to market themselves?
  • If they are different, what is the definition for each title?


I think they're all essentially the same, they perform pretty much the same tasks.

Quote

alexlafreniere: Do any of you have experience in Bioninformatics? If so, please explain what an aspiring Bioninformatics student could look forward to in college and in working life. I'm just fishing here, as I realize nobody in the "Pros" section listed any Bioninformatics skills.


Unfortunately I have no experience with this so I'll let thos who do address this question :)

Quote

ditsy5154: Is it worth it to learn C++ for a language? I mean, what are the odds of my video game being published? Are any programming codes easier than C++. If so, what are they, and can they make 3D games? Thanks in advance. PS: I am not in college, and therefore not learning programming. I am in 7th grade. I don't even have programming homework.


Yes it's worth it to learn C++, considering it is one of the most used language in the industry (and has been for many a year now). Once you know C++ very well switching to a new language is a snap.

Quote

ghqwerty: looking at going into software development for a missile and aerosystems company where my dad currently works as a manager type person. wondering what language is best to learn c# or c++ or c and also a little brief explanation on what the software actually does in something like a missle (apart from take it to its target lol well how )


I know nothing in this field, sorry :)

Quote

ditsy5154: I am a 13 year old kid, and I want to make an action game. What would be the easiest programming code for me to learn? I have a short attention span. Anybody can answer. Also, it is a 3D action game. I already installed CodeBlocks. This is for C++ and C, OpenGl, and Ogre3D. Should I get new software? I also need FREE ways to learn the easiest programming.


I would personally start with Java, I think it's an easier language to learn than something like C or C++.

Quote

ladyinblack: Where do you see the evolution of programming to be, in the future? Considering I started out with GWBasic and some started with other things which I don't know about (let say assembly language since some still use in programming PICs but now they use C) then moved on with Turbo pascal, then further down the line with now C++, Java and the like. And for the current year, we get Django and Grails, by the way to me its new, certainly not listed on your Programming Help menu here.


I dont think that's a question that can honestly be answered. It's hard to tell what direction the industry will go. One trend I see emerging is functional programming with languages such as Haskell and F#.

Now questions directed specifically for PsychoCoder

Quote

Core: As a .NET developer, do you think it is a good think that .NET includes many libraries that previously required developers to write hundreds of lines of code to perform the same task? Some developers affirm that by using this instead of writing the function/class on your own (basically re-invent the wheel in this case) the developers lose their analytical/development skills.



I'm sorry, I know there are some (and always will be) that think that way, but I would have to respectfully disagree. I think it's very important to understand the logic behind the libraries, and the ability to]roll your own if needed, are important, I don't feel that using the libraries in the Framework makes a programmer more or less talented.

I, as an employer, would rather have someone who can create what is requested in the shortest amount of time (and most efficient way) possible using the libraries, than someone who insists on re-inventing the wheel for everything that's needed, increasing development time, just because he can.

I think the libraries are a good and important tool, and they accomplish a lot of tasks that would take longer to re-write than to use what is available, and a good programmer knows this (In my opinion anyways). A good programmer will use whatever tools are available to them.


Quote

bflosabre91: What are your thoughts towards WPF? Do you think it will ultimately be a windows forms replacement, or will the two coexist for years to come? How desirable do you think WPF skills are now, and/or will they become desirable in the near future? Thanks



I like WPF, I think it offers an easier way to offer a decent GUI (Something that has always lacked in my opinion with just Forms). I don't think it will ever replace WinForms (there will always be the need for quick & dirty software where the GUI isnt important), but I think if Microsoft continues to work on it, it can go a long way.

I can see WPF skills being more important in a year or so (maybe more, depends on a lot of things) than they are now, but I feel it's definitely think it's something to play with now and learn it.


Quote

Smurphy: As a project leader and manager does passion come into play at all? What I mean is if you were looking to hire a new guy and you had a choice between a good coder and an "ok" coder but that "ok" coder had a love for the job not just and ability for it. Would that help him at all?



There's a fine line there. As a Project Leader the first and foremost thing I look at is how the person thinks, and approaches a problem. Does he have the ability to think outside the box (Man how I loathe that statement lol). That's an important quality to me, some fresh thinking is nice.

Now back on topic, we all have to start somewhere, right? I would look at the OK coder, he may have more upside and hidden talent than the more experienced programmer. Love of programming (in my opinion) is important when looking at a new developer, I feel it's that passion that drives us to improve as programmers, it gives us the desire and willingness to look at new technologies, and allows us to be able to accept criticism when it comes to our code.

So to answer your question, yes I believe that love and passion for programming can help him, as long as he's willing to do what is required to become good and productive (emphasis on productive) in this industry. I have seen on many occasions when someone is well seasoned in programming, but they view it as just a job and have lost their passion, the drive that initially got them into programming, and they got out worked by someone who was young in the industry but had a serious passion for programming, so they were more willing to go the extra mile.

Was This Post Helpful? 0
  • +
  • -

#6 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1642
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Re: Q and A With The Pros - The Answers

Posted 17 July 2009 - 02:55 PM

Now for Baavgai

Quote

Skyhawk133: If you could suggest just one thing for a student interested in a programming career to learn/do, what would it be?


Become self taught. Don't wait for the perfect class, book, training seminar, whatever; figure in out by yourself. There are times, many times, when there is no standard resource available for you to learn from. You'll have to cruise forums (like this one ), read documentation, experiment, guess and try. This is normal.

If you need official word from the ivory tower before you can set out on your own, you're in the wrong field. Teach yourself, read ahead, see if you can wow the natives. The ability to learn on your own will aid you in all things. In the ever changing world of technology, it's often the only option.



Quote

SwiftStriker00: As a computer science student graduating within the next few years I am consistently hearing how my jobs are being outsourced yet my I have a few professors telling that they are coming back (I can't tell if they are just trying to keep me motivated). So my two part question is:
  • Being in the field you have seen firsthand where the jobs go, and over the last decade is the trend to outsource or keep jobs state side, or is there a more recent change in said trend?
  • Everyone knows that good work ethic, pride in the subject, and good grades help, is there any good tactics to market myself or ways to win over employers to keep the job local?


I'm going to answer both of these at the same time: communication. Being able to clearly explain what are often very abstract ideas and be able to understand the half formed ideas of others is an invaluable skill. It's a challenge even when all the people involved speak the same language. When they don't have a lingua franca in common, the effort is probably doomed.

Outsourcing has an appeal, until the message gets garbled one time too many. The reason tech jobs are drifting back is that the lines of communication are constantly being severed not by distance, but by language, culture and common ground. If you can explain yourself clearly and make that a selling point, you may just beat out the guy with far more experience who is incapable of forming complete sentences.



Quote

bdprogrammer: Hello, I have a question. As i am not a computer science student (doing my graduation in other engineering subject) can i build my career as a software developer? What is needed to learn? I will be highly pleased if you show some way of starting my journey. Thanks in advance.


My degree is in English Literature! I minored in Computer Science. I work as a developer/project manager/DBA.

Programming can simply be a job or a passion. A good employer can spot those who are enthusiastic about programming. Write stuff on your own, if you haven't already. Create your own experience as a software developer. Show this off at the interview. I'll hire someone who clearly enjoys programming (and is any good at it ) over someone who looks good on paper but just does the minimum.

Know nothing? Start with Java, or Python, or whatever language appeals to you. Write your first "hello world" program in go from there. Every language has a tutorial; work your way through them. Take programs you've just typed in from a tutorial and make them work slightly differently. If you get any idea for something, run with it. You have to enjoy programming, otherwise it's just another job and a challenging one at that.



Quote

crazyjugglerdrummer: Where do you think the OS trends are going? What impacts will this have?


Smaller. Netbooks are one of those "black swan" events in computer marketing. No one saw them coming, people really like them, and Vista gives them an aneurysm. Windows 7 is no less resource intensive. Microsoft is stuck. They can put out something like CE on devices, but it doesn't really offer what their customers expect. The desktop market, for the foreseeable future, has achieved a kind of parity. Microsoft still rules, Apple loyalists are still loyal and continue to gain members, Linux is marginal. However, given hardware trends, Linux might sneak in on the Netbooks and phone side.

I'm really hoping Android does well. It's poised to be the next big thing in a few months from now, if the hardware vendors backing them don't flinch. We shall see.



Quote

crazyjugglerdrummer: Is cocoa Mac development/Linux development going to be more important in the future?


Apple maintains its iron grip on things like iPhone, where devs have to pay to play and even then can be vetoed; they've intentionally closed themselves off and cannot have organic growth. Linux devs mostly program for love; if something comes along that allows them to leverage that, that's nice.

Quote

Will we finally get C# semi-cross platform with MONO?


Parts of C# specs are an open standard. However, much of what makes .NET work in an enterprise is not. Mono tries to fill in the blanks, but as long as MS continues to play OSS whack-a-mole, cross platform seems unlikely.


Quote

masteryee: Do any of you actually NOT have a bachelor's degree in computer science or computer engineering? If so, how difficult was it getting into the industry in terms of landing a full-time programming job? I know you're all programming gurus, but I'm curious how important a degree is to you and/or your employers, and how you would evaluate a potential coworker or employee who does not have a bachelor's degree, but knows how to code. Thanks.


See above. But, depending how this gets edited together:

I have a Bachelor's in English Literature, a minor in Computer Science, and two unfinished minors in Philosophy and Journalism; Liberal Arts is fun.

I am a full time programmer. I take breaks to manage others and do DBA and sysadmin stuff. I started as an administrative assistant (i.e. secretary, boy Friday) at a consulting company with the understanding I'd have PC clients. You work enough contracts, your resume looks pretty good and no one is real bothered by your something like theater degree.

A very large number of people who work professionally in IT found their way from other fields. I evaluate potential employees strictly on job experience and if I feel they can do the job. If you have no experience, you must convince me that you really like programming. Anyone who hasn't programmed for fun will fail that last one.



Quote

red_4900: - To elaborate on the above post, how would someone like me, who's taking system engineering, fare when trying to get into the industry? We do learn programming, although not as detail as those in CS do. I'm more interested in desktop application than system-embedded software, so I would appreciate it if any of you could give me any advice on trying to break into the industry.


Just starting out, you have to impress the interviewer. Tell me what you've done. Tell me what you've done that wasn't required but actually interested you. You wouldn't hire a dog trainer that doesn't own a dog. I don't want a programmer who only programs when they HAVE to.

Quote

Smurphy: Have you ever had trouble communicating with people? To give an example last night after watching the video on Google wave I was excited. Tried to explain it to my dad and he was extremely rude and exclaimed he didn't understand, saying everything short of "I do not give a shit I am watching UFC ugg ugg me smash" Any tips on trying to communicate with people who are not computer savvy? I seem to be stuck trying to fix problems no one understands and am the target anytime a computer breaks.


Don't bother explaining in-jokes to people who aren't in. Any number of things brings tech geeks joy. SciFi entertainment, Month Python, Anime, some viral videos, etc. You'll find people who are into that and those that aren't. You have only two possible outcomes if you tell a coworker your new Orc Warrior just hit 60, either "Cool, what server?" or they look at you like you're from mars. Given the later if far more likely, best to test the waters.

For explaining tech to non tech folks; be nice. Jargon has two functions, one is to precisely identify something, the other is to make non speakers feel like idiots. All too often, techies take joy in making others feel stupid; don't be that guy. Don't assume a normal person will know what you mean when you say "the hard drive controller died", because they won't. Rather, say something like "all your files are stored on the hard drive. The connection from that thing to the rest of the computer seems to be broken. It's a replaceable part and if we're lucky those files will be reachable once we replace that part." You'll need to explain more, of course.

Understand that people feel vulnerable when they don't know what's going on. This makes people edgy, often defensive, and sometimes aggressive. You're the doctor. You job is to explain things in such a way that makes them feel they have some idea what's going on. You calmly understand all this tech stuff. Yes, it's confusing; I don't understand some of it myself. But I believe I understand this problem and this is how we can fix it. No, it's not your fault, everyone is confused by that.

Let me say that again. What talking tech to someone, it is NOT their fault that they don't know something. Even if they do the stupidest thing in the world, ignorance is always a sound defense in computers. Making someone feel like a moron is counterproductive.

Why do they always ask you? Probably because you followed the above rules and make people feel comfortable asking. Once non computer person finds a non threatening computer person to help them, they won't forget them. In such cases, perhaps it helps to be more of a bastard.



Quote

papuccino1: Do you think that eventually there will be an ultra-high level language, essentially making us coders unnecessary? Maybe we won't be called coders anymore (because we'd just say to the computer: do this, make that), and be known as something entirely different.


No. Well, not in our lifetimes.

People can barely explain what they want to another person, let alone a computer. The reason computers drive people nuts is that they do "exactly" what you tell them. People function on a myriad of cues beyond simple language. There's a lot of context we take for granted. There are situations where one person might say to another "do it" and they know what is meant.

Even with conventional computer languages, the result of code that writes code is usually pretty crappy. It lacks context, because it must allow for the most possibilities.

In order to tell a computer what you want and have it just do it, it would need to have an AI comparable to our I. AI continues to fail for the simple reason that, when it comes right down to it, we really don't know how we think what we think.



Quote

nick2price: As you probably know Moore's law states that the number of transistors that can fit onto a silicone chip will double approx every two years, a trend which has continued for over fifty years. When do you think this trend will stop and what do you feel the next step will be in silicone design? I read a topic about the future being 3d silicone chips. Also, Just to get an argument, when do you think the first AI robot capable of outshining a human will be developed and what technologies do you think it will be developed in?


Quantum computers will be cool, don't you think? The current solution, given technical blocks already experienced, is massive parallel processors. With this model, the fact that the CPU isn't getting that much faster should be irrelevant; just add more.

AI: This kind of dove tails into the positronic brain. We will ultimately make a true AI with something akin to neural network. That is, set up the environment and then treat it like a human. We don't really understand intelligence, but we could reasonably set up conditions where it might happen, using ourselves as a blue print. Imagine if all those CPUs, billions of them, were part of a neural network?

The first true AI will be a baby. When it reaches its mental maturity we'll dump its core and call it Bob. The next one will be called Lilith and the porn industry will be on its way.



Quote

masteryee: Cloud computing has become a big topic over the past few years. Do you think it will become the next big trend and gain a lot of traction? Do you like the idea of the OnLive MicroConsole that will supposedly offer efficient cloud gaming?


No. Cloud computing will not be a trend. Why? Because by the time it's actually useful, it will have acquired an different buzzword. :P

In a sense it's already here. Why install an email client when the web based ones do just fine and I can access them from anywhere? There will most likely be a realization of "give unto the Cloud that which belongs to the Cloud" and we'll see more things like Google Gears. We want our stuff available in a consistent homogeneous fashion, but we don't want to be completely dysfunctional when our connection is severed.


Quote

PJLabowski:
  • Do any of you have experience with distributive programming?
  • What do you think about the fact that the best developers have managed to do is create a Go game that plays at an intermediate amateur level and takes over 100 hours a turn on a supper computer? My cousin, who is a CS prof at Georgia Tech, thinks it's a matter of "teaching" the pc to "think" like the professionals do.
  • Those of you who work with databases. Can you point us to some good books for working with them and Java?


  • We all do, we call it ARPA Net... ok, sorry, not really.
  • Go is a real strange game. Win conditions are simply not that clear cut and that's what messes with the game engine. Two experienced Go players agree on who owns what. Most of the time it's unquestionable, other times they fight it out and both loose. The history of AI is frustrated by this kind of problem; fuzzy conditions that a small child can see but a super computer can't. If I show you someone's picture, you can tell me their gender, approximate age, racial background, etc. A computer is hard pressed to tell you if it's actually a person. Until a computer can tell the difference between Tom Cruise and Penelope Cruz, it can't win Go.



Quote

macosxnerd101: When going into college, do you think a computer science degree of an Information Systems degree looks better to employers and why?


It depends on the employer. A degree at a college is pretty much at the discretion of the college. You could get linear algebra in economics if someone thought matrix transformations proved an economic theory of the moment. A degree gets you in the door. Most places, unless they're being very specific, would let both those degrees in the same door. It's up to you to take it from there.

Quote

macosxnerd101: When you are coding and need to use a data structure, which one do you think of first? Why do you prefer this structure over the others that exist?


It really depends on the language. Easy answer, in C++, Java, C#, the structure is always a class. In PHP, Javascript, Python, Lua, even Ruby ( OMG, Ruby is so OO ), the choice is often an associative array. In C, its struct and that's it. Most other languages will have variations on that theme.

There is no "one size fits all" in any language. It's always situational, that's why people need programmers.



Quote

Nic30n3: What is the fastest and best way for a computer science graduate with no professional experience to land a job as a programmer?


Interviews.... I'd recommend working for a consulting company, if you can get it. That way you'll see lots of different places and if you find one you like, maybe they'll poach you.


Quote

firebolt: My teacher said that if you want to make money for a long time, then databases is the way to go. Correct me if I am wrong. But will programming (as in a dedication to a language/s; creating programs for a business) do the same?


Databases haven't changed all that much. They've added a lot of extras, but the basic need for CRUD functions in an RDBMS are still the same. If you started working with Oracle 25 years ago, you could still be doing the same job. Because the word "Administrator" is in the middle of DBA, they do tend to make more than a "Programmer" but probably the same as a "Senior Programmer" or "Project Manager".

C and C++ are probably the longevity plus popularity winners. However, if you want to be a programmer, don't be too attached to one language. It can change, quickly. There are still COBOL programmers maintaining things like D&B software; they all should be retiring soon, if you want their jobs. However, it's just as likely the companies will invest in a different infrastructure.

Bottom line, don't be a programmer if you can't deal with change well. Period.



Quote

ivey.eli: What is the pay like for normal programmers and are many jobs in the industry that pay more than say, a doctor? If so, what are these jobs and what are the kinds of skills would someone require to get the jobs? Thanks!


Please, don't be a programmer for the money. You'll suck at it and make others suffer. Programmers generally do well, but so do any number of civil servants with no skill requirements at all. Currently, a "Project Manager", usually someone who's been programming for close to twenty years, get make over $100K. However, markets vary and someone doing the same job elsewhere could get $60K, which is what a grunt programmer could make. They do surveys for this stuff all the time. They usually high ball it to make themselves feel better, but it will give an idea.


Quote

jase81: Computer programmer, Software engineer, Software developer, Software architect... etc etc
  • Are there any differences between these (or other similar) titles or are they just a way for programmers to market themselves?
  • If they are different, what is the definition for each title?

Unless you're a free agent and made it up yourself, the company you work for gives you the title. The titles could have slightly different meanings within that company, but they can be identical. In general, Computer programmer == Software developer. Software architect can have a specific meaning of someone who oversees the project in some way. Software engineer can relate to training, but doesn't need to; Engineers in other fields tent to be touchy about term in CS, so you don't see it often unless backed by a corporate culture or ignorance.

Quote

alexlafreniere: Do any of you have experience in Bioinformatics? If so, please explain what an aspiring Bioinformatics student could look forward to in college and in working life. I'm just fishing here, as I realize nobody in the "Pros" section listed any Bioinformatics skills.


I know very little about this. It's one of the terms that seems more buzzword than descriptive.

All programmers must be adept at writing systems that collect data in an organized fashion and distill meaning from it. I don't really see a fundamental difference if the program involves millions of data points dumped by PLCs in an industrial application and similar volume of biological research data. For a computer programmer the design challenges should be identical. The term seems more obfuscation than clarification. You see this a lot in computers; specialized fields like to think they're special. It let's contractors charge more.

You want to work in "bioinformatics"? Get a degree in computer science or something that teaches you to think like a programmer. Get a minor in biology so the people you're trying to impress will feel you're one of them. Statistics would also be a good minor; never mistake correlation for causation.


Quote

ditsy5154: Is it worth it to learn C++ for a language? I mean, what are the odds of my video game being published? Are any programming codes easier than C++. If so, what are they, and can they make 3D games? Thanks in advance.

PS: I am not in college, and therefore not learning programming. I am in 7th grade. I don't even have programming homework.


If you want to "be a programmer", learning a new language is never a waste of time. Every language adds to your experience and gives you insights into how to approach a problem that you can't find in just one language. If you're interested, don't wait for college, or high school; drive right in. You have the internet. Find something you want to do. Mod a game, write a WoW add on (Lua is a fun language ). Try Python. Just do an HTML page and make it do silly stuff with Javascript.

It really is fun once you get into it, you don't have to hold off just because you aren't taking a class. Start now.



Quote

ghqwerty: looking at going into software development for a missile and aero systems company where my dad currently works as a manger type person. wondering what language is best to learn c# or C++ or c and also a little brief explanation on what the software actually does in something like a missile (apart from take it to its target lol well how )


For such a thing, there will be something already in place that you need to talk to. If it's something Windows based, C# would be the best bet. To be clear, C# has absolutely nothing to do with C or C++ besides sharing a letter. It's a .NET language, actually THE .NET language, and has more in common with Java than anything else.

If it's not a Microsoft based framework, the C# is mostly off the table. The choice between C or C++ will probably still be made for you. C is generally favored for embedded systems. If there's a C++ class library, you'll use C++.


Quote

ditsy5154: I am a 13 year old kid, and I want to make an action game. What would be the easiest programming code for me to learn? I have a short attention span. Anybody can answer. Also, it is a 3D action game. I already installed CodeBlocks. This is for C++ and C, OpenGl, and Ogre3D. Should I get new software? I also need FREE ways to learn the easiest programming.


For action games, C++ most common. Easiest should not be the concern. Most useful should be the concern. Don't get to excited, start small. Get a ball bouncing around. Then move to pong. Doing 3D is a discipline unto itself. You'll need to get a little understanding of math, vectors and matrices and such, before you can start.

To be frank, a 3D action game is probably one of the most difficult computer projects one can do. I would highly recommend just learning the basics of C++ first. Stupid little console things. Read this site, everyone starts with those; you'll find a ton of examples. This site is an excellent resource for someone who just wants to learn. If you can do other people's homework, ultimately your own projects shouldn't seem too difficult.



Quote

ladyinblack: - Where do you see the evolution of programming to be, in the future?

Considering I started out with GWBasic and some started with other things which I don't know about (let say assembly language since some still use in programming PICs but now they use C) then moved on with Turbo Pascal, then further down the line with now C++, Java and the like. And for the current year, we get Django and Grails, by the way to me its new, certainly not listed on your Programming Help menu here.


In the early days of programming, we talked to the hardware. Now we talk to an abstraction layer. That layer can be a true virtual machine or maybe just an OS API that's inescapable. This model is only going to get more common. Android, Google's "OS", uses a language that produces code for one virtual machine to run on top of a different virtual machine. The result, and this is the goal, is that the programmer knows nothing of the underlying system.

Newer languages also revel in abstraction, with various list and dictionary abstractions being at the heart of many. While I'm not fond of "duck typing" it's here to stay and languages of the future will most likely follow suit. The language of tomorrow could be something like http://www.alice.org/ ]"Alice"[/url], where you basically drag and drop your way to code. There's little doubt that languages don't trust in the intelligence of the average programmer. Maybe one day they won't have to.


Now for the questions directed for Baavgai

Quote

Skyhawk133: What does the future of Oracle look like? Does it have a chance of gaining traction with the likes of MySQL and MSSQL?


Databases come in all sizes from SQLite all the way up to DB2. Oracle is biggest player out there, used by companies that measure transactions in petabytes. MySQL and MSSQL aren't even on the radar for these kinds of applications. So, really, do MySQL and MSSQL have a chance against Oracle on it's home turf, the answer is no.

Now, for the average business that needs enterprise application but doesn't support mega huge infrastructures, MSSQL is clearly hitting home. It's Windows, simple to install and maintain, and many applications that used to be Oracle or DB2 only now support it. That's the world MySQL was trying to break into, and now that they're owned by Oracle, they won't.

For a website, transaction processing is usually less bandwidth. The middle tier of the application/web server offsets the load and latency is often expected rather than unacceptable. In the web server backend, simple and fast has proven itself over complex and feature rich consistently. Personally, I thought MySQL actually rose to its level incompetent when it started putting complex objects inside; it's strength was simplicity and forcing business logic into the application layer. Shortly after this move, things like SQLite started to enjoy more interest.



Quote

Core: As a client-server solution developer, what do you think is the most important stage during the development of a client-server product? To be more specific, what stage of the development process influences the product most?


"The Story". That is, the initial planning stage where the client lays out their requirements. Programming is easier than people and all software ultimately addresses the needs of people. Unfortunately, those people usually have no clue what they really want or need. It can be like a detective's job. Tell me what you need, clarify points, describe your work flow in excruciating detail, once again from the top. But you said customers have only one agent. No? Let's talk about exceptions...

Once you get even a little something together, it's time to talk to the client. Show them what you have. They'll complain, point out elements you missed, and start to actually flesh out the particulars you wanted in the first place. Rinse, repeat.

The language doesn't matter, the client side and the server side don't matter; the actual functionality of the program matters. From this flows the design. Big database or little database? Are there scaling issues? Do we need a data warehouse? What kind of reports? Web client or rich client? Where is this being deployed? Is data being interfaced from existing systems? Web service? And so on. None of these things can even be considered until you understand what's required of system.


Quote

Irish18: I've two questions:
  • I've started on C# as my first programming language and was wondering if it's normal to get frustrated at slow progress? I've only been programming for about a month, but I’ve usually been on my comp every day for a good few hours and I’m still in the very basics of the fundamentals, I only just got on to 'Object-oriented programming'.
  • If I’m looking to do Software Development, which were I live (Scotland) allows you to study Computer Science at University, should I maybe think about branching into other languages once I get the grasp of C#, if so what languages?


I think I answered this at length once, so here's the short form.
  • Frustration is normal. Fighting seemingly trivial minutiae is normal. Feeling you're doing a lot of work and are no closer to the perceived goal is normal. No work you do is wasted, the time you spend now will help in the future in unforeseen ways. If you keep that in mind, it should lessen the aggravation of being stuck. It really is part of the learning process and you'll never escape it; the goal is to get stuck on NEW questions.
  • Anything. I really mean that. Any computer language will give you a different point of view. Java is a kissing cousin to C#, but they've diverged greatly; it's mostly a matter of learning the libraries. You'll ultimately find most languages like that. Once you get past syntax, which shouldn't take that long, then it's just all the built in stuff.

Was This Post Helpful? 0
  • +
  • -

#7 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1642
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Re: Q and A With The Pros - The Answers

Posted 24 July 2009 - 09:09 AM

Now for Programmist:

From Everyone

Quote

Skyhawk133: If you could suggest just one thing for a student interested in a programming career to learn/do, what would it be?


Get an internship or two while you're going to school. If things go well, the experience you gain might get you a job when you graduate, or (if you're like me) before.

Quote

SwiftStriker00: As a computer science student graduating within the next few years I am consistently hearing how my jobs are being outsourced yet my I have a few professors telling that they are coming back (I can't tell if they are just trying to keep me motivated). So my two part question is:
  • Being in the field you have seen first hand where the jobs go, and over the last decade is the trend to outsource or keep jobs state side, or is there a more recent change in said trend?
  • Everyone knows that good work ethic, pride in the subject, and good grades help, is there any good tactics to market myself or ways to win over employers to keep the job local?


  • Jobs are being outsourced, but it's not as bad as some people think. I lost one of my first programming jobs because it went to Mexico City. But, looking back, that job was little more than a code monkey position. The types of jobs that are being outsourced are typically lower level jobs. The funny thing is that the company I worked for had several outsourced teams and they routinely didn't make release dates or released really crappy software such that it had to be rolled back. You get what you pay for.
  • There is nothing you can do to keep a job from being outsourced. It's almost always a monetary decision made way above your head, your manager's head, and probably your director's head. When it happened to me I found another position and left 3 months before it was scheduled to happen. They wanted me to train my replacement, but I gave 2-weeks notice before I had to do that. Probably more satisfying than giving them the finger.


Quote

bdprogrammer: Hello, i have a question. As i am not a computer science student(doing my graduation in other engineering subject) can i build my career as a software developer? What is needed to learn? I will be highly pleased if you show some way of starting my journey. Thanks in advance.


Can you? Sure. You can do whatever you like. If, however, you're in school for another engineering topic, you'll need to make time to practice programming. It's not something you can just read about. You have to practice a lot and move to more and more complicated projects. I would recommend picking up a beginning programming book (Deitel and Deitel books are usually good) and going though that. Do plenty of the exercises and projects in the book. When you feel confident, write a program related to whatever you are studying. Personalizing it will make it easier to learn.

Quote

crazyjugglerdrummer:Where do you think the OS trends are going? What impacts will this have?
Windows Vista is gradually replacing windows XP, will this allow us to use more cutting edge .NET technology as people upgrade? Mac OS X and Linux are steadily gaining popularity, Is cocoa mac development/linux development going to be more important in the future? Will we finally get C# semi-cross platform with MONO?


I'm not an OS expert. If you want to know about OS trends read the news. Google OS was just released. It's supposed to blur the lines between the web and the OS. Multi-core processors are commonplace now, so I'd expect that OSes (and all software) will be made to take advantage of that. Windows and Mac haven't changed dramatically over the last few years. I mean, pretty much every OS in existence right now is basically a glorified copy of X-Windows, windows 95, or one of those earlier OSes. Sure they do a lot more, but the paradigm is basically the same.

Quote

masteryee:do any of you actually NOT have a bachelor's degree in computer science or computer engineering? If so, how difficult was it getting into the industry in terms of landing a full-time programming job? I know you're all programming gurus, but I'm curious how important a degree is to you and/or your employers, and how you would evaluate a potential coworker or employee who does not have a bachelor's degree, but knows how to code. Thanks.


I got into the industry while I was working on my B.S. I started off with a couple of internships- one for a large multinational and one for a startup that eventually failed for lack of funding. I'm now working on my M.S. in Intelligent Systems. I've been working full-time for many years now and never had that hard of a time getting a job.

There have been times, however, when companies refused to even interview me because I lacked a degree. That's going to happen. People will tell you that as long as you are good and have experience that you'll do fine. That may be true and if "fine" is good enough for you then, well, that's fine. :) A degree does not make a good programmer. I can not say this strongly enough. But if you want all of the opportunities, you'll need to jump through the academic hoops. Who knows - you might actually learn something new along the way.


Quote

red_4900: To elaborate on the above post, how would someone like me, who's taking system engineering, fare when trying to get into the industry? We do learn programming, although not as detail as those in CS do. I'm more interested in desktop application than system-embedded software, so I would appreciate it if any of you could give me any advice on trying to break into the industry.


90% of the programming I learned was not in the classroom. If you've got a computer-related degree, teach yourself to program, and maybe do some internships you should be fine.

Quote

Smurphy:Have you ever had trouble communicating with people? To give an example last night after watching the video on google wave I was excited. Tried to explain it to my my dad and he was extremely rude and exclaimed he didn't understand, saying everything short of "I do not give a shit I am watching UFC ugg ugg me smash" Any tips on trying to communicate with people who are not computer savvy? I seem to be stuck trying to fix problems no one understands and am the target anytime a computer breaks.



This is more of an IT question, not a programming question but I'll entertain it since I'm still feeling charitable. Any computer savvy people have to deal with this. I've built my own PCs for years and have always been the "computer guy" in my family. My advice to you is
  • Don't build a PC for anyone else ever no matter how much they pay you. It's not worth it.
  • Don't offer to fix PCs for anyone ever. If your mom and dad need help tell them to call tech support.
Sounds heartless, but it's not. It's called setting boundaries. As far as communicating technical details to non-computer-savvy people - I try to avoid it as much as possible. if you absolutely have to use analogy as much as possible, but without sounding like your talking down to them.



Quote

papuccino1:Do you think that eventually there will be an ultra-high level language, essentially making us coders unnecesary? Maybe we won't be called coders anymore (because we'd just say to the computer: do this, make that), and be known as something entirely different.


It's possible. Advancements in AI may make programming simpler since intelligent computers will not have to be told every detail of an algorithm. You might say "Hal. Watch all flights from NY to Paris over the next few months and email me the details for any that are below $400 and leave on a Wednesday." Hall will write the algorithm to do all that because it's smart enough to know what it needs to do. And Hal could write it in machine language and make it as efficient as possible. This is a good way off, but it's not impossible.

Quote

nick2price:As you probably know Moore's law states that the number of transistors that can fit onto a silicone chip will double approx every two years, a trend which has continued for over fifty years. When do you think this trend will stop and what do you feel the next step will be in silicone design? I read a topic about the future being 3d silicone chips. Also, Just to get an argument, when do you think the first AI robot capable of outshining a human will be developed and what technologies do you think it will be developed in?



No offense, but both questions can be easily answered using Google.

Quote

masteryee:Cloud computing has become a big topic over the past few years. Do you think it will become the next big trend and gain a lot of traction? Do you like the idea of the OnLive MicroConsole that will supposedly offer efficient cloud gaming?


It has certainly caught on. It's got all the caché of "Web 2.0", but I'm not really all that enamored with it. No doubt it does have its uses and I do expect to see more and more applications as broadband speeds and saturation continue to rise, but the network is probably always going to be a bottleneck, so ti wont be applicable to all types of applications. There are also privacy and security concerns that will keep if from becoming ubiquitous in all sectors in the near future as well.


Quote

PJLabowski:
  • Do any of you have experience with distributive programming?
  • What do you think about the fact that the best developers have managed to do is create a Go game that plays at an intermediate amateur level and takes over 100 hours a turn on a supper computer? My cousin, who is a CS prof at Georgia Tech, thinks it's a matter of "teaching" the pc to "think" like the professionals do.
  • Those of you who work with databases. Can you point us to some good books for working with them and Java?


1 and 2 not applicable to me and 3 is Googleable.



Quote

macosxnerd10: When going into college, do you think a computer science degree of an Information Systems degree looks better to employers and why?


This is really subjective and depends heavily on the school. However, in many cases I'd say that CS degrees are usually more mathematically and scientifically rigorous. This may not be true for all schools, but if the school is halfway decent the CS program should be one of the "hardest" (along with EE, Math, and Physics). If employers know this they're likely to respect the CS degree more. This doesn't mean the CS person will always get the job though. They may be able to get away with paying the IS person less, so they may choose them. Hard to say really.

Quote

macosxnerd101: When you are coding and need to use a data structure, which one do you think of first? Why do you prefer this structure over the others that exist?


It depends on the problem at hand. I don;t have a "favorite" data structure. They all have well documented strengths and weaknesses and any good computer scientist or software engineer will pick the best one for the job - period.

Quote

Nic30n3: What is the fastest and best way for a computer science graduate with no professional experience to land a job as a programmer?


As I've mentioned in previous questions: internships.

Quote

firebolt: My teacher said that if you want to make money for a long time, then databases is the way to go. Correct me if I am wrong. But will programming (as in a dedication to a language/s; creating programs for a business) do the same?


It depends on what he means by "databases" Maybe he means DBA? These guys are babysitters, in my opinion, who are often on call 24/7 on some rotating schedule. Maybe it pays well - maybe not, but it doesn't look like much fun to me. Maybe he means people who write Oracle PL/SQL queries and stuff like that. This kind of job is very vendor specific and, once again, doesn't look that fun to me. I'm also seeing a lot of people replace their PL/SQL with Hibernate and other DB abstractions. This is not always smart, but people are definitely doing it. I don't see programming going away anytime soon. Languages will go in and out of favor, but as long as you keep up you should be ok. I wouldn't choose a career based solely on money anyway. That's a a way to almost guarantee unhappiness.

Quote

ivey.eli: What is the pay like for normal programmers and are many jobs in the industry that pay more than say, a doctor? If so, what are these jobs and what are the kinds of skills would someone require to get the jobs? Thanks!


Pay is very region, experience, and technology specific. The last time I checked Java developers made a good bit more than .Net developers, but that may have changed. Look at Indeed.com and you'll find pay ranges for all kinds of jobs and experience levels (Junior, mid-level, senior. team lead, architect, manager, director, etc). I've seen positions in the Dallas area pay as high as $110K for a senior developer. Architects can make more than that. If you want to know the skills required, also look on indeed at the job descriptions. Many of them list specific technologies and also soft skills.

Quote

jase81: Computer programmer, Software engineer, Software developer, Software architect... etc etc
  • Are there any differences between these (or other similar) titles or are they just a way for programmers to market themselves?
  • If they are different, what is the definition for each title?


Many of the first three terms are often used interchangable, but really shouldn't be. Programmer should imply the ability to program. Developer should imply the ability the solve problems by creating and writing programs. A developer is a Programmer, but not necessarily vice versa.

Software Engineer implies a developer who has a degree in software engineering and/or is familiar and proficient with the current practice of software engineering including OOAD, architechture, and many others. An Architect is typically someone who has been writing software for many years and is proficient at software engineering and the strengths and weaknesses of varying technologies such that he/she can see the big picture.

This person should be able to pick and choose the right technologies to design large scale applications with ease. You can contrast this with a software engineer as the SE might just be building one component of a system while the architect is designing the entire system. Architects don't usually write a lot of code, but let others do it while coordninating with PMs or team leads to ensure things are going smoothly and working as expected.

These are my definitions. You may find they vary from person to person.


Quote

alexlafreniere: Do any of you have experience in Bioninformatics? If so, please explain what an aspiring Bioninformatics student could look forward to in college and in working life. I'm just fishing here, as I realize nobody in the "Pros" section listed any Bioninformatics skills.


No experience here. I'd talk to an advisor at your school.

Quote

ditsy5154: Is it worth it to learn C++ for a language? I mean, what are the odds of my video game being published? Are any programming codes easier than C++. If so, what are they, and can they make 3D games? Thanks in advance.

PS: I am not in college, and therefore not learning programming. I am in 7th grade. I don't even have programming homework.


There is no answer to this question. I'm sure some people will be foolish enough to attempt to answer it though. Maybe someone will point the the numerous posts with this exact question on DIC.

Quote

ghqwerty: looking at going into software development for a missile and aerosystems company where my dad currently works as a mager type person. wondering what language is best to learn c# or c++ or c and also a little brief explanation on what the software actually does in something like a missle (apart from take it to its target lol well how )


No clue. Was there even a question here?

Quote

ditsy5154: I am a 13 year old kid, and I want to make an action game. What would be the easiest programming code for me to learn? I have a short attention span. Anybody can answer. Also, it is a 3D action game. I already installed CodeBlocks. This is for C++ and C, OpenGl, and Ogre3D. Should I get new software? I also need FREE ways to learn the easiest programming.


See my answer to this person's last question, which was basically the same.

Quote

ladyinblack: Where do you see the evolution of programming to be, in the future? Considering I started out with GWBasic and some started with other things which I don't know about (let say assembly language since some still use in programming PICs but now they use C) then moved on with Turbo pascal, then further down the line with now C++, Java and the like. And for the current year, we get Django and Grails, by the way to me its new, certainly not listed on your Programming Help menu here.[/i]


I wish I knew because I'd be a billionaire. Current trends in general purpose programming point toward a move away from traditional compiled languages toward very efficient VMs. The JVM is one of the most popular VMs of late with ports of Python, Ruby, and several new hybrid languages which walk the line between functional and OO. This brings about another point. There has been a lot of interest in functional programming of late. There are many OO languages that take advantage of functional ideas (closures, etc). Rules engines like Drools have picked up a lot of speed recently, so I'd look out for that. There is also some interest in generating Domain Specific Languages (DSLs) using general purpose languages, but I don't know how much traction that has. I'm sure there are a million other things I'm missing, but these are the first ones that come to mind.

Now questions specifically for Programmist:

Quote

Core: As a Java developer, do you think that Java will still be actively used on mobile devices in a few years or it will become outdated?


The JVM was made for applications like mobile devices. I see Java and other JVM languages being heavily used for mobile devices for a long time - especially with the new project Jigsaw which should be introduced in JDK 7. This will allow the JDK to be much more modular making it easy to create a small platform with exactly the pieces you want. Also, given the ubiquity of the JVM and it's efficiency, and the new JavaFX language, it would be far-fetched to think that it won't be a huge player in mobile programming in the years to come.
Was This Post Helpful? 0
  • +
  • -

#8 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1642
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Re: Q and A With The Pros - The Answers

Posted 24 July 2009 - 09:37 AM

Now for Martyr2:

From Everyone

Quote

Skyhawk133: If you could suggest just one thing for a student interested in a programming career to learn/do, what would it be?


Never stop reading, learning, and reflecting. Read the great books, read those lousy dry books, read that article on the web which you 100% agree with, read the article in a magazine you hate. The one thing I have learned in the programming field is that everyone has a take on a programming issue and everyone has a "style". By reading all the material you can, learning from their perspective and reflecting on your own style or solution, you can decide what works for you and what doesn't and you learn about your own strengths and weaknesses in the process.

Quote

SwiftStriker00: As a computer science student graduating within the next few years I am consistently hearing how my jobs are being outsourced yet my I have a few professors telling that they are coming back (I can't tell if they are just trying to keep me motivated). So my two part question is:
  • Being in the field you have seen first hand where the jobs go, and over the last decade is the trend to outsource or keep jobs state side, or is there a more recent change in said trend?
  • Everyone knows that good work ethic, pride in the subject, and good grades help, is there any good tactics to market myself or ways to win over employers to keep the job local?


  • Jobs are coming and they are going. I have seen jobs being outsourced, screwed up over seas and returning. Often times companies do it to cut costs and sometimes in the end they realize that they got what they paid for... lousy work for a cheap price. But it also depends on the type of software you do. North America is very much becoming a service oriented economy instead of a manufacturing company. The software is also becoming service oriented rather than software a decade ago which would be used to control a machine or produce something. While I think more jobs are going than coming back, I also see new jobs springing up all the time. I wouldn't worry about not finding a single software job. We have computers, they need software.
  • The best way to show an employer that keeping a job local is to do good quality work, do it right, efficiently as possible and always below or on budget. That is the best anyone can do. Any other factors are really out of your control. You may be well on budget with all your tasks and still the management team thinks it can be done for cheaper. It may or may not work. But if you are solid in your work, companies will want you and you will find a career. Be patient.


Quote

bdprogrammer: Hello, i have a question. As i am not a computer science student(doing my graduation in other engineering subject) can i build my career as a software developer? What is needed to learn? I will be highly pleased if you show some way of starting my journey. Thanks in advance.


Actually it is encouraged to have another subject of study under your belt in addition to programming. It makes you more marketable. I have a background in natural science and even found myself teaching one of my teacher’s classes for them while I was still in school. It has helped me incredibly from understanding formulas, designing procedures and algorithms and even to think critically. So being that you have engineering and want to program, you are on great footing. My first suggestion would be to pick a programming language that MAKES SENSE to you first, grab a book and read it from cover to cover. If you have the finances, also try a class or two. I would actually do this in your university if you can. All you need is the will to read a good book and already you can do basic programs. From there it is up to you. More classes, books, online reading, magazines etc. Read all you can and learn.

Quote

crazyjugglerdrummer:Where do you think the OS trends are going? What impacts will this have?
Windows Vista is gradually replacing windows XP, will this allow us to use more cutting edge .NET technology as people upgrade? Mac OS X and Linux are steadily gaining popularity, Is cocoa mac development/Linux development going to be more important in the future? Will we finally get C# semi-cross platform with MONO?


Well the trends are still pretty quiet. Windows will continue to dominate for some time to come because they have a large built in base of programmers making applications already. They also have a large crowd of non tech savvy users who love Windows. Some say that the new Chrome OS is going to shake things up a bit, but they have a lot of work to do to build it up. That and being based on the Linux kernel, it could still alienate some of the "non techies".

Linux continues to make inroads but if you look at the track record, it has been out for years and years yet only enjoys about 8% of the market. Mac will continue to cater to the design crowd and the "fashionable" people. However, since Windows has the majority of the office business market locked up and most home users, I don't anticipate it moving at neck break speeds any time soon from what is now.

As for some shorter answers, yes Vista upgrading allows more cutting edge .NET technology. Take a look at Avalon for graphics, take a look at the security enhancements, XNA is another new thing for .NET and check out WPF and Cardspace for more examples. I think Mac will not be known for its development and I will be a bit surprised if cocoa explodes. C# cross platform... the idea has been then since 2001 and still nothing. I think it will eventually adopt a model much like Java and the virtual machine, but I don't think MONO will be part of that solution.


Quote

masteryee:do any of you actually NOT have a bachelor's degree in computer science or computer engineering? If so, how difficult was it getting into the industry in terms of landing a full-time programming job? I know you're all programming gurus, but I'm curious how important a degree is to you and/or your employers, and how you would evaluate a potential coworker or employee who does not have a bachelor's degree, but knows how to code. Thanks.


It is all about the work you do and what you can show of it. Almost every job I have seen has asked for the credentials but when push came to shove they looked at a candidate's portfolio and history of work as the deciding factor. I mean, shouldn't that be the decision maker? If I have a candidate that has proven to me that they can code some mean stuff, has great methods, great coding conventions, a proven track record of getting out great software on time and on budget, why would I take him over the one that has a degree and nothing fantastic to show?

An excellent tip, even if they ask for candidates with a bachelor's degree still apply and throw your best work at them. You will be surprised how many times you will land an interview. They typically ask for the degree because they want candidates who have completed something and accredited. But in the end, they typically will go with those who have great work, great projects and a great attitude.


Quote

red_4900: To elaborate on the above post, how would someone like me, who's taking system engineering, fare when trying to get into the industry? We do learn programming, although not as detail as those in CS do. I'm more interested in desktop application than system-embedded software, so I would appreciate it if any of you could give me any advice on trying to break into the industry.


Breaking into the industry is all about showing off what you can do. So number one thing I highly recommend is a portfolio. Make an online site to show off your work, provide samples and screenshots. Show the company what you can do for them and the types of projects you have been involved with. Take a few projects without getting paid if you need some work to start that portfolio up. They want to see what they are getting for the money. They want to know you can handle the work and produce great results. And if you do land that job, remember what got you there... your portfolio. Never stop updating it with recent work as you go along. You never know when you will need to count on that old friend again some day.

Quote

Smurphy:Have you ever had trouble communicating with people? To give an example last night after watching the video on google wave I was excited. Tried to explain it to my my dad and he was extremely rude and exclaimed he didn't understand, saying everything short of "I do not give a shit I am watching UFC ugg ugg me smash" Any tips on trying to communicate with people who are not computer savvy? I seem to be stuck trying to fix problems no one understands and am the target anytime a computer breaks.


Outside of the tech world I often have difficulty explaining tech concepts to non tech people. I have to say it is one of my weaknesses at times. One thing I do find very useful is analogies and just so happens I am good with them.

You will catch me from time to time using them on the board answering questions. Think about what the person does, quickly come up with a concept that they might do, and map the idea to the concept. If the person is a banker, they deal with money, interest rates, accounts etc. If I am explaining the concept of inheritance, I might start by telling them how you have an account and from that account you have specialized accounts like checking or savings etc. Tackle it from that perspective.

With your dad, try an analogy along the lines of a wave is like a UFC cage match with multiple martial arts fighters. They could collaborate to knock one guy out, they could invite other fighters in, they could bring in objects to use in the fight (like widgets) and even counter one another’s moves. Put it in that tone and you may find him more receptive and possibly even interested!



Quote

papuccino1:Do you think that eventually there will be an ultra-high level language, essentially making us coders unnecesary? Maybe we won't be called coders anymore (because we'd just say to the computer: do this, make that), and be known as something entirely different.


A language that unified everything else and deem coders unnecessary would be true artificial intelligence. Coders tell computers how to think and what to think. The language is our tool for doing that. As soon as we are not needed, the computer would be thinking for itself and thus learning. That time will indeed come, but with the ever fracturing code language landscape we find ourselves in right now, I don't see that happening any time soon. We appear to be drifting apart more than merging together. A typical web application right now can have up to 5 or 6 languages/scripts associated with it. How is that merging?

Quote

nick2price:As you problably know Moore's law states that the number of transistors that can fit onto a silcone chip will double approx every two years, a trend which has continued for over fifty years. When do you think this trend will stop and what do you feel the next step will be in silcone design? I read a topic about the future being 3d silicone chips. Also, Just to get an arguement, when do you think the first AI robot capable of outshining a human will be developed and what technologies do you think it will be developed in?



Well as of right now, Moore's law is still in tact. As you mentioned Silicon chips are one of a few avenues for growth. A much older thought and one that has already been proven in some applications is quantum computing which will allow computers not only to work with the switch of 1 and 0 but having both 1 and 0 at the same time by pushing it out of phase with normal space time. Sounds crazy right? It has been proven in very limited scope. I attended a session on quantum computing back in 1998 where they had already been doing simple addition with it. Now they are working with applications based on the technology which is doing parallel processing and higher level equations. I think this will eventually make it into the mainstream given the time. I do think silicon might be before this however, but the future isn't as limited as we may think.

As for AI outshining a human, that has already been done somewhat. Fritz chess software running on standard multi-core chips are already landing in top 10 rankings and beating grandmasters. This is a long way from the era of Deep Blue beating Garry Kasparov in 1997. While not true AI, it certainly has the power to beat human thinking but brute force evaluating of possible options and implementing tactics based on opponent positions. It is written primarily in C and assembler.


Quote

masteryee:Cloud computing has become a big topic over the past few years. Do you think it will become the next big trend and gain a lot of traction? Do you like the idea of the OnLive MicroConsole that will supposedly offer efficient cloud gaming?


It will become the next big thing. Do I like it? No, not really. Will it be useful for games? Only if networking can catch up and everyone has high speed fiber to the home it will. There are already companies out there experimenting with gaming from the server-side like a company called OTOY that you might want to check out.

Throughout computing history, there has been a cycle where we focus on centralized systems (central server and dumb terminals) and decentralized systems (peer to peer type networks). We tend to go to one and then back to the other. We have had the ultimate peer to peer network in the Internet, so it makes sense that we would go to centralizing all work on a server for the cloud. It makes updates, administration, security and troubleshooting easier, but it also allows those making the cloud more powerful. I am not sure I want all my data going through a cloud. The lack of privacy on this front has me worried, but I will wait and see how things shake out.



Quote

PJLabowski:
  • Do any of you have experience with distributive programming?
  • What do you think about the fact that the best developers have managed to do is create a Go game that plays at an intermediate amateur level and takes over 100 hours a turn on a supper computer? My cousin, who is a CS prof at Georgia Tech, thinks it's a matter of "teaching" the pc to "think" like the professionals do.
  • Those of you who work with databases. Can you point us to some good books for working with them and Java?


  • I don't have extensive experience in them and I have actually seen them only used in a limited capacity in my area of the industry
  • like a professional is the end goal of many computer strategy games. It is the basis of AI. We have consciousness, we learn on the fly, how do we pass that on to the computer? True AI will be just like your cousin has said, we can't cram endless facts into the computer, we must show it how to learn and then expose it to situations.
  • I would actually go as far as picking the type of database you want to work with and then finding what books are out there for Java and the database you have chosen. Picking a book on general database programming with Java will be very limited and trying to cover too much. Pick a major database like Oracle, SQL Server, MySQL and find a book at your local bookstore that matches the pair. I actually recommend going to the book store yourself, read the first chapter of a book you find and compare it against a few others you find. Take the best one you find.



Quote

macosxnerd10: When going into college, do you think a computer science degree of an Information Systems degree looks better to employers and why?


We run into this question time and time again and it always results in a debate that really never comes to a definitive conclusion. My take on it is that a CS degree looks better than an information systems degree but both can be trumped by a guy who has neither but a truckload of proven experience and a nice portfolio to back it up. I would do a CS over an information systems degree especially if you want to get into software engineering, but in either case a nice portfolio and long history of great work is what employers ultimately want.

Quote

macosxnerd101: When you are coding and need to use a data structure, which one do you think of first? Why do you prefer this structure over the others that exist?


This is all based on comfort level, knowledge, and experience. Certain situations automatically make the choice obvious. Do I need to create a hierarchy? I think a tree structure. Will each branch have only two choices? Yes, binary tree. Done. This is why it is so important to understand the problem first before tackling with code. Data structures are built around ideas found in nature and society. We think in lists, no wonder we have a list, linked list, and vector.

How we process that list and in what order will then tell us which one we need from there. This all comes from experience in recognizing the situation and pattern, knowledge of the types of data structures out there and your comfort level in implementing the given data structure in the given pattern. I find that every situation tells you which structure is best and if you get it wrong, you learn for the next time. You will pick the wrong data structure from time to time, just be willing to make the corrections when needed.


Quote

Nic30n3: What is the fastest and best way for a computer science graduate with no professional experience to land a job as a programmer?


Anything that can gain you experience before applying for the job. If you are in school, do an internship. No internships? Work for your local church or school and build them a website. Be prepared to work for little to no money for these projects. The whole goal is building experience. Before you go to land that dream job as a programmer, you want to have work to show. If all else fails, you can even hop on the computer and build a personal project and show that.

Don't expect to just slide on by in school just doing the classes and then land a top notch career as you come out. Anyone with experience AND doing the classes are going to trump you. I did a co-op program in university which nabbed me 2 years of real world experience before I even graduated. This was on top of projects I took on outside of school time and built myself a portfolio.

Employers want to see that you can work well, produce great stuff, and meet deadlines. That comes with experience. Collect all you can of that before you even graduate.


Quote

firebolt: My teacher said that if you want to make money for a long time, then databases is the way to go. Correct me if I am wrong. But will programming (as in a dedication to a language/s; creating programs for a business) do the same?


Databases make you more money because they are riskier; plain and simple. When you control a company's information on the level of a database, you are responsible for keeping it accurate, producing results and protected. Everyone needs databases to store their data and they need that data protected and sharable to those who need to see it. You might have one database administrator and a team of programmers. If something happens to that data the hammer comes down on the database administrator usually. For that the need and the pay is generally higher.

Now programming can last a long time too but it is more susceptible to being cut because languages change, business rules change and software changes much more quickly than collected data. But I have seen people make long careers out of both and you shouldn't let anything a teacher may have said to future success sway your decision. Go with what you are passionate about. Both industries are going to be around for a long long time.


Quote

ivey.eli: What is the pay like for normal programmers and are many jobs in the industry that pay more than say, a doctor? If so, what are these jobs and what are the kinds of skills would someone require to get the jobs? Thanks!


Starting pay varies from year to year and area to area. Right now in Vancouver, the typical programmer starting out can expect to make about 45-55k Canadian a year. This is because Vancouver is flush with tech talent. Just 200 miles away, you can expect starting salaries to be at 50k-60k starting. It also depends on what industry you are programming for etc. Do any jobs in the programming industry make as much as doctors? Very few do. However if you are programming for hot industries (like biotech) you can get pretty close and in some cases might beat a doctor. But I wouldn't count on it, especially starting.

Quote

jase81: Computer programmer, Software engineer, Software developer, Software architect... etc etc
  • Are there any differences between these (or other similar) titles or are they just a way for programmers to market themselves?
  • If they are different, what is the definition for each title?


Computer programmer is a general term meaning anyone who can write code to produce a computer program. These are usually the general entry level workers and the ones that do nothing but take directions given to them and produce code for it. Software engineer is much the same as a software architect.

These are people who not only write the code but usually come up with or "design" the solution to a given problem. They are the ones that may talk directly with a client, capture the needs and put that down for computer programmers (including themselves) to write into code. They are usually paid more than standard computer programmers because they also have to design systems to work.

Software developers are typically programmers who specialize in making "apps" or "mashups". They are computer programmers, they do a bit of software engineering to come up with a design and mix it altogether to create solutions. I think of these guys as the "go to men" of problem solving... a jack of all trades so to speak.


Quote

alexlafreniere: Do any of you have experience in Bioninformatics? If so, please explain what an aspiring Bioninformatics student could look forward to in college and in working life. I'm just fishing here, as I realize nobody in the "Pros" section listed any Bioninformatics skills.


I have no experience in Bioinformatics, but it is certainly a promising field from what I have seen already. I think we are just beginning to find ways to actually apply many of its theories.

Quote

ditsy5154: Is it worth it to learn C++ for a language? I mean, what are the odds of my video game being published? Are any programming codes easier than C++. If so, what are they, and can they make 3D games? Thanks in advance.

PS: I am not in college, and therefore not learning programming. I am in 7th grade. I don't even have programming homework.


I happen to think it is important to at least know how C++ works and can read it to a capable level. Not just because of game programming, but it is such a versatile language to know for all sorts of things. Developing drivers, network communications, small utilities, interfacing between two different systems and most importantly it is the bedrock of learning object oriented programming.

Now are there easier programming languages than C++? Sure, one is visual basic and some even C# is easier to learn than C++. Another language that some find rather easy to learn is Java. All three of these languages can do 3D game programming. C++ is chosen for game programming because of its relative speed of execution. But the others are slowly climbing in popularity.

Earlier you can get into C++, the better you are I believe. You don't have to be a master in it, but knowing how it works and debug it will be a great skill for you. As for the odds of getting a game published by a big firm, slim. But getting in with a good game team will increase your chances.


Quote

ghqwerty: looking at going into software development for a missile and aerosystems company where my dad currently works as a mager type person. wondering what language is best to learn c# or c++ or c and also a little brief explanation on what the software actually does in something like a missile (apart from take it to its target lol well how )


In such a situation I believe C++ and C are going to be your best bets. They are OS independent, fast, efficient and you often find them in systems that are compact and unique. A missile guidance system isn't necessarily going to be built on windows if you know what I mean. As for what the software actually does... you pretty much nailed most of it... targeting. It may also have a communication subsystem which can keep in touch with tracking systems from satellites (telemetry) and control systems to receive commands. This will allow a missile to be tracked on the way to target and also receive termination commands to disarm mid flight.

Quote

ditsy5154: I am a 13 year old kid, and I want to make an action game. What would be the easiest programming code for me to learn? I have a short attention span. Anybody can answer. Also, it is a 3D action game. I already installed CodeBlocks. This is for C++ and C, OpenGl, and Ogre3D. Should I get new software? I also need FREE ways to learn the easiest programming.


Well if that software is what you have, then that is what you should use. While some people think that C++ and C are a bit harder than say VB or C#, they are the best languages for doing 3D game programming. OpenGL and Ogre3D is also a good combo and I wouldn't change that setup. You just need to get cracking on some tutorials and books to learn more about what to do.

Quote

ladyinblack: Where do you see the evolution of programming to be, in the future? Considering I started out with GWBasic and some started with other things which I don't know about (let say assembly language since some still use in programming PICs but now they use C) then moved on with Turbo pascal, then further down the line with now C++, Java and the like. And for the current year, we get Django and Grails, by the way to me its new, certainly not listed on your Programming Help menu here.[/i]


The evolution of programming is going to be simply enhancing the web. I see the languages of the web becoming more robust and actually becoming very similar to the desktop. The desktop languages create programs that are responsive because they are local. The web excels because it is centralized and easily accessed. So what you are going to see is enhancements in languages that feed the need of being centralized, but responsive. So look to things like Actionscript, Javascript and Ruby to really increase in popularity and use. Anything that can really touch the "cloud computing" world and enhance the user experience through responsive interfaces will be desirable. The idea will be to have a centralized service that will pretty much act like it is running locally on your computer.

Now questions specifically for Martyr2:

Quote

Core: As a programming theoretician, do you think that such methodologies like Agile and Extreme Programming do have a certain impact on the industry?


They most certainly do. Take a look at your local bookstore when you get a chance. Check out how many books are on the shelves about agile and extreme and you tell me which books appear to be in demand. Look at the local job listings and you will see a lot of companies asking for experience in agile and extreme programming. These methodologies are certainly impacting the industry in a big way.

However, it is crucial that we not get entangled into it too much because there are certainly some big pitfalls to these methodologies that are much more dangerous than something like the waterfall method of old. You have to have someone who is very good at prioritizing handling your backlog and is always on point with the project's general direction. Sometimes you will be designing software for a client that won't exactly know what they want either. They may be checking off at the end of each sprint, but one day you may be hit with the dreaded "Wow, this software is not meeting our needs nearly as much as we had hoped".

In other words, with Agile methodologies, you can certainly find yourself waaaaaay out in left field if you are not careful and constantly holding the project to the original plan. You can still fail!


Quote

xiii1408: What would you advise those studying C++ on their own to study after finishing their first C++ book supposing the book covers C++ concepts leading up to and including the STL? Thank you.



What to study after your first C++ book? Your second C++ book. I know I know you are probably a bit tired of looking at C++ stuff already after that first thick novel you had. But you really do learn a lot going onto a second book on C++. It is almost impossible for a single book to hit all C++ topics and perspectives. Going through a second book is sure to teach you more, give you better insight, and hit the topics you now understand with a whole new perspective. I try to read at least two books on every language I come across and even more on some of the older languages I learned long ago. The idea is to keep reading various sources because you always learn new insights that make you a better programmer.

Another question you have to ask yourself is "Where do I want to be in a career?" If you are looking to be a game developer some day, then you will want to branch off into OpenGL or DirectX. Do you want to develop utilities and drivers?
Then pick up a book that will teach you that. Perhaps you want to solidify what you have learned while also picking up another language, then I recommend C. If you really want to get out there and design applications, then you are off to .NET and my first language suggestion would be C#.

But know this, you will never read a book and simply "know" a language. You are always going to miss something. The only way to really get into a mastery level, or even an intermediate level at that, is to pick up another book by a different author with a whole new angle on things. Besides books you should be reading web boards, articles, tutorials and any other media that can give you more information. Mix it up, read a book, watch a video, participate on a board all in the same day. Never stop studying a language. I learned C++ over 10 years ago and today I still read content on it regularly.



Quote

Smurphy: I see from your blog and such that you are not limited by taboos. You will try and learn from everything including things that society looks down upon. Hacking. Some of your stuff borders on that taboo subject. Well I am focusing my studies on better "safer" coding styles. Also I am fascinated by the thought of doing red teaming some day. Do you think there is anything wrong with studying these kinds of subjects? I seem to get a lot of flack from people for studying code breaking and hacking. Also do you believe there is a lot that can be learned from such subjects? I find buffer overflows and the theory behind them fascinating.



You are certainly right, I do talk and dip into taboo topics once in awhile. I get crap for it as well from time to time. But you know, you are never going to be as solid as someone who studies all angles of a topic. If we just ignored hacking, then we would be suckers developing systems that someone with a simple injection could circumvent. I believe there is nothing wrong with studying these subjects. I actually believe we should "dip into it" once in awhile to see what the "other side" might be thinking when it comes to applications and security. I am not a pure white hat hacker, but consider myself a light light Grey hat. It is all about intent my friend and those who give you flack about it are the same people who ask people like you to protect them. Understand the dark side, just don't cross into it. Can you imagine how dumb Luke Skywalker would have been if he just ignored Darth Vader?


Quote

paperclipmuffin: What languages do you think will thrive in the coming years and which will be phased out?



Similar to a question I answered earlier, all languages working toward the merging of the web with the desktop. Cloud computing ideas with the responsiveness of a desktop application is currently the trend to follow. Javascript is going to be more of a player with help from jQuery and other frameworks, Actionscript will continue to grow along with Flash, PHP will hold its own for awhile but it really is slowing down since they are bloating it up as of 5.3. Ruby will continue to grow as well.

Desktop languages are going to be around awhile but as applications slowly move to the web, their importance will fade a bit. C++ and Java will continue to be work horses, C# will eventually merge with VB.NET I believe (even though I don't like it) and F# is really a big I don't know. Some like it, some don't see the point in it. So think dynamic, think script into fully language, think responsive web and those languages that support that are certainly going to continue to grow.


Quote

Fuzzyness: I have a grandfather who is a senior prommer, not sure where he works since he was laid off from Novell, but he codes in Javascript. I was talking to him one time about languages and he said that Java and Javascript are two of the most similiar different languages. You knowing and being able to code in both languages may be able to help me with my questions about it. Which is better to learn Java or Javascript? does one benefit over the other? Are their any Major differences that would make a person choose one over the other?



Well lets get this one straight, they may have come from the same root causes but they both serve different purposes and are both strong for what they are. I recommend learning both and I will tell you why. Java is a full blown computing language. Its roots from C++ long long ago. It is for desktop (and some web apps through servelets and applets but mostly desktop) and has the full power to pretty much write any kind of program. It can access files, has full networking capabilities, accesses computer memory and more. It is good for creating applications on your computer to run. Javascript on the other hand is a "script". This means it is a subset of a full language.

For instance, Javascript is severely limited in access files on a user's computer. It is also very limited in networking and cannot really access user's memory. The reason it can't do all these things is that it was made to run on the web and make it a bit more interactive by running the code on client machines. It is a security problem for someone to write Javascript code on their page that then accesses your computer's files and memory without your permission. It was also made to be compact and relatively small to execute. Not full applications, mainly a few functions here and there. It is the "spice" of the web. Sprinkle a little bit of it on your pages and watch them come alive with activity. Java would have been too slow to run on the web. You would have had to compile the code and run it each time you accessed a web page.

So learn Java to create great useful desktop applications, learn Javascript to add that extra kick to your web projects. They are two different things, two different domains of application and all they really share is a similar syntax. But being that you may get more jobs working out on the web, I would take a crack at Javascript first; especially if you are new to programming.


Quote

mostyfriedman: I dont think i have any questions now but i would like to thank you for your fun and educating blog. 2nd, as you are one of my role models here, i hope i become an awesome theoretician as you..am always reading and studying theory of computation and algorithm design and analysis..



Well I appreciate the comments. It is comforting to know that the work I do has helped inspired others to study programming and express their imagination through computing. It really validates my work and puts a smile on my face to boot. One thing to keep in mind is that all it takes is one great idea, one never before thought of algorithm to change the world. Your idea could save lives and it could help others. That right there never makes anything we do and study pointless. Thanks a bunch! :)

Was This Post Helpful? 0
  • +
  • -

#9 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1642
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Re: Q and A With The Pros - The Answers

Posted 03 August 2009 - 08:49 AM

Now we get to hear from NickDMax:

From Everyone

Quote

Skyhawk133: If you could suggest just one thing for a student interested in a programming career to learn/do, what would it be?


The most important thing you can do is generate a passion for programming, and the only way I know to do this is to find something that really sparks an interest in you and play at until you figure it out. For me it was computer graphics -- specifically three dimensional mathematical surfaces. But this drifted along various other tangents. For example I learned sorting so that I could sort polygons for a hidden surface removal routine. I learned about linear interpolation for key frame animation. In my early days of programming was driven by my pursuit of computer graphics -- I was challenged by the Mathematics of it, I was challenged by the techniques and classic algorithms needed.

I have met people who just needed a program to preform a specific task such as manage their personal records or help them learn french. A friend of mine got into programming by making a basic records management system for his private practice as a psychologist. Soon he found that he was giving it away to his colleges and shortly after that found he was making more money programming than in his practice. -- point is, if you can find a hook you can follow it on to learn more and more.


Quote

SwiftStriker00: As a computer science student graduating within the next few years I am consistently hearing how my jobs are being outsourced yet my I have a few professors telling that they are coming back (I can't tell if they are just trying to keep me motivated). So my two part question is:
  • Being in the field you have seen first hand where the jobs go, and over the last decade is the trend to outsource or keep jobs state side, or is there a more recent change in said trend?
  • Everyone knows that good work ethic, pride in the subject, and good grades help, is there any good tactics to market myself or ways to win over employers to keep the job local?


  • I do see a trend to make programmers a commodity rather than programming as a service. That is to say, organizations are caring less and less where the code comes from and more and more about how much it costs per line of code. Programmers/Software developers are becoming merely resources to pump out lines of code and organizations care less and less about the skill levels of the "resources" assign to a project.

    For the moment this move suffers from the fact that programming is NOT just something any monkey with a compiler can do. It is still a skill and still requires skilled professionals. If you are a skilled professional it is not difficult to find and keep a job. It is important to stay current in the industry. You can't be a one trick pony - you have to be bring as much as you can to the table. That does not mean go out and try to master the 50 different Java MVC frameworks -- learn the basics of a few, and then really dive into one or two.
  • Take some project classes -- I am sure your degree will require 1 or 2, but take a couple of more if you can. When you choose a project try to choose something interesting and possibly challenging (though you may not wish to take the hardest project of the bunch unless you feel that you can do a good job on it). When you do the project, take notes as you go, these will help you prepare for interviews later (I wish I had taken notes in our development meetings so I could have spoken with a little more detail when I was interviewing for jobs).

    As for keeping the jobs local -- emphasis on quality. Do it right.


Quote

bdprogrammer: Hello, i have a question. As i am not a computer science student(doing my graduation in other engineering subject) can i build my career as a software developer? What is needed to learn? I will be highly pleased if you show some way of starting my journey. Thanks in advance.


  • Yes, it may be a little hard to get human resources people to look at your resume at first, so you need to make sure that when you get a call you hook them -- be passionate and be confidant.
  • I would say that taking some time to learn some classic data-structures and algorithms would be a good thing. The most important thing you can do is pick up some projects. Do programming. Challenge yourself.

Many nontraditional programmers come in to the business by producing software for their field. So while working in your field if you see a need for software, then make it a reality -- people will notice your skill and before you know it you will have a handy portfolio of projects. Plus, if you end up writing a killer app and selling it -- no one will really care what your degree is in.

Another good thing from a HR point of view is to get a postgraduate degree, people don't look quite so hard at as Masters, and are even less discerning of a Doctorate -- that being said, with a doctorate you probably will not spend too much time coding.


Quote

crazyjugglerdrummer:Where do you think the OS trends are going? What impacts will this have?Windows Vista is gradually replacing windows XP, will this allow us to use more cutting edge .NET technology as people upgrade? Mac OS X and Linux are steadily gaining popularity, Is cocoa mac development/linux development going to be more important in the future? Will we finally get C# semi-cross platform with MONO?


The transition to HDTV has opened up large sections of bandwidth which offers a lot of playing room to the telecommunications companies -- mostly cellular phone companies and we already have impressive OS environments on hand-held devices. Mobile devices are beginning to really find their place in the world and it will be interesting to see what user demand and innovative experimentation develop.

Impacts: Well, look at technologies such as Google Wave. I think this is a good representation of the kinds of movements we will see over the next few years.


Quote

masteryee: do any of you actually NOT have a bachelor's degree in computer science or computer engineering? If so, how difficult was it getting into the industry in terms of landing a full-time programming job? I know you're all programming gurus, but I'm curious how important a degree is to you and/or your employers, and how you would evaluate a potential coworker or employee who does not have a bachelor's degree, but knows how to code. Thanks.


My degree in is Mathematics. It was very easy for me I suppose. Mathematics is really a field that is generally applicable in just about any industry. HR was really much more interested in my experience than my degree (I suppose Mathematics is a "related field").

Most of what I know about programming has nothing to do with any formal computer training I have had. I am in essence a self-taught computer programmer. Those things that I did learn in the CS classes have not been too applicable to my day to day life as a consultant/developer.

I know it can be hard to find the door when you don't have a degree at all, the most important thing is to get in -- once you are in, people really don't care too much as long as you know what you are doing. When I was in the Navy I got LOTS of job offers because I was a recognized expert in my field and my work spoke for itself -- when I reentered the job market after school I found that no one cared anymore about what I did in the Navy. Employers really look at what the last thing you were doing was -- that is the most important space on your resume.


Quote

red_4900:To elaborate on the above post, how would someone like me, who's taking system engineering, fare when trying to get into the industry? We do learn programming, although not as detail as those in CS do. I'm more interested in desktop application than system-embedded software, so I would appreciate it if any of you could give me any advice on trying to break into the industry.


I would think that system's engineering would count as a "related field". So brush up spinning answers to questions about your field to be related to software development. Diversity is not a bad thing, teams are always looking for people with fresh perspectives on things. Try to embrace your background more than "play it down" -- spin it as a benefit for them.


Quote

Smurphy:Have you ever had trouble communicating with people? To give an example last night after watching the video on Google wave I was excited. Tried to explain it to my my dad and he was extremely rude and exclaimed he didn't understand, saying everything short of "I do not give a shit I am watching UFC ugg ugg me smash" Any tips on trying to communicate with people who are not computer savvy? I seem to be stuck trying to fix problems no one understands and am the target anytime a computer breaks.


YES! All the time. I have gotten used to people shaking their heads and saying, "whatever dude." I think that it is important to find someone to talk to about your thoughts (even it is just a journal or blog). Communities such as DIC are awesome too.

As for dealing with "ugg ugg me smash" -- there really is not much you can do. Actions speak louder than words, if you do things that silently impress then you may overhear your Dad telling a friend/coworker how darn smart you are. I find that just because my friends and family don't really care to understand what it is that I do (and trust me, having a love for theoretical mathematics and computers really alienates me from my friends at family at times) they do like seeing my passion for it. So even if they have no idea what a minimal surface is, or what the implications are of recognizing Markov chains -- they do love that I get so worked up about it.



Quote

papuccino1:Do you think that eventually there will be an ultra-high level language, essentially making us coders unnecessary? Maybe we won't be called coders anymore (because we'd just say to the computer: do this, make that), and be known as something entirely different.


Yes and no. Higher levels of abstraction simply increase the complexity of what you are capable of doing with them. I think what programs are capable of will increase with the power of the tools that programmers are given.

Quote

nick2price:As you probably know Moore's law states that the number of transistors that can fit onto a silicone chip will double approx every two years, a trend which has continued for over fifty years. When do you think this trend will stop and what do you feel the next step will be in silicone design? I read a topic about the future being 3d silicone chips. Also, Just to get an argument, when do you think the first AI robot capable of outshining a human will be developed and what technologies do you think it will be developed in?



With discoveries such as confirming the existence of the Memristor I think that Moore's law is safe for a while. Not only will memristor's allow for new low power processor's but the discovery also helped explain phenomena that was causing problems with nano-scale construction. In other words -- we should be able to use the knowledge to pack even more onto dies.

As for AI -- I think you worded your question well as the advances in integrating neural networks with digital circuits are incredibly interesting. The question becomes, how can we present digital information as stimuli to a neural network.


Quote

masteryee:Cloud computing has become a big topic over the past few years. Do you think it will become the next big trend and gain a lot of traction? Do you like the idea of the OnLive MicroConsole that will supposedly offer efficient cloud gaming?


I do think that cloud computing will have a major impact on computing in the coming years. Although I am not a fan of the idea of pay-per-click/pay-per-minute software -- I think that we can already see the momentum in the market.

As for Games... Sure I think that cloud computing is going to be leveraged, but so will advancements on the desktop -- game developers will take every clock cycle they can get!



Quote

PJLabowski:
  • Do any of you have experience with distributive programming?
  • What do you think about the fact that the best developers have managed to do is create a Go game that plays at an intermediate amateur level and takes over 100 hours a turn on a supper computer? My cousin, who is a CS prof at Georgia Tech, thinks it's a matter of "teaching" the pc to "think" like the professionals do.
  • Those of you who work with databases. Can you point us to some good books for working with them and Java?


  • A little but mostly supported by frameworks so I only have to worry about concurrency.
  • I don't think that the key to AI is teaching computers to think like humans, but for humans to spend a little more time learning how computers think. The problem spaces are completely different and I don't think we can really map one onto the other.
  • Java's JDBC is pretty strait forward SQL -- I know that there are some books out there, but I have not reviewed any so I can't comment. I generally use SQuirreL or DBVisualizer to test my SQL before I commit it to code.



Quote

macosxnerd10: When going into college, do you think a computer science degree of an Information Systems degree looks better to employers and why?


Well, to HR experience is king. I fyou want to be a developer I would recommend the CS -- but there are plenty of jobs that require a knowledge of the business practices surrounding IT infrastructure. So I would say that it depends upon what it is you want to do -- if you want to be a developer then do thing that can be spun as experience as a developer, and likewise for business.

Quote

macosxnerd101: When you are coding and need to use a data structure, which one do you think of first? Why do you prefer this structure over the others that exist?


I choose data structure based upon the need of the situation. I tend towards whatever it easiest to implement though sometimes I worry more about performance. I like it when things fit nicely into arrays because they are simple, but it is not as though I choose arrays over other types just because I like them.

As for programming model - I suppose that I do have an affection for finite state machines, I often use them as a base pattern. Not really a data structure but if I were to say that I have one preferred structure that would probably be it.


Quote

Nic30n3: What is the fastest and best way for a computer science graduate with no professional experience to land a job as a programmer?


Well the fastest way is to write the next killer app in your free time at school. Barring that it is to get as much experience in projects as you can. So taking project oriented classes, working non-trivial personal projects, working with open source projects, and internships are all great ways to get material for your resume.

What I find interesting is to go to BN and thumb though the popular computer books. If you find something interesting then go home and look it up on the net and see if you can do something with it.


Quote

firebolt: My teacher said that if you want to make money for a long time, then databases is the way to go. Correct me if I am wrong. But will programming (as in a dedication to a language/s; creating programs for a business) do the same?


Your teacher is probably correct. If you want to do one thing until it becomes obsolete then learning a DB is probably a good route to go. But then again, if you don't keep up with the technology then you may find yourself obsolete just as any other IT field.

I don't think it is a great idea to tie yourself too firmly to any one language or technology in programming. Languages and technologies have cycles of popularity -- the world of IT is fond of its fads and fashions. Job fairs tend to be littered with highly skilled developers whose specialized expertise has left them high and dry when the tide shifted.

Look at it this way, everything has momentum -- in the world of IT infrastructure the lower level the technology the more momentum it has -- i.e. that harder it is to justify changing course on the investment. So for example, Mainframes are generally very old and are generally scheduled to get phased out "one day" -- but yet they have so much "momentum" (the cost associated with replacing them) that they are still a very important part of the IT infrastructure. Databases tend to have a good amount of momentum, they are huge investments and it is generally not a good idea for an organization to try to change course suddenly when it comes to their data. Languages on the other hand tend to have much less momentum -- you will find some pretty old code bases out there -- but it is generally not hard to integrate the latest technologies with the older code bases.


Quote

ivey.eli: What is the pay like for normal programmers and are many jobs in the industry that pay more than say, a doctor? If so, what are these jobs and what are the kinds of skills would someone require to get the jobs? Thanks!


I don't really know. The highest payed programmers are probably the rare innovators out there that make killer apps that get sold for millions of dollars. This probably has a little more to do with business savvy then it does with programming ability.

I tend to program because I love programming -- but this is a business. Businesses are out to make money and so it is probably a good idea to sharpen your business skills.


Quote

jase81: Computer programmer, Software engineer, Software developer, Software architect... etc etc
  • Are there any differences between these (or other similar) titles or are they just a way for programmers to market themselves?
  • If they are different, what is the definition for each title?


Programmer -- general term.

Architect -- Designs environments capable of solving business problems. Architects are generally interested in the overall environment that an organization has. They determing what has to be purchased, what has to be developed etc. High level view.

Engineer -- Design solutions to specific business problems within the environment established by the Architect.

Developer -- Implement the visions of Engineers and Architects.


Quote

alexlafreniere: Do any of you have experience in Bioninformatics? If so, please explain what an aspiring Bioninformatics student could look forward to in college and in working life. I'm just fishing here, as I realize nobody in the "Pros" section listed any Bioninformatics skills.


I took a course in Bioinformatics in school. Other than that, I can't say that I have. It is a very interesting field.

Quote

ditsy5154: Is it worth it to learn C++ for a language? I mean, what are the odds of my video game being published? Are any programming codes easier than C++. If so, what are they, and can they make 3D games? Thanks in advance.

PS: I am not in college, and therefore not learning programming. I am in 7th grade. I don't even have programming homework.


C++ is most definitely a viable language and still very popular in development. From what I can tell though (outside of game development) most of the more interesting positions are in R&D and require at least a master's degree or a good bit of experience.

Quote

ghqwerty: looking at going into software development for a missile and aerosystems company where my dad currently works as a manager type person. wondering what language is best to learn c# or c++ or c and also a little brief explanation on what the software actually does in something like a missle (apart from take it to its target lol well how )


I don't know, but I would imagine that C/C++ or perhaps FORTRAN would be the best environment for this kind of development. I doubt that C# is of much use on a rocket.

If I were you I would set my sights on the University of Arizona -- they seems to be the place to be when it comes to aerospace engineering.


Quote

ditsy5154: I am a 13 year old kid, and I want to make an action game. What would be the easiest programming code for me to learn? I have a short attention span. Anybody can answer. Also, it is a 3D action game. I already installed CodeBlocks. This is for C++ and C, OpenGl, and Ogre3D. Should I get new software? I also need FREE ways to learn the easiest programming.


I would go Python. Its pretty quick to develop in, it has many libraries that are pretty easy to use. May not be the fastest when it come to things like 3D graphics but it would be a good compromise for ease of use/complexity vs. "awesomeness of graphics." -- but alas I am not a game developer and not the best source of advice on this.

Quote

ladyinblack: Where do you see the evolution of programming to be, in the future?
Considering I started out with GWBasic and some started with other things which I don't know about (let say assembly language since some still use in programming PICs but now they use C) then moved on with Turbo pascal, then further down the line with now C++, Java and the like. And for the current year, we get Django and Grails, by the way to me its new, certainly not listed on your Programming Help menu here.[/i]


I think that VM based languages are going to continue to be more and more popular since they offer so many advantages over the traditional models. .

Now questions specifically for NickDMax:

Quote

Core: Working as a consultant for a company, do you feel that your programming skills are the most important part of the job, or there is something else too?


Unfortunately no. Its knowledge of the products and the related technologies. Its understanding the architecture of how these products fit together. I find that the programming is relatively simple -- but you have to wrap your head around what needs to be done and this means knowing system administration (windows/unit/linux), knowing Apache web server, knowing about Autonomy search, about Akami, understanding enterprise service buses, knowing application servers, etc..

Then there is the business side of things. You have to realize that the customers really don't care what the details of the code so long as the ending product helps them achieve their business objectives. You have to understand that as silly as it sound for the customer to ask, "how many mouse clicks will this operation take", these questions are vitally important to throughput and therefore their business.

So as a consultant the bulk of the code is done, we are just implementing the overall solution. Customizing and gluing together preexisting products. Sometimes we get to work on larger pieces and develop new products -- but most of the time this is avoided as much as possible.


Quote

Fuzzyness: I am currently waiting to start college, I am going to have to choose my major and as I was going over the list of Majors I knew what I want to go into, Computer Science. I however ran into a slight problem, there is Computer Programming and Computer Science as a major. My academic Adviser couldn't tell me jack sh** about the difference. I love Java, tried C++ and hated it, took Ap Comp Sci I my senior year before graduating Highschool and have fell in love with it. I wish to pursue a career in a Java based field.

Taking a Java Course Track, what is the difference in a Computer Science Major and Computer Programming major? Is one more beneficial to a programmer then the other? Should I look into taking one of them then going back and taking the other?


Computer Science is about the tools that programmer's use to solve problems. Think about it in terms of Science vs Engineering -- Science is about the theory and engineering is about using the theory to make something. Now I don't know what the exact differences in courses are at the school you are looking at. But generally CS is a good direction for programmers because it gives you a solid understanding of the theory that you can use to develop software and design systems.

As for Java -- Java is a HUGE area of expertise. The Java API is large and capable on many levels. There is the core of java, then there is desktop programming, then there is JavaEE and JavaME -- there are tons of frameworks like SWT, OSGi, Spring etc. that get used in software development. So if you find that the programming course covers more of this kind of thing than perhaps it may not be a bad direction to look into.

Rather than talking to your adviser, perhaps ask some of the teachers about how thier classes might fit with your goals.

Was This Post Helpful? 0
  • +
  • -

#10 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1642
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Re: Q and A With The Pros - The Answers

Posted 03 August 2009 - 02:29 PM

And now from our fearless leader Skyhawk133

From Everyone

Quote

Skyhawk133: If you could suggest just one thing for a student interested in a programming career to learn/do, what would it be?


Should I answer my own question? I think building a solid network of friends and professionals that can help you find a job, and work your way up and out is the most important thing. Professional networking isn't something that's readily taught, but it's probably one of the most important things a young person can learn and do.

Quote

SwiftStriker00: As a computer science student graduating within the next few years I am consistently hearing how my jobs are being outsourced yet my I have a few professors telling that they are coming back (I can't tell if they are just trying to keep me motivated). So my two part question is:
  • Being in the field you have seen first hand where the jobs go, and over the last decade is the trend to outsource or keep jobs state side, or is there a more recent change in said trend?
  • Everyone knows that good work ethic, pride in the subject, and good grades help, is there any good tactics to market myself or ways to win over employers to keep the job local?


There will always be companies that look for the cheapest solution. Fortunately, there are still plenty of companies that understand the value of having local developers and paying them well. Having a great work ethic, an outstanding portfolio of your work, and a true passion and desire to do the job all stand out in an employers eye.

Quote

bdprogrammer: Hello, i have a question. As i am not a computer science student(doing my graduation in other engineering subject) can i build my career as a software developer? What is needed to learn? I will be highly pleased if you show some way of starting my journey. Thanks in advance.


You would need to learn how to develop software. I suggest you start with a book. Maybe a class.

Quote

crazyjugglerdrummer:Where do you think the OS trends are going? What impacts will this have? Windows Vista is gradually replacing windows XP, will this allow us to use more cutting edge .NET technology as people upgrade? Mac OS X and Linux are steadily gaining popularity, Is cocoa mac development/linux development going to be more important in the future? Will we finally get C# semi-cross platform with MONO?


The OS space is moving rapidly toward cloud computing and web based software. I think this trend will continue rapidly in to the future.

Quote

masteryee: do any of you actually NOT have a bachelor's degree in computer science or computer engineering? If so, how difficult was it getting into the industry in terms of landing a full-time programming job? I know you're all programming gurus, but I'm curious how important a degree is to you and/or your employers, and how you would evaluate a potential coworker or employee who does not have a bachelor's degree, but knows how to code. Thanks.


]I don't have a degree. I find smaller companies and organizations that understand education is just a piece of paper, not proof of knowledge don't require degrees. You may not make quite as much money, but it's quite possible to get a job without a degree.

Quote

red_4900:To elaborate on the above post, how would someone like me, who's taking system engineering, fare when trying to get into the industry? We do learn programming, although not as detail as those in CS do. I'm more interested in desktop application than system-embedded software, so I would appreciate it if any of you could give me any advice on trying to break into the industry.


Focus on learning the programming side on your own. A degree really doesn't even come close to teaching you what you need to know to do most jobs. It's just theory and the basics. Take the time to learn what you want to really do on your own.

Quote

Smurphy:Have you ever had trouble communicating with people? To give an example last night after watching the video on Google wave I was excited. Tried to explain it to my my dad and he was extremely rude and exclaimed he didn't understand, saying everything short of "I do not give a shit I am watching UFC ugg ugg me smash" Any tips on trying to communicate with people who are not computer savvy? I seem to be stuck trying to fix problems no one understands and am the target anytime a computer breaks.


Uhhhhh... know your audience? Sounds like your dad might have a drinking problem... he should look in to programs like AA


Quote

papuccino1:Do you think that eventually there will be an ultra-high level language, essentially making us coders unnecessary? Maybe we won't be called coders anymore (because we'd just say to the computer: do this, make that), and be known as something entirely different.


Yes, but there will still have to be people to do what it can't do, so programmers won't be unneeded

Quote

nick2price:As you probably know Moore's law states that the number of transistors that can fit onto a silicone chip will double approx every two years, a trend which has continued for over fifty years. When do you think this trend will stop and what do you feel the next step will be in silicone design? I read a topic about the future being 3d silicone chips. Also, Just to get an argument, when do you think the first AI robot capable of outshining a human will be developed and what technologies do you think it will be developed in?



It can't continue forever, but the technology will of course continue to advance. True AI I think is a ways off.

Quote

masteryee:Cloud computing has become a big topic over the past few years. Do you think it will become the next big trend and gain a lot of traction? Do you like the idea of the OnLive MicroConsole that will supposedly offer efficient cloud gaming?


Cloud computing is a big thing and will continue to grow and gain traction in the hosting world. I think more and more traditional app and sites will start utilizing cloud storage/computing. I know Dream.In.Code already is to some extent.


Quote

PJLabowski:
  • Do any of you have experience with distributive programming?
  • What do you think about the fact that the best developers have managed to do is create a Go game that plays at an intermediate amateur level and takes over 100 hours a turn on a supper computer? My cousin, who is a CS prof at Georgia Tech, thinks it's a matter of "teaching" the pc to "think" like the professionals do.
  • Those of you who work with databases. Can you point us to some good books for working with them and Java?


  • No
  • I think there is more to it than that. Humans are "self aware" and that borderlines on a philosophical discussion. I think AI is a little further off than we think.
  • I don't have any, sorry.



Quote

macosxnerd10: When going into college, do you think a computer science degree of an Information Systems degree looks better to employers and why?


Depends one what you plan on doing and who your target employer is. Somebody like Sandia Labs may prefer a Comp Sci degree, while a commercial company, may appreciate the more rounded Information Systems degree.

Quote

macosxnerd101: When you are coding and need to use a data structure, which one do you think of first? Why do you prefer this structure over the others that exist?


I'm not a good person to answer this, sorry.

Quote

Nic30n3: What is the fastest and best way for a computer science graduate with no professional experience to land a job as a programmer?


Get experience through doing little projects on your own, or as a volunteer to build your portfolio. And network, network, network. It's all about who you know.

Quote

firebolt: My teacher said that if you want to make money for a long time, then databases is the way to go. Correct me if I am wrong. But will programming (as in a dedication to a language/s; creating programs for a business) do the same?


Maybe.

Quote

ivey.eli: What is the pay like for normal programmers and are many jobs in the industry that pay more than say, a doctor? If so, what are these jobs and what are the kinds of skills would someone require to get the jobs? Thanks!


Varies based on location, the company, the type of programming, etc. There's no ballpark figure.

Quote

ditsy5154: Is it worth it to learn C++ for a language? I mean, what are the odds of my video game being published? Are any programming codes easier than C++. If so, what are they, and can they make 3D games? Thanks in advance.

PS: I am not in college, and therefore not learning programming. I am in 7th grade. I don't even have programming homework.


I'm not a good person to answer this, sorry.

Quote

ghqwerty: looking at going into software development for a missile and aerosystems company where my dad currently works as a manager type person. wondering what language is best to learn c# or c++ or c and also a little brief explanation on what the software actually does in something like a missle (apart from take it to its target lol well how )


Why not ask them what language they use. Could be any number of languages.

Quote

ditsy5154: I am a 13 year old kid, and I want to make an action game. What would be the easiest programming code for me to learn? I have a short attention span. Anybody can answer. Also, it is a 3D action game. I already installed CodeBlocks. This is for C++ and C, OpenGl, and Ogre3D. Should I get new software? I also need FREE ways to learn the easiest programming.


You should probably look through our game programming for.... ohhh shiny. Sorry my attention span is pretty short too.

Quote

ladyinblack: Where do you see the evolution of programming to be, in the future?
Considering I started out with GWBasic and some started with other things which I don't know about (let say assembly language since some still use in programming PICs but now they use C) then moved on with Turbo pascal, then further down the line with now C++, Java and the like. And for the current year, we get Django and Grails, by the way to me its new, certainly not listed on your Programming Help menu here.[/i]


More and more web based, cloud and service oriented languages will be developed..

Now questions specifically for Skyhawk133:

Quote

Nykc: In a world where social networking is completely over running the internet world, how important do you feel using those mediums as advertising outlets would be.
ie. creating a myspace for your company, facebook, twittering about sales, etc...


ocial networking can be an important part of any marketing campaign. It's definitely a long term strategy but there is value in it. I would suggest not putting a ton of time and effort in to it all at once, but it's worth building on.

Quote

Core: As an Internet Marketing specialist, do you think that the current trends in Internet advertisement cause the users to become more irritated by ads and therefore seek to avoid them?

Yes, we find the non-traditional ads work the best and I think for the most part people have become immune to traditional ad sizes and placements.

Quote

Programmist: What were some of the most surprising lessons/gotchas that you stumbled upon in starting/growing your business?

  • People are assholes.
  • Get a good accountant.
  • Sending e-mail is a pain in the ass.
  • There are some really screwed up individuals in this world.
  • There are some incredibly talented people in this world who will teach and share with you... or give you one hellova run for your money.


Quote

Programmist: If you were advising someone on starting an internet business, what would be your top 5 Do's and Dont's? Thanks in advance!

  • Take the time to do the market research before spending any more time on the project.
  • Look at what others in similar niches are doing to promote and grow their businesses.
  • Build relationships with people in your industry that will be able to help you grow your business.
  • Get a good accountant.
  • Don't let the stress and long days get between you and the things you enjoy most (family, hobbies, etc.).


Quote

nick2price: I have always wanted to ask this question but thought it was a bit rude, but anyways, how much does a site like this generate in gross profit by only having advertising? I only want to know because I am trying to weigh up whether a site can generate good profits from advertising alone, and whether the benefits would outweigh fewer, paying customers.


A site like dream.in.code is very expensive to run. Advertising alone probably wouldn't pay the bills. I would suggest having multiple revenue streams that are diversified.


Quote

OliveOyl3471: do you make money from Dream.In.Code? I'm not looking to build a website, I'm just curious.


Dream.In.Code does make money, but it is not a primary source of income for me. Most of the money goes back in to advertising, paying for web servers, email servers, sys admins, and our developer to grow and improve DIC.


Quote

PJLabowski: How much does it irritate you that people keep posting answers in this thread?


Not much

Was This Post Helpful? 0
  • +
  • -

#11 gawdlike  Icon User is offline

  • you can't fix stupid.

Reputation: -7
  • View blog
  • Posts: 647
  • Joined: 16-November 08

Re: Q and A With The Pros - The Answers

Posted 07 August 2009 - 01:50 PM

This was real neat :)
Was This Post Helpful? 0
  • +
  • -

#12 tommyflint  Icon User is offline

  • D.I.C Addict
  • member icon

Reputation: 34
  • View blog
  • Posts: 679
  • Joined: 24-July 08

Re: Q and A With The Pros - The Answers

Posted 07 August 2009 - 02:24 PM

Took alot of reading but i found it very interesting :)
Was This Post Helpful? 0
  • +
  • -

#13 ladyinblack  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 9
  • View blog
  • Posts: 419
  • Joined: 08-April 09

Re: Q and A With The Pros - The Answers

Posted 10 August 2009 - 12:22 PM

yes, definitely very enlightening.
Was This Post Helpful? 0
  • +
  • -

#14 Nykc  Icon User is offline

  • Gentleman of Leisure
  • member icon

Reputation: 731
  • View blog
  • Posts: 8,644
  • Joined: 14-September 07

Re: Q and A With The Pros - The Answers

Posted 10 August 2009 - 05:31 PM

Awesome job guys.

Thank you all for taking the time to answer our questions, and thank you Psycho for putting it together.
Was This Post Helpful? 0
  • +
  • -

#15 SwiftStriker00  Icon User is offline

  • No idea why my code works
  • member icon

Reputation: 433
  • View blog
  • Posts: 1,599
  • Joined: 25-December 08

Re: Q and A With The Pros - The Answers

Posted 11 August 2009 - 10:09 AM

Great Job! I was beginning to wonder what happened to it, glad to see you got it compiled. Thanks!
Was This Post Helpful? 0
  • +
  • -

  • (2 Pages)
  • +
  • 1
  • 2