How Do You Find A C/asm Programming Job?


A_SN

Active Member
Joined
Jun 8, 2006
Messages
899
Here's my situation, I'm looking for a C or ASM/embedded or signal processing programming job in Dublin, and, well, I hardly can find any job offers that don't involve C++ or Java or .Net. So what's the best way to find a job in those specific domains of programming? Looking harder for job offers that match (on any site in particular?)? Posting your resume and portfolio in a strategic place? Directly contacting a certain type of companies?

And for those who once had such a job, how did you get it?

EDIT : I'm allergic to OOP, just want to make this clear, I categorically refuse to touch C++, Java or .Net no matter if people tell me it's not that bad.
 
A_SN said:
Here's my situation, I'm looking for a C or ASM/embedded or signal processing programming job in Dublin, and, well, I hardly can find any job offers that don't involve C++ or Java or .Net. So what's the best way to find a job in those specific domains of programming? Looking harder for job offers that match (on any site in particular?)? Posting your resume and portfolio in a strategic place? Directly contacting a certain type of companies?

And for those who once had such a job, how did you get it?

EDIT : I'm allergic to OOP, just want to make this clear, I categorically refuse to touch C++, Java or .Net no matter if people tell me it's not that bad.

Sure, there's still work needed in the areas of low level programming, i think the industry is moving most people towards OOP. Any C/ASM work will probably be done by small number of well experienced programmers, where most entry level job offers will want oop knowledge.

I recommend looking into oop... saying QUOTE
I'm allergic to OOP, just want to make this clear, I categorically refuse to touch C++, Java or .Net no matter if people tell me it's not that bad.
is not going to look good in any interview...
 
Last edited by a moderator:
Whilst there are jobs where you can concentrate on ASM/C, there is usually some small part of the job that will appear every so often that requires you to get your feet wet with OOP (For example, at my place of work, it's mainly C/ASM with Microcontrollers, but there is the occasional need to write or modify Windows apps, which are all written using C++ classes with sometimes templates thrown in for good measure).

So, whether you like it or not, you need to get your feet wet and learn some OOP, either C++, Java or .Net.
 
As Squidge said, you can concentrate on C/asm but you need to have a smattering of knowledge in many things to make it as a software engineer...
I think Squidge is like me (except he obviously has more spare time to hack emulators, etc :))in that we've been in the industry many years, so easier to pick up projects due to a wide(ish) breadth of experience..
I think you need to show aptitude and an in-depth knowledge of how sw interacts with hw to get into software engineering; I look for versatility in people I interview (not always huge amounts of experience).
Good luck :) it's a challenging area to go into.
 
Straight C's almost becoming a black art around here, I blame MTV for the last generations lack of focus required to become really accomplished at it. The call seems to have increased as the use has dropped though, been turning more away lately. Legacy guys moving on or dying off like dinosaurs probably. Hang your shingle on dice.com, is that international? Must be some equivalent. Then again I'll do java, c++, perl, tcl, matlab, sysadmin, I don't give a shit whatever pays most, if I can work at home or bring my dog it's bliss. I gave up on the idea of doing what I love for a living back in '83. Today I say grab all the cash you can and enjoy a nice hobby.
 
Anything I ever wrote with it. There's OOP, Object Oriented Programming, which is not a bad thing and can really excel as an organizational tool and then there's DOOP, Dogmatic Object Oriented Programming, objects for objects sake which is pure evil incarnate. Got to know the difference. If you do well organized, structured C with black box functions of only one entry and exit point you're already in OOP. On the other hand if you call return every three lines you've got spaghetti. That is part of the beauty of C.
 
The problem with OOP is that I don't even understand its simplest concepts, like objects, or classes. Not to mention I don't like the concepts of garbage collection or operator overloading. I guess that might be a problem if ever I'm required to program in OOP.

Which is not answering to my original question ;) (but insightful nonetheless)

Sphinxter said:
Straight C's almost becoming a black art around here, I blame MTV for the last generations lack of focus required to become really accomplished at it. The call seems to have increased as the use has dropped though, been turning more away lately. Legacy guys moving on or dying off like dinosaurs probably. Hang your shingle on dice.com, is that international? Must be some equivalent. Then again I'll do java, c++, perl, tcl, matlab, sysadmin, I don't give a shit whatever pays most, if I can work at home or bring my dog it's bliss. I gave up on the idea of doing what I love for a living back in '83. Today I say grab all the cash you can and enjoy a nice hobby.
Dice.com is great, unfortunately it has only one job offer in Dublin, and I don't want to become a "bridge operator" ;)

I hope to be able to do something I like for a living :(
 
Last edited by a moderator:
This site doesn't appear to cover that part of Ireland, but it should give you ideas of what to look for (and is a really good site anyway) - http://www.itjobswatch.co.uk.

A couple of sites linked off of that one:
- http://www.computingcareers.co.uk/ - Did a quick search and has a C job in Dublin, but that looks like it wants people with experience and knowledge of web services
- http://www.cwjobs.co.uk/




Probably not much use really.... *wonders off*


PS, I know you've developed a few pieces of audio software, but would you be able to give a little bit of info on your background? Age? University graduate? School dropout? 50 year old ASM programmer that has just lost their job and is feeling lost in the world?
 
A_SN said:
The problem with OOP is that I don't even understand its simplest concepts, like objects, or classes. Not to mention I don't like the concepts of garbage collection or operator overloading. I guess that might be a problem if ever I'm required to program in OOP.
Well... then learn it. It's not THAT hard a concept. Seriously, OOP makes many things a lot easier and if I can understand it why shouldn't you? And what do you not like about garbage collection and overloading?
I may be completely wrong since I have never had a job in my life (still in college and hoping to soon be a master of arts) but IT really rewards breadth of knowledge and OOP is just such an important concept that you can't afford to NOT be able to use it.
 
Last edited by a moderator:
Blah said:
Show me something without OOP that isn't spaghetti code.
Is that what they taught you in university? There's a huge gap between unstructured code and OOP (which some might consider over structured code). In fact, very little would qualify as genuine spaghetti code, but to be so it would usually at least need to have some gotos. Even assembly code full of gotos doesn't necessarily have to be spaghetti code, although what your compiler generates probably will be.

QUOTE

If you do well organized, structured C with black box functions of only one entry and exit point you're already in OOP.


That isn't OOP. Contrary to popular misconception OOP isn't about encapsulation. The heart of OOP is inheritance and polymorphism. Encapsulation is generally a good practice of course.

You can do OOP in C by casting structures and fiddling around with function pointer tables for vtables. This isn't actually worth it most of the time, maybe if you have one level of inheritance without virtual functions.

QUOTE
On the other hand if you call return every three lines you've got spaghetti. That is part of the beauty of C.


Having multiple returns in a function isn't spaghetti. It's entirely subjective which is easier to read, but I can tell you for sure that having a single return instead of wrapping the coming lines in an if will usually be easier for me to understand (and it'll be easier for the compiler to not screw up performance wise). This is just another one of those things that are taught out of a sense of ideological purity, ie, dogma...

QUOTE

The problem with OOP is that I don't even understand its simplest concepts, like objects, or classes. Not to mention I don't like the concepts of garbage collection or operator overloading. I guess that might be a problem if ever I'm required to program in OOP.


I wish I could help you, I'd love a systems job where I did C and ASM (although I do a lot of C now, as well as C like C++, I also do Java and real C++ too)..

Learning the basics of OOP won't be hard for you. First, ignore other language features like garbage collection or operator/function overloading.

Think of a class as being based upon the idea of what a struct is. They define a new datatype. A struct only defines what pieces of data constitute that datatype, but a class also defines the operations you may do on that datatype. This means the functions that use that datatype's data. These functions are called "methods", and they are automatically passed an instance of that class (called an object) as a hidden parameter. This will probably be clearer with an example:

Take the stack data type (say it's a stack of integers). You could implement this with an integer array and an integer for the stack pointer. So in C it'd be like:

typedef struct
{
int stack_data[STACK_MAX];
int stack_pointer;
} stack;

Then you have functions for initializing the stack and pushing/popping elements. I'll just do the push here for sake of brevity.

void stack_initialize(stack *s)
{
s->stack_pointer = -1;
}

void stack_push(stack *s, int element)
{
s->stack_pointer++;
s->stack_data[s->stack_pointer] = element;
}

For a class, you'd define it like this:

class
{
int stack_data[STACK_MAX];
int stack_pointer;

stack()
{
stack_pointer = -1;
}

push(int element)
{
stack_pointer++;
stack_data[stack_pointer] = element;
}
} stack;

There are a couple things to note here: the initialization function was renamed to the name of the class. That's a "constructor" which is called when an object of that class is created. So when you do:

stack s;

Then the constructor is automatically called.

Then you can do:

stack.push(5);

Another thing to note is that within the methods all of the data of the class (called instance variables, or member variables) are accessible directly (so they fall within the scope).

This only describes the basics of classes, which is really pretty simple syntactic style over C. It doesn't explain inheritance and polymorphism which like I said are the heart of OOP (IMO) but it's a good start to understanding it all.
 
Last edited by a moderator:
Exophase said:
Blah said:
Show me something without OOP that isn't spaghetti code.
Is that what they taught you in university? There's a huge gap between unstructured code and OOP (which some might consider over structured code). In fact, very little would qualify as genuine spaghetti code, but to be so it would usually at least need to have some gotos. Even assembly code full of gotos doesn't necessarily have to be spaghetti code, although what your compiler generates probably will be.

QUOTE

If you do well organized, structured C with black box functions of only one entry and exit point you're already in OOP.


That isn't OOP. Contrary to popular misconception OOP isn't about encapsulation. The heart of OOP is inheritance and polymorphism. Encapsulation is generally a good practice of course.

You can do OOP in C by casting structures and fiddling around with function pointer tables for vtables. This isn't actually worth it most of the time, maybe if you have one level of inheritance without virtual functions.

QUOTE
On the other hand if you call return every three lines you've got spaghetti. That is part of the beauty of C.


Having multiple returns in a function isn't spaghetti. It's entirely subjective which is easier to read, but I can tell you for sure that having a single return instead of wrapping the coming lines in an if will usually be easier for me to understand (and it'll be easier for the compiler to not screw up performance wise). This is just another one of those things that are taught out of a sense of ideological purity, ie, dogma...

QUOTE

The problem with OOP is that I don't even understand its simplest concepts, like objects, or classes. Not to mention I don't like the concepts of garbage collection or operator overloading. I guess that might be a problem if ever I'm required to program in OOP.


I wish I could help you, I'd love a systems job where I did C and ASM (although I do a lot of C now, as well as C like C++, I also do Java and real C++ too)..

Learning the basics of OOP won't be hard for you. First, ignore other language features like garbage collection or operator/function overloading.

Think of a class as being based upon the idea of what a struct is. They define a new datatype. A struct only defines what pieces of data constitute that datatype, but a class also defines the operations you may do on that datatype. This means the functions that use that datatype's data. These functions are called "methods", and they are automatically passed an instance of that class (called an object) as a hidden parameter. This will probably be clearer with an example:

Take the stack data type (say it's a stack of integers). You could implement this with an integer array and an integer for the stack pointer. So in C it'd be like:

typedef struct
{
int stack_data[STACK_MAX];
int stack_pointer;
} stack;

Then you have functions for initializing the stack and pushing/popping elements. I'll just do the push here for sake of brevity.

void stack_initialize(stack *s)
{
s->stack_pointer = -1;
}

void stack_push(stack *s, int element)
{
s->stack_pointer++;
s->stack_data[s->stack_pointer] = element;
}

For a class, you'd define it like this:

class
{
int stack_data[STACK_MAX];
int stack_pointer;

stack()
{
stack_pointer = -1;
}

push(int element)
{
stack_pointer++;
stack_data[stack_pointer] = element;
}
} stack;

There are a couple things to note here: the initialization function was renamed to the name of the class. That's a "constructor" which is called when an object of that class is created. So when you do:

stack s;

Then the constructor is automatically called.

Then you can do:

stack.push(5);

Another thing to note is that within the methods all of the data of the class (called instance variables, or member variables) are accessible directly (so they fall within the scope).

This only describes the basics of classes, which is really pretty simple syntactic style over C. It doesn't explain inheritance and polymorphism which like I said are the heart of OOP (IMO) but it's a good start to understanding it all.

Oh yeah thanks, that's a very good explanation. Never understood what classes and constructors were before. Now that I understand that I can see how it's convenient.

Javacat said:
PS, I know you've developed a few pieces of audio software, but would you be able to give a little bit of info on your background? Age? University graduate? School dropout? 50 year old ASM programmer that has just lost their job and is feeling lost in the world?
I'm 21 and never really had a job before. And I've studied both programming and sysadmin in two separate schools, dropped out of the first one and I didn't yet get my degree from the second one, which is unsure whether or not I'll get it for various reasons. My resume might make things clearer.
 
Last edited by a moderator:
Exophase said:
Blah said:
Show me something without OOP that isn't spaghetti code.
Is that what they taught you in university? There's a huge gap between unstructured code and OOP (which some might consider over structured code). In fact, very little would qualify as genuine spaghetti code, but to be so it would usually at least need to have some gotos. Even assembly code full of gotos doesn't necessarily have to be spaghetti code, although what your compiler generates probably will be.

QUOTE

If you do well organized, structured C with black box functions of only one entry and exit point you're already in OOP.


That isn't OOP. Contrary to popular misconception OOP isn't about encapsulation. The heart of OOP is inheritance and polymorphism. Encapsulation is generally a good practice of course.

You can do OOP in C by casting structures and fiddling around with function pointer tables for vtables. This isn't actually worth it most of the time, maybe if you have one level of inheritance without virtual functions.


According to the 30 year stack of DDJ's next to my desk the sole purpose of creating OOP was code reuse and I think that is exactly object orientation, black boxes of code that know what to do with itself. You do not require polymorphism or inheritance, (singular or multiple), to be OO, just because I can't inherit it's props doesn't mean it's not an object.
 
Last edited by a moderator:
Sphinxter said:
According to the 30 year stack of DDJ's next to my desk the sole purpose of creating OOP was code reuse and I think that is exactly object orientation, black boxes of code that know what to do with itself. You do not require polymorphism or inheritance, (singular or multiple), to be OO, just because I can't inherit it's props doesn't mean it's not an object.
So who is it that decides what the definition of Object Oriented Programming is, because I don't think most people would agree that simply having a notion of "objects" in the language is sufficient. I would also argue that polymorphism and inheritance (single is good enough) promote reuse more than the level of moduarlity you're describing. Even though they're all based in modularity they're not really things you can always easily do in a procedural language without adding a lot of boilerplate and having to keep track of a lot more as you go.

Properties of generic programming (including templates and, yes, even macros) and functional programming promote reuse too, but in different ways. Of course at its core procedural programming promotes reuse but that doesn't make a procedural language OOP by design.
 
Last edited by a moderator:
Back
Top