PDA

View Full Version : Programming in IT industry



pavelexpertov
December 15th, 2012, 06:12 PM
Hi, i know this post may not be suitable for this forum, but I want to ask those people who got jobs as programmers in any country (preferably UK). This is becasue I am starting to learn C# and Java languages (since they are similar) but I am not sure what qualification I need to gain to get a job as a programmer. And another thing.......Is it really challenging sometimes to be a programmer in a job or is it like a "piece of cake"? Plz I really appreciate for your answers!!!!! :)
Also is it beneficial for me if I get a small work experience in the IT industry? At the moment I dont have any :(

trent.josephsen
December 15th, 2012, 07:10 PM
I think it's an appropriate question.

I held a student worker position for a few years, which might not be exactly what you're looking for. It was in-house programming, which is something I'd suggest you look into -- in my experience people tend to forget that ordinary industries and businesses need programmers just as much as and sometimes more than the "software industry" (Microsoft, IBM, whatever). Afterwards I held a summer internship doing much the same thing.

But to address qualifications, I like to think I landed the job because I had prior experience with Perl, Python and regular expressions, all things that are underrepresented in academic curricula. "Java" on a resume just says that you've had a CS class or two; "Perl" says that you've put some effort into learning on your own. (And "C++" says basically nothing.) Some things I learned from that position that might also be valuable to know include revision control and some basic database knowledge (enough to get me into trouble).

Those are just the things that I think would be good to know for just about any programming job. (Especially revision control.) I learned other things, like how to use Perl's DBIx::Class, that served me well in that position but wouldn't really apply to the other programming work I've done.

By profession I'm an electronic engineer, not a programmer, and that was my only foray into professional software development. The code I've written since has been more on the C/assembly/VHDL level, which I find much more fun (though I still do high-level stuff as a hobbyist). If you're interested in pursuing embedded development I could talk some more about those projects, but if you'd rather be doing Web or app development or pretty much anything other than embedded controls, perhaps some others in this forum could talk about their own specialty areas.

Finally, if my jobhunt was anything like what yours will be, having prior experience will definitely help you score an interview as well as giving you plenty of material to talk about in one. Even if it's just a project you work on in your spare time -- pick something you'd like to do, set specific goals for yourself and document how you achieved them. For instance, buy an Arduino or a Raspberry Pi and make a voice activator for your light switch. When you go to an interview, bring some of your documentation (block diagram, photos or screenshots of the prototype, maybe some code printouts for a technical interview, Gantt chart and budget if you really want to impress a project manager) and talk about it when they ask about your experience. The project may be simple but being prepared to discuss it with visual aids is a sure shot at impressing an interviewer.

pavelexpertov
December 15th, 2012, 08:24 PM
@trent.josephsen
Thank you very much for answering on my post, it's helpful. I am more interested in app development due to great experience I had when I was doing project management at school, coz I had to create a product (which was a school presentation) and at that time, I had some wild program ideas that I was ready to start bringing them into reality. Basically, for database knowledge, do I have to learn about methods and classes about the database functionality in languages or should I start learning a bit of SQL. Furthermore, what does embedded programming mean? Is it like doing programming for devices like dvd players or ATM machines?

trent.josephsen
December 15th, 2012, 09:17 PM
Basically, for database knowledge, do I have to learn about methods and classes about the database functionality in languages or should I start learning a bit of SQL.

Both would be good. I'd say SQL is an essential skill when it comes to anything that interacts with a database; language bindings often (usually?) generate SQL in the backend and it's sometimes the only way to do what you want. But it's also important to be able to use language tools that interact with databases, so you can't rely wholly on one or the other. *shrugs*


Furthermore, what does embedded programming mean? Is it like doing programming for devices like dvd players or ATM machines?

Those are indeed examples of embedded programming. Other systems that make use of embedded systems might be industrial controls, household appliances, radios, engines, lab instruments and network hardware. It's a very broad designation, but in terms of general trends, you might find that embedded systems place more importance on absolute reliability and real-time performance. (Ever had your refrigerator crash?)

pavelexpertov
December 16th, 2012, 10:04 AM
Thank you!!!!!Atm I am trying to get into RAF to be an IT technician but I may start looking into programming career after few years of service. But thank you

CptPicard
December 16th, 2012, 02:07 PM
In recent years I have been taking up an interest in how to hire good first-job or such programming people... here is how I feel about it.

I'd say certifications and such are useless; I'd like to see some kind of appropriate formal education plus work experience (internships and such) in a good entry-level job candidate. Then there is just the general "aptitude" for the field that is hard to pin down; in particular, I really appreciate a general ability to think about problems in the abstract and also the ability to understand programming languages on a higher level and not just as separate, different collections of syntactic rules. But this sort of stuff comes from experience.

Interestingly, in my own daily work, I find that the hardest part is actually correctly understanding what all the various stakeholders expect of the project and to make sure that everything keeps humming along; the project integrates lots of data from all kinds of sources and then makes it visible to the customer's various representatives. If the data is wrong, their business suffers from wrong decisions. So surprisingly little is programming; the genuinely hard part is the business domain model.

pavelexpertov
December 16th, 2012, 06:12 PM
In recent years I have been taking up an interest in how to hire good first-job or such programming people... here is how I feel about it.

I'd say certifications and such are useless; I'd like to see some kind of appropriate formal education plus work experience (internships and such) in a good entry-level job candidate. Then there is just the general "aptitude" for the field that is hard to pin down; in particular, I really appreciate a general ability to think about problems in the abstract and also the ability to understand programming languages on a higher level and not just as separate, different collections of syntactic rules. But this sort of stuff comes from experience.

Interestingly, in my own daily work, I find that the hardest part is actually correctly understanding what all the various stakeholders expect of the project and to make sure that everything keeps humming along; the project integrates lots of data from all kinds of sources and then makes it visible to the customer's various representatives. If the data is wrong, their business suffers from wrong decisions. So surprisingly little is programming; the genuinely hard part is the business domain model.
Well, then I am at a crap position to be honest, because it is very hard for me to get apprenticeship(internship) and second I have no experience at all rather than project management experience :(. But for you as an employer, would you rather accept people with correct IT aptitude as well as experience with programming and creating projects at home. Or people with great work experience and good qualifications?

CptPicard
December 16th, 2012, 07:34 PM
But for you as an employer, would you rather accept people with correct IT aptitude as well as experience with programming and creating projects at home. Or people with great work experience and good qualifications?

This is a false dilemma. Of course if I have to choose between two candidates, the one with qualifications and experience wins every time.

However, we must understand that talented people must begin their career somewhere. Getting the first job is always a challenge, but just because someone is just starting out is not a reason to reject them outright. It's just perhaps a bit harder to actually recognize the talent in the person that you can then nurture.

In general I'd just look for general sharpness of thinking and some already developed insight about technologies (it's very good if you can have for example preferences that you can explain somehow -- there is not necessarily a correct answer but it demonstrates you have tried stuff out and even perhaps failed). Having personal projects is always a plus.

rasmus91
December 19th, 2012, 09:20 AM
CptPicard, suddenly i find it to be a nice thing that the work we do at my (education at my) university mainly consists of work in a 3-7 man group, where we will decide on a problem or vision we wish to work with, and then spend the semester trying to make that become reality. A good deal of the projects from third semester and on are done in cooperation with a business or public institution such as a school or a library, to develop anything from an computer vision based art system for a library, to a device that will help the 1 graders learn math or spelling. It can be everything and anything really.

I guess getting a student job will be a good thing though.


And "C++" says basically nothing

why is that?
I've tried Java, very little python, and a little C sharp, and then i've been learning C++, and i must say, of these C++ is by far my favourite. I guess the only thing thats really dislikeable about it (IMO) other than its not really cross platform, would be using new classes, because doing so means reading so much documentation and having to use time doing a few experiments to see exactly how the stuff practically works. but i guess i only dislike that out of laziness.

cheers!

trent.josephsen
December 19th, 2012, 03:14 PM
I was trying to find the article I was thinking of when I wrote that, but I can't seem to. It's not a reflection on the language (although if you want my opinion on C++ it's only a forum search away). It's just that there's no metric for knowledge of C++. "I know C++" could mean anything from "I took CS101 and think that makes me an expert on the language" to "I have read lots of tutorials online because the interwebs told me C++ was the language I needed to write games for a living." And given the quality of the freely available C++ learning materials that last one could be worse than no knowledge at all.

CptPicard
December 19th, 2012, 05:33 PM
C++ has lots of mystical reverence associated with it in particular among beginners as they seem to believe it is the "hard way" to get to "the most powerful language". They would be much better served developing their overall understanding of various programming paradigms and styles than the particular quirks of C++. It's just simply a more efficient use of time.

Trent is very correct about "knowing C++" being a very vague concept. I can easily say I know C++, but I still prefer not to put it on my CV as I actually know how tricky writing proper, correct code in that language can be (that is, the more you know, the more you understand how much it means to actually claim that you know C++)...

ofnuts
December 19th, 2012, 05:47 PM
I was trying to find the article I was thinking of when I wrote that, but I can't seem to. It's not a reflection on the language (although if you want my opinion on C++ it's only a forum search away). It's just that there's no metric for knowledge of C++. "I know C++" could mean anything from "I took CS101 and think that makes me an expert on the language" to "I have read lots of tutorials online because the interwebs told me C++ was the language I needed to write games for a living." And given the quality of the freely available C++ learning materials that last one could be worse than no knowledge at all.

This is true of about any language... And I know people who seem quite familiar with some languages but still are rather lousy coders. Computer languages are merely tools of the trade(*), knowing a language doesn't make you a good coder any more than knowing how to use a specific wrench makes you a good mechanic.

Programming isn't stringing statements together, it is having very clear ideas, it is understanding the logic, it is finding the angle of attack that makes everything as simple as can be, it is taking care of the details without losing sight of the big picture. Language knowledge is necessary, but secondary.

(*) And in the real world, the language is almost a side issue compared to the frameworks/APIs, and you can expect to have to become familiar with new frameworks every year or so.

CptPicard
December 19th, 2012, 07:37 PM
Programming isn't stringing statements together, it is having very clear ideas, it is understanding the logic, it is finding the angle of attack that makes everything as simple as can be, it is taking care of the details without losing sight of the big picture. Language knowledge is necessary, but secondary.

While I'm in agreement with the big-picture view of what programming actually is, I really do believe that broad knowledge of all kinds of languages does help you develop the kind of mindset that has been exposed to all kinds of solution patterns and is capable of thought like that. The thing is, if you only know, say, an imperative language, then you will think of things in terms of "stringing statements together". After you've seen enough code in various languages, you start seeing the problem for what it is, and by that point you probably are at the level where language feels insubtantial.

When I'm thinking of this subject, I am reminded of all those people who have over the years told me that understanding the pointer makes you understand everything... ;)

trent.josephsen
December 19th, 2012, 08:12 PM
#include <stddisclaimer.h>

(or maybe that should be <cstddisclaimer>)

This is true of about any language...
True, but I think C++ in particular suffers from the curse of popularity. Myriad outdated and sometimes downright bad tutorials and books claim to teach C++; it's simply impossible for a novice to separate the wheat from the chaff. C also suffers from this problem, but I think perhaps in a less severe fashion, maybe because it's less often used as an introductory language for beginning programmers. (Sometimes I think half the programming tutorials on the Internet are written by the aforementioned CS101 experts. Also sometimes I think half the programming books in print are written by people with less programming experience than my cat, but that's neither here nor there.)

I'd say Java is in a somewhat better position for a couple of reasons. It's newer and has fewer deprecated or otherwise crufty features. Similarly, it is rarely confused with C. But seeing it on a resume still doesn't convey all that much information, simply because of its popularity as a beginning programming language.