Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Finding a C dev job with an unusual experience/CV?

Options
  • 09-11-2009 9:45am
    #1
    Closed Accounts Posts: 515 ✭✭✭


    Does any one know of anyone who might want to hire a C programmer in the Dublin area? I know those are rare, that's why I'm asking.

    I would respond to offers on job sites, but I just won't pass the HR filters. I'm quite experienced, but I never had a job before. I'm 23, no degree and last year because I couldn't find a job (any job) I made my own commercial program (link) (all in C, except for some Objective-C for the Mac OS port) all by myself. I'd say it's quite a sophisticated piece of image/sound processing software so I thought that could vouch for how good a programmer I am. I make a living off it but I'd earn more if I worked for McDonald's, and since the recession is calming down and that I've gained quite a lot of demonstrable experience through it I thought that would be a good time for me to look for employment.

    But what to do about it? I have little faith in the usual 'send your CV to recruitment agencies' process, as my lack of the required 3 years of commercial experience gets me automatically filtered out, which is why I'm here to enquire about alternative paths to employment. In my mind my aforementioned experience should make a pretty desirable candidate of me given that surely not every "senior" software engineer could pull off a project like this all on their own with success?

    But how on Earth would I find such a job like this around here? As a C programmer? Well, it doesn't have to be all C, I'm also competent in ARM assembly programming, and I guess I could still learn another language if needed as long as it's not too OOP oriented (I have one of those minds who only understand how machines work in low level and whose grasp OOP concepts elude). Oh and it might be relevant to note that I'm also competent with parallelisation/multi-threading and multi-platform programming (with Windows, Mac OS X and Linux in desktop and embedded flavours), including dealing directly with each system API and even hardware registers in the case of embedded Linux.


«1

Comments

  • Registered Users Posts: 981 ✭✭✭fasty


    Even is languages like Java or C# are more popular, there are always positions for people who know C, especially those who know the low level stuff. OOP is great, but C isn't going anywhere.

    http://www.irishjobs.ie/ShowResults.aspx?Recruiter=Both&Category=3&Location=102&Keywords=c+embedded+linux&x=0&y=0

    You've got a project under your belt and think you're up for the job. Just apply for them!


  • Closed Accounts Posts: 5,096 ✭✭✭--amadeus--


    Experience of a full life-cycle development project is great. But it's not commercial experience and there is a fairly big difference between developing a project out of interest and for experience and working on something as a team member in a commercial environment to deadlines. Obviously the skills are transferable but in a market flooded with people who have that commercial experience it is that bit harder to get people to make teh leap of faith.

    Maybe offer to do internships or work experience? And get creative - look at something like LinkedIn for example and join groups on there. Network in teh real world as well, join any local programming groups, mailshot local companies and attempt to solicit freelance work, talk to agencies about contract positions (can be signifigantly easier to pick up). Be flexible on location - Jobserve often has a lot of London based programming contracts for example.

    And consider other routes of entry that might suit your background more, for example training or documentation.

    It can be done - my degree is in English, Sociology and Politics (!) and I'm mainly a programmer and database developer these days. Just stick with it.


  • Registered Users Posts: 1,922 ✭✭✭fergalr


    A_SN wrote: »
    Does any one know of anyone who might want to hire a C programmer in the Dublin area? I know those are rare, that's why I'm asking.

    I would respond to offers on job sites, but I just won't pass the HR filters. I'm quite experienced, but I never had a job before. I'm 23, no degree and last year because I couldn't find a job (any job) I made my own commercial program (link) (all in C, except for some Objective-C for the Mac OS port) all by myself. I'd say it's quite a sophisticated piece of image/sound processing software so I thought that could vouch for how good a programmer I am. I make a living off it but I'd earn more if I worked for McDonald's, and since the recession is calming down and that I've gained quite a lot of demonstrable experience through it I thought that would be a good time for me to look for employment.
    It looks like you've developed a piece of fairly novel and technically sophisticated software, from scratch, yourself, and its selling enough to earn you a modest living. There can be a big gulf between being able to make software that you give away for free, and make polished software of a quality and utility people pay for, so I think people would look really favourably on that experience.

    A_SN wrote: »
    But what to do about it? I have little faith in the usual 'send your CV to recruitment agencies' process, as my lack of the required 3 years of commercial experience gets me automatically filtered out, which is why I'm here to enquire about alternative paths to employment.
    I've heard several industry anecdotes of people who are hiring who avoid going through recruiters for precisely that reason. I think a lot of the better jobs aren't found through recruiters anyway.

    If you are really good, don't be afraid to just send in a CV and cover letter to companies who work in the areas in which you have skills. If you are going to be selling yourself on your previous software dev experience, make sure to include brief technical details that let people quickly evaluate that you aren't making stuff up or thinking you've made something much more important than you have.
    A_SN wrote: »
    In my mind my aforementioned experience should make a pretty desirable candidate of me given that surely not every "senior" software engineer could pull off a project like this all on their own with success?

    But how on Earth would I find such a job like this around here? As a C programmer? Well, it doesn't have to be all C, I'm also competent in ARM assembly programming, and I guess I could still learn another language if needed as long as it's not too OOP oriented (I have one of those minds who only understand how machines work in low level and whose grasp OOP concepts elude). Oh and it might be relevant to note that I'm also competent with parallelisation/multi-threading and multi-platform programming (with Windows, Mac OS X and Linux in desktop and embedded flavours), including dealing directly with each system API and even hardware registers in the case of embedded Linux.
    Can you prove it? :)
    Tbh, if you do up a good CV and cover letter with a credible list of the skills you have, and if you can prove it to people in interview, I'd be reasonably hopeful you'd find something.

    There's a good tradition in CS of hiring people that can do the job, as opposed to just those that have the piece of paper.
    At the same time though, and not knowing what you've done before, I wouldn't write off the stuff you learn in college either - make sure you know your theoretical fundamentals comprehensively too before going for an interview.


  • Registered Users Posts: 1,922 ✭✭✭fergalr


    Experience of a full life-cycle development project is great. But it's not commercial experience and there is a fairly big difference between developing a project out of interest and for experience and working on something as a team member in a commercial environment to deadlines.

    Its not large scale team based development, and there's definitely a different set of skills there that are also important. But at the same time, large teams can allow people that only ever produce very little to hide in them, whereas if you are a one man show, that doesn't happen.

    Surely it is commercial experience? If he's selling his software, and making a living from it, then that makes it commercial experience?


  • Subscribers Posts: 9,716 ✭✭✭CuLT


    Could try your hand at iPhone development? Put some time into getting handy with Objective-C and produce independent applications and do contract work; you could make a killing.

    Get yourself known online.


  • Advertisement
  • Closed Accounts Posts: 515 ✭✭✭A_SN


    fasty wrote: »
    You've got a project under your belt and think you're up for the job. Just apply for them!
    Mmh, good point, although as I said I don't think my CV would be very recruiter/HR filter-friendly.
    Maybe offer to do internships or work experience? And get creative - look at something like LinkedIn for example and join groups on there. Network in teh real world as well, join any local programming groups, mailshot local companies and attempt to solicit freelance work, talk to agencies about contract positions (can be signifigantly easier to pick up).
    Internships, only if they pay at least 1,000 euros a month (I need that much, to live). That doesn't exist does it? As for networking, I know a bunch of people at Tog, but they only could advise me to ask on local forums..

    As for mailshooting local companies, how do you find out who's out there and what they do? That's always a big problem with doing such things, hard to find anyone to mail to, mostly if you want to have quite a number of them.
    fergalr wrote: »
    It looks like you've developed a piece of fairly novel and technically sophisticated software, from scratch, yourself, and its selling enough to earn you a modest living. There can be a big gulf between being able to make software that you give away for free, and make polished software of a quality and utility people pay for, so I think people would look really favourably on that experience.
    Good point, yeah! I guess making something all on your own and selling more than 300 licenses is an achievement. That's quite different from "I've written a few patches for some FOSS project" I guess.
    fergalr wrote: »
    I've heard several industry anecdotes of people who are hiring who avoid going through recruiters for precisely that reason. I think a lot of the better jobs aren't found through recruiters anyway.
    Precisely why I'm here asking what I'm asking ;)
    fergalr wrote: »
    If you are really good, don't be afraid to just send in a CV and cover letter to companies who work in the areas in which you have skills. If you are going to be selling yourself on your previous software dev experience, make sure to include brief technical details that let people quickly evaluate that you aren't making stuff up or thinking you've made something much more important than you have.
    So, my CV should be mainly focused on that experience with my commercial project and the skills I have, right? Also, what kind of brief technical details should I mention, and where (in the CV or in the cover letter?). I'm actually not sure I've ever written a real cover letter..
    fergalr wrote: »
    Can you prove it? :)
    Like prove how? Prove with "it's true cause I've done this and this" or true as in "let me quickly write you a Linux fork bomb in assembly"?
    fergalr wrote: »
    Its not large scale team based development, and there's definitely a different set of skills there that are also important. But at the same time, large teams can allow people that only ever produce very little to hide in them, whereas if you are a one man show, that doesn't happen.
    Yeah, when you do it all on your own you have to deal with a very wide range of aspects, even things you wouldn't have touched with a ten foot pole (included non-programming aspects, can't say the easiest part was the marketing, mostly when you're trying to convince people that your new outlandish way of doing things is what they should do). And as for the programming, you'd think it's all about image/sound processing algorithms, but you touch anything, like OS-specific dialogues, serial verification through hashing, dealing with a crapload of different APIs and compiling on all platforms (things can get pretty tricky on Mac OS X when everything must be universal binaries and portable), file I/O for all kinds of formats that works on all platforms regardless of their different handling of UNICODE and current working directories, some cunning system for how threads that do the same thing work concurrently and get created/terminated, an entire GUI system from scratch, I even had to create my own rendering system for variable-width bitmap fonts stored in a PNG.
    CuLT wrote: »
    Could try your hand at iPhone development? Put some time into getting handy with Objective-C and produce independent applications and do contract work; you could make a killing.
    No thanks. For one thing it's too far away from my current skillset, but also I need a better salary security than that. My biggest problem isn't how little money I make but how irregularly I make it, some days you make more money than you made in the previous month. If my sales temporarily drop for some reason then by the end of this month I won't have a dime. That type of contract work doesn't seem to bring much more financial certainty..

    But yeah, Objective-C is very different from what I really know, and if you ask me it's one PITA of a programming language (but as I said I'm hardly the OOP type). Not to mention I don't even have an iPhone nor even a Mac recent enough for iPhone development ;).


  • Registered Users Posts: 1,228 ✭✭✭carveone


    A_SN wrote: »
    Mmh, good point, although as I said I don't think my CV would be very recruiter/HR filter-friendly.

    You'd be surprised. HR look for self-motivated individuals. Essentially running a project from start to finish, including sales+marketing, including customer interaction, website design and then shipping actual product is very significant. And not 10 copies either, 300 copies is into the "I run my own company" area which always gets HR interest. They also look for plays-well-with-others traits, but less so in the tech arena.
    Like prove how? Prove with "it's true cause I've done this and this" or true as in "let me quickly write you a Linux fork bomb in assembly"?

    Depends on the company. HR type interviewers will ask the former, technical guys will ask questions that make it obvious pretty quickly. I've done interviews where code was written and discussed.
    Yeah, when you do it all on your own you have to deal with a very wide range of aspects, even things you wouldn't have touched with a ten foot pole

    Flexible project skills. Path to management generally.

    Just my 2c...


  • Registered Users Posts: 5,618 ✭✭✭Civilian_Target


    Frankly, from what you're describing here you sound like a solid programmer.

    Maybe your best route is towards embedded software development. I work in Sophia Antipolis in the south of France, it's a huge software park with thousands of people employed in exactly this kind of software. (Think writing MP3 players for phones, with a budget of X MIps.)

    Are you determined to stay in Ireland?


  • Registered Users Posts: 38 DaveyByrne


    You do sound like you're cut out for this programming business - I'm impressed with the knowledge you have shown just in your posts. You will definitely need to get 'commercial' experience in a company though. It's like learning to play the trumpet in your bedroom... it's not until you play with the orchestra do you find out if you're in time or in tune.

    If you've a good programming mind (i believe good programmers are born, and not produced by studying) then I would recommend you look at the hottest trends in software development at the moment and go for that.

    My own experience is with Microsoft technologies, and I know that Sharepoint offers very lucrative contracting rates if you've got the experience. I also do LAMP stack stuff, and this opens up the world of eCommerce and CMS systems that are used widely throughout the world. There's a lot of very interesting stuff going on, so see which are the most popular and lucrative jobs on the recruitment sites and go for that. Blitz it and you will get something. Be yourself and you have a better chance of finding a company with a culture that suits you. If someone doesn't like you having a relaxed style, or just being technology oriented, then it's probably not the right environment for you.

    "High expectations are the key to everything" - Sam Walton


  • Registered Users Posts: 330 ✭✭leahcim


    What do you mean you do not have any commerical experience?

    It looks like to me you have plenty of experience working with the company behind photosounder.com (I know its your own company) but it is COMMERCIAL EXPERIENCE (you are selling the software aren't you).

    There is a world of a difference between some bloke writing toy software applications in their bedroom and keeping them to themselves and a bloke like you writing a polished piece of software and getting people to pay money to use it, if that is not commercial software I dont know what it.

    I would recon your main difficulty in gettting a job interview is a poor CV rather then lack of experience.


  • Advertisement
  • Registered Users Posts: 1,083 ✭✭✭Rulmeq


    leahcim wrote: »
    What do you mean you do not have any commerical experience?

    It looks like to me you have plenty of experience working with the company behind photosounder.com (I know its your own company) but it is COMMERCIAL EXPERIENCE (you are selling the software aren't you).

    There is a world of a difference between some bloke writing toy software applications in their bedroom and keeping them to themselves and a bloke like you writing a polished piece of software and getting people to pay money to use it, if that is not commercial software I dont know what it.

    I would recon your main difficulty in gettting a job interview is a poor CV rather then lack of experience.

    I think the point he is making is that it's impossible to get past recruiters who don't have the domain knowledge or interest in figuring this out.

    Although in my experience recruiters are often far too likely to send inappropriate CVs to employers :mad:


  • Registered Users Posts: 21,257 ✭✭✭✭Eoin


    Could you not "re-arrange" your CV so PhotoSounder is the business you were working for?


  • Registered Users Posts: 16,413 ✭✭✭✭Trojan


    (I'm writing this both as a former C coder and as an interviewing manager).

    I'd be wary of half-truths or omissions on your CV. But do make sure you're selling yourself well.

    If I were in your position, I think I'd be looking at targeting a small number of very specific companies (10-15 max) and concentrating efforts on them.

    I highly recommend 2 books, Ask the Headhunter (and read this article), and What Colour is My Parachute. I would love it if someone came to me with the approach outlined in Ask the Headhunter (it's the business equivalent of a beautiful woman approaching you in the street and asking you out).

    If you want to get into a startup/small business, then you are probably ok without a degree. If you want to get into the likes of IBM/Sun (where C is a big plus) then you will normally need an undergraduate degree (in *anything*).

    The positive: you have a tonne of relevant experience in your area. The negative: it sounds like you haven't worked in a professional development environment with a team.

    If you want to PM me an editable version of your CV, I'd be happy to review and suggest changes.


  • Closed Accounts Posts: 515 ✭✭✭A_SN


    Are you determined to stay in Ireland?
    Yeah, as I intend to study in TCD in less than a year. I think I'd be better off with a Master's degree in Engineering.
    DaveyByrne wrote: »
    You do sound like you're cut out for this programming business - I'm impressed with the knowledge you have shown just in your posts. You will definitely need to get 'commercial' experience in a company though. It's like learning to play the trumpet in your bedroom... it's not until you play with the orchestra do you find out if you're in time or in tune.
    I'd say it's more like the difference between being a solo player and playing as part of an orchestra, but you have a point there. Regardless, on experience I still beat a fresh college graduate though ;).
    DaveyByrne wrote: »
    If you've a good programming mind (i believe good programmers are born, and not produced by studying) then I would recommend you look at the hottest trends in software development at the moment and go for that.
    Ewww, sorry but no thanks. I think I'd rather consider becoming a hairdresser before I'd consider touching Java, C# or .Net. Not so much that there's something wrong with these languages, but I don't like what they're used for. I'm cut for low-level programming and heavily math-oriented algorithms, not at all for OOP or databases.
    leahcim wrote: »
    What do you mean you do not have any commerical experience?

    It looks like to me you have plenty of experience working with the company behind photosounder.com (I know its your own company) but it is COMMERCIAL EXPERIENCE (you are selling the software aren't you).

    There is a world of a difference between some bloke writing toy software applications in their bedroom and keeping them to themselves and a bloke like you writing a polished piece of software and getting people to pay money to use it, if that is not commercial software I dont know what it.

    I would recon your main difficulty in gettting a job interview is a poor CV rather then lack of experience.
    Good point! And yeah, my current CV doesn't do me justice (well, it's hardly been updated since before I created this program, but even then I don't know what I really should include or not in it, I don't know what people want to hear) and I don't even know how to write a cover letter. Worst of all, I have no idea whom to contact, no idea at all! I could use some coaching on that.
    eoin wrote: »
    Could you not "re-arrange" your CV so PhotoSounder is the business you were working for?
    I suppose it would have to be the main focus of my CV!
    Trojan wrote: »
    If I were in your position, I think I'd be looking at targeting a small number of very specific companies (10-15 max) and concentrating efforts on them.
    I like the sound of that! How would I find about such companies though?
    Trojan wrote: »
    If you want to get into a startup/small business, then you are probably ok without a degree. If you want to get into the likes of IBM/Sun (where C is a big plus) then you will normally need an undergraduate degree (in *anything*).
    Yeah, I think small companies are an order of magnitude more likely to be interested in me without me having anything but a leaving cert. That's no problem with me, IBM can wait until after I go back to college ;). I don't want to try and fight the odds, and I don't want to spend forever looking for a job either, so I'd like to focus on the jobs I'm most likely to land.
    Trojan wrote: »
    The positive: you have a tonne of relevant experience in your area. The negative: it sounds like you haven't worked in a professional development environment with a team.
    That's absolutely correct.
    Trojan wrote: »
    If you want to PM me an editable version of your CV, I'd be happy to review and suggest changes.
    Thank you, I greatly appreciate! I'll make sure to do that as soon as I first bring all the necessary updates to it.


  • Registered Users Posts: 5,379 ✭✭✭DublinDilbert


    A_SN wrote: »
    Ewww, sorry but no thanks. I think I'd rather consider becoming a hairdresser before I'd consider touching Java, C# or .Net. Not so much that there's something wrong with these languages, but I don't like what they're used for. I'm cut for low-level programming and heavily math-oriented algorithms, not at all for OOP or databases.


    Sounds like a strange/immature attitude for any programmer to have. Clearly you have some bias against certain languages & OOP.

    I do mostly embedded programming in C and C++, but find every now and then I will have to write some C# or Java, which i have no issue with doing. Its about knowing when to use the right tool for the job.


  • Closed Accounts Posts: 515 ✭✭✭A_SN


    Trojan wrote: »
    I highly recommend 2 books, Ask the Headhunter (and read this article), and What Colour is My Parachute. I would love it if someone came to me with the approach outlined in Ask the Headhunter (it's the business equivalent of a beautiful woman approaching you in the street and asking you out).
    I'm reading the article you linked to, it's very interesting and insightful, but it raises a few questions that you might be able to answer to. First of all, it suggests that I'd "do what the headhunter does: talk with other employees at the company, talk with the company's vendors and even its customers". Aside the fact that as I mentioned before I have no idea how I'd find which companies I should bother with, how on Earth am I supposed to contact their employees, managers and customers to have a friendly chit-chat with them about what's being done at the company? Is that even a realistic suggestion?

    Then, it suggests that I don't bother mailing my CV, but rather that I'd "give it only to managers who request it after you have talked or met with them". That's interesting, but again, how am I supposed to meet such people on purpose? Besides, from talking to me in this discussion thread you guys know more about what I can do than a well-written could tell you, and at that point after a good talk about what I've done and what I can do, someone with the perspective of hiring someone like me would probably interested in asking more questions or testing me rather than getting a resume of my experiences and skills.

    The article also focuses on taking control of the interview to talk about the work to be done and not let it be one of those inane Q&A sessions. How's that supposed to work? How do you hijack the interview into going your way? I don't suppose interviewers ask those questions because they're bored, they certainly set out to do this, perhaps it's their preferred interview method? How do you "turn it into the solution to an employer's problems"?

    Sometimes you see lots of advices that make sense, but have no idea how to apply them. Mostly when you have very little experience with successfully finding a job or even any experience with the corporate world.


  • Closed Accounts Posts: 515 ✭✭✭A_SN


    Sounds like a strange/immature attitude for any programmer to have. Clearly you have some bias against certain languages & OOP.

    I do mostly embedded programming in C and C++, but find every now and then I will have to write some C# or Java, which i have no issue with doing. Its about knowing when to use the right tool for the job.
    Well, I tried to understand and learn certain OOP languages, Smalltalk, C++, Objective-C, and well none of those stick. Trying to understand the concepts of OOP induces headaches, and I never really seem to remember what they do, what they're good for or why anyone would want to use those. Someone said that good programmers are born this way. I believe that good OOP programmers are born this way. I'm no such programmer, I believe I am meant to work with the most basic concepts of programming along with higher concepts of applied mathematics. C has enough such concepts for me. Classes, operator overloading, constructors, objects, messages, inheritance and all those higher level concepts just add to the headache, and I have no need for things to be defined as private or public. Which is fine by me as my core interests require little more than the level of sophistication of assembly languages, as they're either about low level operations or mathematics. I really like the utter simplicity of C, there are no tricky concepts about it, certainly nothing trickier than pointer management, which isn't fundamentally tricky, and you can do anything with it, so that allows me to do anything I want with it without having to work with concepts I find difficult to grasp or use. You don't even need a book to learn everything you need to know about C, only its latest ISO specification.

    As for databases, to me they're uninteresting and are about as fun as a spreadsheet. I don't find the algorithms involved particularly interesting, even though some sorting algorithms are ingenuous, they just don't appeal to me, and neither do database-centric applications. I pretty much only care about how machines work and making them work, and algorithms to process all types of signals. So simply enough I want to stay away from databases as I don't want to have a career centred on things I couldn't care less about.

    For the aforementioned reasons I think I'd be mediocre at OOP/databases/etc.. as they're just not natural to me, whereas I have a great natural understanding of the things I care about and am quite passionate about them. I don't believe I should force myself to be a jack of all trades, mostly when those other trades are only superficially related to the ones of my interest. I'm like a neurosurgeon in the making who couldn't care less about putting silicone bags into breasts, or an apprentice chef who doesn't want to hear the word "hamburger", even if that's what anyone wants these days.


  • Registered Users Posts: 981 ✭✭✭fasty


    Regarding trying to understand OO languages... Surely in C you must use abstract data types of some kind... structs... something... and data structures. And you must pass handles that hold or refer to some kind of state to functions...

    While that doesn't quite cover all aspects of OO programming, it certainly covers what I consider the important bits.

    Anyway, I don't really mind if it's not your thing, I make use of low and high level languages equally and like them all. Also, being "born" a good kind of anything is nonsense. If you have a logical mind and can learn, you can be a good programmer. Maybe not a great one, but a good one.


  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    Sounds like a strange/immature attitude for any programmer to have. Clearly you have some bias against certain languages & OOP.

    I do mostly embedded programming in C and C++, but find every now and then I will have to write some C# or Java, which i have no issue with doing. Its about knowing when to use the right tool for the job.

    +1 to that. OP, if for whatever reason that's your position re post-1980 languages, databases, OO development and various other vast swathes of the software development industry, fair enough. However, I'd tone that attitude way down in interviews, it likely won't go down well. As DublinDilbert points out; a) flexibility and adaptability is a very important trait for software developers, and b) most folks who work in software development will have worked with those areas/technologies at some point, and you're likely to piss them off with the leet hacker attitude. Nothing wrong with having preferences for particular platforms or areas of development - we all do - but being that dismissive about most of the software industry, well, not so much.


  • Closed Accounts Posts: 18 Jiri


    Sounds like a strange/immature attitude for any programmer to have. Clearly you have some bias against certain languages & OOP.

    I do mostly embedded programming in C and C++, but find every now and then I will have to write some C# or Java, which i have no issue with doing. Its about knowing when to use the right tool for the job.

    That's good news that there are still some programmer who uses C or even C++ in embedded programming :)


  • Advertisement
  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    Jiri wrote: »
    That's good news that there are still some programmer who uses C or even C++ in embedded programming :)

    Don't worry, there's still lots of embedded work done out there, and C/C++ would appear to be the most popular languages for a lot of it :)
    I don't do much embedded work myself, but there's gear all around this office that's being programmed for in C (plus the odd bit of C++) - everything from point-of-sale devices to vending machines and door locks. And I imagine the phones, photocopiers, a/c controllers, alarms, etc were all done likewise at some point. Lots of embedded dev work to be done out there.


  • Registered Users Posts: 5,379 ✭✭✭DublinDilbert


    A_SN wrote: »
    Well, I tried to understand and learn certain OOP languages, Smalltalk, C++, Objective-C, and well none of those stick. Trying to understand the concepts of OOP induces headaches, and I never really seem to remember what they do, what they're good for or why anyone would want to use those. Someone said that good programmers are born this way. I believe that good OOP programmers are born this way. I'm no such programmer, I believe I am meant to work with the most basic concepts of programming along with higher concepts of applied mathematics. C has enough such concepts for me. Classes, operator overloading, constructors, objects, messages, inheritance and all those higher level concepts just add to the headache, and I have no need for things to be defined as private or public. Which is fine by me as my core interests require little more than the level of sophistication of assembly languages, as they're either about low level operations or mathematics. I really like the utter simplicity of C, there are no tricky concepts about it, certainly nothing trickier than pointer management, which isn't fundamentally tricky, and you can do anything with it, so that allows me to do anything I want with it without having to work with concepts I find difficult to grasp or use. You don't even need a book to learn everything you need to know about C, only its latest ISO specification.

    As for databases, to me they're uninteresting and are about as fun as a spreadsheet. I don't find the algorithms involved particularly interesting, even though some sorting algorithms are ingenuous, they just don't appeal to me, and neither do database-centric applications. I pretty much only care about how machines work and making them work, and algorithms to process all types of signals. So simply enough I want to stay away from databases as I don't want to have a career centred on things I couldn't care less about.

    For the aforementioned reasons I think I'd be mediocre at OOP/databases/etc.. as they're just not natural to me, whereas I have a great natural understanding of the things I care about and am quite passionate about them. I don't believe I should force myself to be a jack of all trades, mostly when those other trades are only superficially related to the ones of my interest. I'm like a neurosurgeon in the making who couldn't care less about putting silicone bags into breasts, or an apprentice chef who doesn't want to hear the word "hamburger", even if that's what anyone wants these days.

    Just to the OP, i didn't mean to sound hard in what i wrote above. I too came from a linear programming background, C, basic, assembler, so when going to OO languages some of the concepts (although simple) can be hard to get your head around.

    Linear programming only gets you so far, there are times when OOP is a really neat way of approaching a problem. Basically the real world is full of objects, OPP helps us describe these objects and operate on them. A structure in C will allow you to group data together, but not the methods that operate on it.

    Here's a simple example, I had to write a vision systems application there a few years ago and wanted to test it out. I wanted to put snow/noise in the image, so i created a snow flake class.

    The snow flake had the following properties:-
    x location
    y location
    image size x
    image size y

    The snow flake had the following methods:-
    SnowFlake( ) <- Constructor Randomly set x & y locations, less than max
    CalcNextLocation( ) <- Randomly inc x & y locations to mimic snow
    Display( ) <- Draw snow flake on the image/screen



    In the above example, i could create any number of snow flakes (say 1000), put them into an STL vector (an array). Then for every frame in the video, i run along the vector calling CalcNextLocation( ) then calling Display( ) for each flake. Worked like a charm. And when a flake reached the end of the image, i would just reset the y=0, and it will fall all over again.


  • Closed Accounts Posts: 515 ✭✭✭A_SN


    The thread is drifting a bit off-topic. I still have no idea how to go about finding a job really, I still have many unanswered questions. Just saying, but anyways..
    fasty wrote: »
    Also, being "born" a good kind of anything is nonsense.
    You're kidding, right? There is such a thing as innate talent and predisposition. You know, like Mozart? People aren't born blank slates.
    +1 to that. OP, if for whatever reason that's your position re post-1980 languages, databases, OO development and various other vast swathes of the software development industry, fair enough. However, I'd tone that attitude way down in interviews, it likely won't go down well. As DublinDilbert points out; a) flexibility and adaptability is a very important trait for software developers, and b) most folks who work in software development will have worked with those areas/technologies at some point, and you're likely to piss them off with the leet hacker attitude. Nothing wrong with having preferences for particular platforms or areas of development - we all do - but being that dismissive about most of the software industry, well, not so much.
    Yeah, I know I'm not supposed to whine in an interview lol, i'd rather bring up my experience with C++ and ObjC. I don't see what's so wrong about me not being interested in the many things I mentioned though. There's lots of stuff you don't give a crap about. So you just try to stay away from them. And what I don't care about happens to not be important in doing what I do care about. I used to spend quite some time on comp.dsp, which pretty much represents my core interests of signal processing and low level programming, and I have yet to hear about anyone on there having to develop anything professional in anything but either C or assembly languages (MATLAB prototyping aside).

    And to conclude on the topic, I'm hardly an isolated case. People who grew on BASIC/Pascal/C and who can't get used to real OOP are dime a dozen, and you can't swing a dead cat in a room full of programmers without hitting one who feels uneasy at the idea of pointer management, memory allocations management or assembly languages, so it goes both ways really.
    Just to the OP, i didn't mean to sound hard in what i wrote above. I too came from a linear programming background, C, basic, assembler, so when going to OO languages some of the concepts (although simple) can be hard to get your head around.
    Very true. Oh well, I'll probably eventually just have to get into it anyway, I mean I've even had to use ObjC with just my personal projects. Doesn't mean you're going to see me applying for .Net jobs anytime soon though, I have to find something which core requirements match my core skills.
    Linear programming only gets you so far, there are times when OOP is a really neat way of approaching a problem. Basically the real world is full of objects, OPP helps us describe these objects and operate on them. A structure in C will allow you to group data together, but not the methods that operate on it.
    Yeah, but I never understood that, what's the point of cobbling functions with the data they operate on? What problem is it supposed to solve? I never understood that.
    Here's a simple example, I had to write a vision systems application there a few years ago and wanted to test it out. I wanted to put snow/noise in the image, so i created a snow flake class.

    The snow flake had the following properties:-
    x location
    y location
    image size x
    image size y

    The snow flake had the following methods:-
    SnowFlake( ) <- Constructor Randomly set x & y locations, less than max
    CalcNextLocation( ) <- Randomly inc x & y locations to mimic snow
    Display( ) <- Draw snow flake on the image/screen



    In the above example, i could create any number of snow flakes (say 1000), put them into an STL vector (an array). Then for every frame in the video, i run along the vector calling CalcNextLocation( ) then calling Display( ) for each flake. Worked like a charm. And when a flake reached the end of the image, i would just reset the y=0, and it will fall all over again.
    That's a pretty puzzling example. What's the interest of using OOP concepts there? Strip the OOP jargon off of it and you can do the exact same thing in good old C with an array of a thousand structs (containing the four parameters of each flake), 3 functions and a for loop. Although I wouldn't even bother making 3 separate functions for the little that does, I'd write it all in the loop (except the Display function). It just seems that you're not doing anything really different here from what I'd do in C with it. That's kind of my point actually, I don't see what you gained for using whatever a "STL vector" can be, nor what you gained from making the 3 functions somehow sewn together with the flakes. Not saying that those things have no advantages, but usually in my experience they tend to make things only marginally easier.

    Also, no idea how big your flake is supposed to be, but assuming the coordinates refer to the centre of the flake, then instead of setting the y coordinate back to 0, shouldn't you set it to -image_size_y/2 so it doesn't seem to suddenly pop up at the top of the screen? ;)


  • Registered Users Posts: 38 DaveyByrne


    A_SN wrote: »

    That's a pretty puzzling example. What's the interest of using OOP concepts there? Strip the OOP jargon off of it and you can do the exact same thing in good old C with an array of a thousand structs (containing the four parameters of each flake), 3 functions and a for loop. Although I wouldn't even bother making 3 separate functions for the little that does, I'd write it all in the loop (except the Display function). It just seems that you're not doing anything really different here from what I'd do in C with it. That's kind of my point actually, I don't see what you gained for using whatever a "STL vector" can be, nor what you gained from making the 3 functions somehow sewn together with the flakes. Not saying that those things have no advantages, but usually in my experience they tend to make things only marginally easier.

    The reason why the OO technique works well here is so that it can be re-used and enhanced in the future. What if your boss came to you and said "the snow works great - what about rain, or hailstones"? I'd much sooner have to code this using OO techniques than have to go back and edit the code for the array. OO techniques often mean that you don't have to rewrite or even understand the code inside the object you're using.

    In its simplest form, OO is about code-reuse and avoiding code duplication and bloat (I realise this is an over-simplification). These are very important things for 'commercial' software development, and this is why some experience in this area will do you a lot of good.

    There is a rule in software development called the "dis-economy of scale" which goes against the traditional "economy of scale" experienced when you produce more of a particular product. With software, the most lines of code you produce, the MORE effort it takes to maintain that, so your productivity will decrease over time. The more complex a system becomes, the more difficult it is to maintain it. OO technology helps with this in a big way.

    Since your original post is about getting a job - I'd recommend this:

    • Look for a job where you will work with experienced software developers.
    • Don't consider the job on it's own - think about your lifestyle in general. This means that you will have to think about not just what you are interested in, but also your terms of employment and ultimately money.
    • Don't make your mind up about any technology or platform until you have had commercial experience using it.
    • Be positive with recruiters/employers and let them know that you are determined to work in software development and will be very entuisiastic about it.
    • When you get a job - look around for people who can mentor you. Set your sights on becoming as good or better than these people and you will be amazed at how you will eventually overtake them.
    Best of luck!


  • Closed Accounts Posts: 12,382 ✭✭✭✭AARRRGH


    A_SN wrote: »
    I'm quite experienced, but I never had a job before.

    You've never had a job before, therefore you definitely are not "quite experienced".

    Most employers would think like me.

    If I were you I would target startups and go for bottom of the ladder development roles. Don't be looking for crazy money. What you need is to get your foot in the door and to get some work experience.


  • Registered Users Posts: 981 ✭✭✭fasty


    A_SN wrote: »
    You're kidding, right? There is such a thing as innate talent and predisposition. You know, like Mozart? People aren't born blank slates.

    I'm serious, not everyone is Mozart and you don't have to be born into being an OO or a linear programmer. If you're born with a logical mind, you should be able to figure it out.

    btw, I'm not saying you should use or like OOP or that it's better or worse. The thought never really crosses my mind, which is why I'm so confused when people say "C fo life, yo" :D


  • Registered Users Posts: 16,413 ✭✭✭✭Trojan


    A_SN wrote: »
    I'm reading the article you linked to, it's very interesting and insightful, but it raises a few questions that you might be able to answer to. First of all, it suggests that I'd "do what the headhunter does: talk with other employees at the company, talk with the company's vendors and even its customers". Aside the fact that as I mentioned before I have no idea how I'd find which companies I should bother with, how on Earth am I supposed to contact their employees, managers and customers to have a friendly chit-chat with them about what's being done at the company? Is that even a realistic suggestion?

    Yes it is. Read the appropriate section of What Colour is My Parachute to help find companies. Don't read the whole thing, but do skim though it quickly. It's a good reference book.
    A_SN wrote: »
    The article also focuses on taking control of the interview to talk about the work to be done and not let it be one of those inane Q&A sessions. How's that supposed to work? How do you hijack the interview into going your way? I don't suppose interviewers ask those questions because they're bored, they certainly set out to do this, perhaps it's their preferred interview method? How do you "turn it into the solution to an employer's problems"?
    Read all of Ask The Headhunter (it's much shorter than Parachute). It explains this in great detail.


  • Closed Accounts Posts: 5,096 ✭✭✭--amadeus--


    In my experience (and I've spent 8 of the last 15 years either freelance, contracting or self-employed so may not be an expert in getting "proper" jobs!) the first step in finisging a job is to display two attributes:

    - Realism
    - Adaptability

    Realism is huge. It helps you apply for the right jobs and right companies, not all jobs at all companies. It helps you understand your strengths and weaknesses. In essence it helps you understand what you can sell to the potential employer.

    Adaptability is also really important. Why? Because the perfect job isn't out there in teh real world. It will always have something you don't like about it. And every company is different so they will want you to adapt your approach in some way to fit in with thier way of working. As a self taught programmer (like myself) you probably have a whole heap more adapting to do than most.

    I know that you aren't on here pitching for a job. But the thread doesn't paint you in an "employable" light - you will only work with the languages you want to, you're only interested in certain industry sectors, are talking about going to college again in 12 months so aren't in it for teh long haul but you don't want a contract role. And a *lot* of very experienced and very clever people have come on and given some excellent advice and been knocked back pretty sharply.

    So if I were you I'd go back to square one. Why do you want a job in the first place? Because a job will probably mean sacrificing a fair few of teh principals you have been quite forceful about. And in return all you gain is a more frequent pay packet.

    So is it worth it?


  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    There's some solid advice being handed out in this thread, I'd definitely take it on board OP.

    Just to clarify a few more things;
    Re not being interested in certain areas, as per my previous post, that's not what I meant. We all have particular specialities and areas of interest within the (very broad) field of software development. The problem is your apparently disdainful and dismissive attitude to everything in the software industry but the few fields you think you're interested in. If that's an accidental result of how you expressed it and you meant something else, fair enough, you need to find a better way of phrasing it. If you really do have that much contempt for what most of us do for a living, then to be blunt, keep a lid on it. Definite red flag in an interview. Or better yet, realise you may not be cut out to be a professional software developer, and keep the coding stuff as a hobby or something.

    Re OO development, to be fair, part of the reason you have difficulty understanding it may be the lack of commercial experience - a lot of OO principles are aimed towards software being built by teams of people. Things like encapsulation, inheritance, interfaces, etc become more useful when other people will have to work with your code, and vice versa. It makes for safer development when someone isn't fully up to speed with a codebase/design, or just isn't as experienced as the person who wrote the core stuff they're extending. Likewise, OO design helps with modularity, and thus makes it easier for multiple people to work on the same system at once, without clashing either over source files themselves or structures, definitions and data flow. Code re-use is another big deal for commercial development - you don't really want to be writing fresh code if you can avoid it, too expensive and too risky. Best re-use existing stuff that's tested, debugged and proven - and extensible.

    Just to add further emphasis to the points we've all raised about flexibility and adaptability; a lot of embedded dev work tends to be done in small, specialised companies. In small companies in particular, developers have to be willing to take on whatever needs doing. A company may well span backend systems work to support whatever embedded systems they work on - the one I work for certainly does. That could be a desktop app of some sort, a database or two, a web UI, etc etc. Even if they don't, they'll probably have automated build/test systems, websites, bugtrackers, myriad tools, and so on, which may well be written in Java/Python/PHP/C#/whatever. Especially as a junior developer, it's quite possible you'll be told to work on something in that line at some point.

    To summarise that, in my time in the IT industry, I've never met anyone who's job title was "C Programmer" or "Java Programmer". We're software developers. Our role and our job is to design and build software that solves problems for people. That's the important part, after which you can talk about folks specialising in particular fields, or platforms, or methodologies, or whatever. All those things wax and wane - tech evolves, new platforms come out, fashions in development change, better tools come along, companies change their chosen tech, and so on.

    Re finding jobs, hit Google. Do the work; search companies in your area/Ireland/wherever it is you're looking. Research the company, then ring them up and find out if they're hiring. Find directories of Irish software companies. Find out about networking events where folks from the IT business meet up and talk shop - excellent way of building up contacts and knowledge of the software business. LinkedIn and similar services may also be of use in terms of networking with folks and researching companies.

    Also, as per --amadeus--'s suggestions, contracting or keeping up your own work/products may also be a better path - worth keeping in mind.

    Edit; some of that may come across a bit harsher than I intended, no offence. It is a good business to work in, and by all means stick with it - jobs are a bit thin on the ground at the junior end right now, but they are out there if you keep looking.


  • Advertisement
  • Registered Users Posts: 1,922 ✭✭✭fergalr


    Hey A_SN,
    Yeah, I know I'm not supposed to whine in an interview lol, i'd rather bring up my experience with C++ and ObjC. I don't see what's so wrong about me not being interested in the many things I mentioned though. There's lots of stuff you don't give a crap about. So you just try to stay away from them. And what I don't care about happens to not be important in doing what I do care about. I used to spend quite some time on comp.dsp, which pretty much represents my core interests of signal processing and low level programming, and I have yet to hear about anyone on there having to develop anything professional in anything but either C or assembly languages (MATLAB prototyping aside).

    Its completely fine to prefer working in C and dealing with very maths oriented application domains. There are programming jobs in these areas, and good people there, at the intersections between engineering, signals processing, and software development. Embedded systems has been mentioned as one area you might look at. Computational Science might be worth a look too?

    At the same time, while you don't have to like all sorts of programming, your attitude to OOP and higher level languages does seem a little dismissive.
    Are you sure you gave these technologies a fair look at?
    Sure, object oriented programming is taught in software courses in college for the last few years, and it ends up being oversold, and sometimes neglected in favour of more fundamental skills. And a problem with some programmers is the whole 'big hammer syndrome' - OOP is a pretty big hammer.

    But its very far from being just pure hype too. Its a great set of tools and techniques to manage certain kinds of complexity, and excels in some domains. For example, you built yourself a image/sound processing application with a GUI. If you wanted to add a lot of features to your GUI, as your program got bigger, and as you added more functionality, more developers etc you'd typically manage this much more easily if you built the application in a OO manner. Like, and I really want to emphasise this - way more easily than writing it in C etc.

    So, while its completely fine for you to say you prefer a lower level of programming, ideally you also should be willing to find and work with the best tool for the job - and you can't do that if you are writing whole sets of tools off.
    And to conclude on the topic, I'm hardly an isolated case. People who grew on BASIC/Pascal/C and who can't get used to real OOP are dime a dozen, and you can't swing a dead cat in a room full of programmers without hitting one who feels uneasy at the idea of pointer management, memory allocations management or assembly languages, so it goes both ways really.

    There are few enough good programmers out there at the moment who can't get their head around both OOP and Pointers.
    Now I wouldn't say you need OOP for a low level signals processing job, but if was expecting someone to be a rounded developer, it'd be a big thing to be missing.
    You might think by analogy of someone you met who was doing the sort of thing you are, and swore off C and Matlab because ASM was the best. You might still hire them if you were needing an excellent ASM coder and they were really good, but you'd be thinking "Whats the problem with learning C? Its really useful too."

    So, I'd say in summary, make sure you gave a fair run to the higher level languages and the other aspects of modern software development - theres a lot of cool stuff and a lot of fun in many different types of development work.
    But if you are sure you want to go the low level route, then look at, as you said, doing a masters in some sort of embedded systems, or computational science, mathematical computing etc. There mightn't be as many jobs, but there are jobs there. You might almost want to spend more time learning mathematics than computers if that's where you are heading.


Advertisement