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
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

What exactly is 'Software Engineering'?

  • 21-08-2011 10:31pm
    #1
    Closed Accounts Posts: 40


    Is it the same as Computer Science/ programming, or is it a branch of Computer Engineering? Also, what's the difference between (a) a programmer, (b) a software developer and (c) a software engineer?


«1

Comments

  • Registered Users, Registered Users 2 Posts: 1,686 ✭✭✭RealistSpy


    ITguy2 wrote: »
    Is it the same as Computer Science/ programming, or is it a branch of Computer Engineering? Also, what's the difference between (a) a programmer, (b) a software developer and (c) a software engineer?

    They're all the same.
    Software Development sound more fancy that Programmer etc


  • Registered Users, Registered Users 2 Posts: 33 frezzabelle


    While they are pretty much the same thing CS is a bit more low level. For example I think CS students look at compilers, where as I did a software engineering course and we didn't study them at any length(we just used them).


  • Closed Accounts Posts: 18,163 ✭✭✭✭Liam Byrne


    RealistSpy wrote: »
    They're all the same.

    Nowhere near the truth.

    A software engineer is the equivalent of an architect, while a programmer is the equivalent of the blocklayer.


  • Registered Users, Registered Users 2 Posts: 5,015 ✭✭✭Ludo


    Liam Byrne wrote: »
    Nowhere near the truth.

    A software engineer is the equivalent of an architect, while a programmer is the equivalent of the blocklayer.

    I was wondering who would come out with this first.

    All the terms are pretty interchangeable in reality and different companies use different terminology so a developer may be an engineer or an architect in a different company even though they do the exact same job. All "developers" do software design work routinely as part of their work and the more experience they get, the higher level of design they do. So even the lowest "blocklayer" who designs his own small module would be the equivalent of a junior engineer maybe.
    At what point do they change from being a programmer, to being an engineer, to being an architect??? Well it is completely arbitrary and sometimes HR departments will use a title change like this in place of a pay bump for the hell of it. There are loads of articles on the web about this.
    It is not like there are distinct points or qualifications where you change from being one to the other so just because someone says they are a software engineer rather than a developer means nothing in reality...to me it is all about experience.


  • Registered Users, Registered Users 2 Posts: 14,350 ✭✭✭✭SteelyDanJalapeno


    can of worms!


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    It's been debated ever since the 1970s. The idea is that software engineering is like other branches of engineering - but as to whether or not we understand the area enough to say it's moved from art/R&D to day-to-day predictable engineering, well very few people agree on that. Some think we'll never have the process of writing software well understood enough to take it from a somewhat black art to a well-understood engineering process.

    On the other hand, if you look at the early histories of civil and mechanical and electrical engineering, you don't exactly find boring, staid, ISO9000-driven histories.

    Personally, I think we're at the same historical level with software engineering right now that electrical engineering was at at the time of Nikola Tesla, and with many of the same things going on - the first degree courses starting up and some of the big names in the field coming up from them, the other big names in the field have coming in from outside without those degrees, everything being reinvented every other year or month, lots of conflicting theories as to how to do things, some stuff nailed down but most not, and while it was obvious it was going to be very important to society, noone had yet figured out how central it would be, and nobody was regulating much despite massive failed projects (and quite a few deaths resulting from them, as it turned out).

    Give us another generation or two and we'll start to see the field get more and more nailed down as the general public realises how much it depends on software and we realise how little tolerance the general public has for the "this is an art" argument when bad software failures can kill you, or even worse, lead to your bank account being drained or your car not starting on a wet monday morning.


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


    I disagree with most of what has been said on this thread.

    ITguy2 wrote: »
    What exactly is 'software engineering'. Is it the same as Computer Science/ programming, or is it a branch of Computer Engineering? Also, what's the difference between (a) a programmer, (b) a software developer and (c) a software engineer?

    First off, I think "Computer Science/programming" is wrong - they are two separate things.

    "Computer Science" is a bad term. Its not about the physical artefacts that are computers, and its largely not a science. Something like "Computation Mathematics" might be better.
    Its about algorithms, and questions about properties of types of computational patterns. So, things like sorting algorithms, or an analysis of the insert time of a red-black-tree, or proving that a procedure always terminates under certain conditions; that sort of thing is "computer science".


    Many computer scientists spend a lot of their time programming.
    Programming is pretty broad, but its about expressing exactly what you want the computer to do, typically to a computer; capturing intention, in some form.

    Some people say that the act of programming covers a very broad set of things, including things like talking to, say, the customer, to make sure the right intentions are captured, and managing ones time and maybe even human processes, in order to make sure the correct code gets written.
    Other people define programming to be just what you do in your editor, and say that all the rest is described as "software development".

    Clearly, there is a lot of "software development" that is not programming; some may even be done by people who don't know how to program, and much by those who no longer program regularly.
    You can think of it as all the tasks around the software, that support the right software getting written. (There'll usually be lots of other stuff in a business, which the software is written *for*, like sales and marketing; they wouldn't be considered software development, even in a software company).
    A software developer is someone who does these things.
    Usually, it refers to someone who is able to program, or programs; but it might also refer to systems architects, who lay things out, or maybe even to UI designers, although this is usually considered a separate function.


    Finally, it turns out that software development is actually quite hard.
    There is a lot that can go wrong. A lot of projects fail.
    We want to do a lot, with not a huge amount of resources.
    People are trying to figure out better ways of doing these things, and applying scientific principles, and knowledge on things like project management, specification, design etc. to try and make software development happen better.
    The name often used for this rough, young, and arguably a bit confused discipline is "software engineering".



    That's what I think the different things mean.

    In practice lots of people use different terms interchangeably.

    If someone says
    "I'm a Computer Scientist/Software Developer/Software Engineer!" it really tells me very little.
    If I want to know what they do, I have to ask more questions.

    Like "What sort of stuff do you do?".


    I think I've been all 3. At the moment, I reckon I'm closest to a computer scientist; in a couple of months time, it might be different!


  • Registered Users, Registered Users 2 Posts: 1,311 ✭✭✭Procasinator


    ITguy2 wrote: »
    Also, what's the difference between (a) a programmer, (b) a software developer and (c) a software engineer?

    It is quite ambiguous. But to me, a software engineer could apply to roles you might not consider in developer/programmer. Such as a tester or architect. A software engineer might re-engineer or analyse a program (such as a legacy program). They might use profiling to analyse performance. Maybe look at scaling a system, etc. Even things like product/library evaluation, benchmarking/stress testing, etc.

    It's about applying engineering like processes, and producing quantifiable results.

    Saying that, many of these kind of tasks might be done under the title of programmer or developer.


  • Registered Users, Registered Users 2 Posts: 2,395 ✭✭✭AntiVirus


    A Software Engineer is invloved in all parts of the software life cycle, from start fo finish.

    A Software Developer may be employed to help design and test your system. He would also look after the programmers and delegate different jobs for them.

    A Programmer may be employed to code part of the software, this could be writing a sets of functions that may be needed for different parts of the system. He just needs to know what you want him to do, he doesn't even need to know what the project is.


  • Registered Users, Registered Users 2 Posts: 5,015 ✭✭✭Ludo


    AntiVirus wrote: »
    A Software Engineer is invloved in all parts of the software life cycle, from start fo finish.

    A Software Developer may be employed to help design and test your system. He would also look after the programmers and delegate different jobs for them.

    A Programmer may be employed to code part of the software, this could be writing a sets of functions that may be needed for different parts of the system. He just needs to know what you want him to do, he doesn't even need to know what the project is.

    I agree with the first sentence, but the next 2 are really out there. Never in all my years working in "development" in plenty of companies have I heard those descriptions. And neither would I ever want to work somewhere that would actually adhere to them either.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 2,395 ✭✭✭AntiVirus


    Ludo wrote: »
    I agree with the first sentence, but the next 2 are really out there. Never in all my years working in development in plenty of companies have I heard those descriptions.

    Thats why both of those 2 have "may be" written in them, as they're there as an example. You wouldn't have it switched around.
    Ludo wrote: »
    And neither would I ever want to work somewhere that would actually adhere to them either.

    That's just rubbish! You do what you're hired to do, if thats to test software thats what you do, if its to write a software library thats what you do, if it's to support software thats what you do.


  • Registered Users, Registered Users 2 Posts: 5,015 ✭✭✭Ludo


    AntiVirus wrote: »
    That's just rubbish! You do what you're hired to do, if thats to test software thats what you do, if its to write a software library thats what you do, if it's to support software thats what you do.

    But if you are testing you are a software tester/test engineer. I have never heard of a tester referred to as a developer in any shape or form before. An analyst may be a more common term for what you describe (design and test).

    And even someone who is writing software libraries will know things about the "system" (as you put it) they are developing for. The number of people developing in that kind of isolation would be very small I imagine in the grand scheme of things.

    As for a developer delegating jobs to programmers...wouldn't that be a lead engineer or a tech/team lead or some other term like that. I can see why the role you describe could be called a developer but I have never seen it called that before.

    This shows how meaningless these terms are in reality. While I think we can all agree on the difference with computer science, the other terms are all interchangeable depending on where you work essentially no matter what people think or want them to mean.


  • Moderators, Society & Culture Moderators Posts: 9,744 Mod ✭✭✭✭Manach


    My own experience is the terms used depend on the team structure and if it is used in a customer facing role or not. Complex software projects are developed by teams. The individual members roles and responsibites evolve over time, and as they get to interact more with the system their descriptive term morphs from developer to architect (either coding or test). I've not heard the term engineer used with the same level of frequency.


  • Registered Users, Registered Users 2 Posts: 2,395 ✭✭✭AntiVirus


    Ludo wrote: »
    But if you are testing you are a software tester/test engineer. I have never heard of a tester referred to as a developer in any shape or form before. An analyst may be a more common term for what you describe (design and test).

    And even someone who is writing software libraries will know things about the "system" (as you put it) they are developing for. The number of people developing in that kind of isolation would be very small I imagine in the grand scheme of things.

    As for a developer delegating jobs to programmers...wouldn't that be a lead engineer or a tech/team lead or some other term like that. I can see why the role you describe could be called a developer but I have never seen it called that before.

    This shows how meaningless these terms are in reality. While I think we can all agree on the difference with computer science, the other terms are all interchangeable depending on where you work essentially no matter what people think or want them to mean.

    If you've qualified as a software engineer and have taken a job as a software tester, you are a software tester, thats what you've been employed to do.

    Software developers hired to develop software do have to test their software but the testing by no means stops there.

    Taking on some students to do some work experience or students who have just qualified and have no experience would most likely be hired as programmers. It doesn't matter if they qualified as a software engineer, software developer, programmer, etc... They need the experience to move forward...

    When you have a development team of 20+ there's many different levels of skills and not everyone is involved in every part of the project cycle.

    In my previous example they all could have been software engineers/software developers/programmers all with just different years of experience.


  • Registered Users, Registered Users 2 Posts: 5,015 ✭✭✭Ludo


    AntiVirus wrote: »
    Ludo wrote: »
    But if you are testing you are a software tester/test engineer. I have never heard of a tester referred to as a developer in any shape or form before. An analyst may be a more common term for what you describe (design and test).

    And even someone who is writing software libraries will know things about the "system" (as you put it) they are developing for. The number of people developing in that kind of isolation would be very small I imagine in the grand scheme of things.

    As for a developer delegating jobs to programmers...wouldn't that be a lead engineer or a tech/team lead or some other term like that. I can see why the role you describe could be called a developer but I have never seen it called that before.

    This shows how meaningless these terms are in reality. While I think we can all agree on the difference with computer science, the other terms are all interchangeable depending on where you work essentially no matter what people think or want them to mean.

    If you've qualified as a software engineer and have taken a job as a software tester, you are a software tester, thats what you've been employed to do.

    Software developers hired to develop software do have to test their software but the testing by no means stops there.

    Taking on some students to do some work experience or students who have just qualified and have no experience would most likely be hired as programmers. It doesn't matter if they qualified as a software engineer, software developer, programmer, etc... They need the experience to move forward...

    When you have a development team of 20+ there's many different levels of skills and not everyone is involved in every part of the project cycle.

    In my previous example they all could have been software engineers/software developers/programmers all with just different years of experience.


    So we agree then :-)


  • Closed Accounts Posts: 40 ITguy2


    Are nobody calling themselves Computer Programmers anymore? I personally prefer that term to engineer, developer etc.


  • Registered Users, Registered Users 2 Posts: 2,395 ✭✭✭AntiVirus


    Ludo wrote: »
    So we agree then :-)

    Sort of but if I'm looking for a programmer, I wouldn't really care if he was a brain surgeon as long as he could do what the job description requires. :D


  • Registered Users, Registered Users 2 Posts: 2,395 ✭✭✭AntiVirus


    ITguy2 wrote: »
    Are nobody calling themselves Computer Programmers anymore? I personally prefer that term to engineer, developer etc.

    When anyone asks me what I do I say I'm a Programmer. It also rolls of the tongue much easier. To most people they're all the same and they'll just reply "oh you work with computers" :D

    If they are interested and want to know more then I'll explain exactly what I do.


  • Registered Users, Registered Users 2 Posts: 5,015 ✭✭✭Ludo


    ITguy2 wrote: »
    Are nobody calling themselves Computer Programmers anymore? I personally prefer that term to engineer, developer etc.

    I would say programmer generally but it would depend who is asking, similar to what AntiVirus says above.


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    ITguy2 wrote: »
    Are nobody calling themselves Computer Programmers anymore? I personally prefer that term to engineer, developer etc.

    Unlike Engineer (though this varies according to jurisdiction), programmer is not a legally protected term.

    That's one of the things that lets you know the field is very young as branches of engineering go - the job titles haven't been nailed down and standardised yet, and only minimal legal protection of job titles is in place (and if you think legal protection of terms is unimportant, ask yourself next time you go for surgery if you think "surgeon" should be a protected term...).

    So right now you could do the same job in five or six different places and be called five or six different things from engineer to developer to coder to programmer to web monkey to analyst.


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


    Sparks wrote: »
    Unlike Engineer (though this varies according to jurisdiction), programmer is not a legally protected term.

    "Engineer" is completely unprotected in Ireland - anyone can call themselves an engineer, and lots of people do. "Chartered Engineer" is legally protected, afaik. In lots of countries, some variant on 'engineer' is protected.

    Sparks wrote: »
    That's one of the things that lets you know the field is very young as branches of engineering go - the job titles haven't been nailed down and standardised yet, and only minimal legal protection of job titles is in place (and if you think legal protection of terms is unimportant, ask yourself next time you go for surgery if you think "surgeon" should be a protected term...).

    I think protected job titles typically serve as state licensed monopoly, more than anything else; essentially they give the members of the profession a license to charge more money.

    If I'm going for surgery, I care that I have a good surgeon, not just a surgeon. Similarly, knowing that a lawyer is defending you, isn't usually enough - people generally want a good one, not just a titled one.
    This could change, but only if the way such legally protected titles were awarded was much more stringent; I don't ever see that happening.


    You can become a "Chartered Engineer" as a software engineer at the moment; but if I got a CV for a software job, from a candidate who was a "Chartered Engineer", I'd be interviewing them just as critically as anyone else.

    If there is a job where individuals could only do it if they were chartered engineers, I would be suspicious that was more about money making, and protectionism, more so than guaranteeing quality.

    I'm not sure to what extent I really trust the professional 'clubs' that are out there, and I don't know to what extent professional titles protect members of the public, vs. whether they lure them into a false sense of security, and create a mystique, that intimidates the public from asking searching questions.


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    fergalr wrote: »
    "Engineer" is completely unprotected in Ireland - anyone can call themselves an engineer, and lots of people do. "Chartered Engineer" is legally protected, afaik. In lots of countries, some variant on 'engineer' is protected.
    Exactly. It's "Chartered Engineer" here, "Chartered Engineer" or "Incorporated Engineer" in the UK, and various others in other EU states.
    I think protected job titles typically serve as state licensed monopoly, more than anything else; essentially they give the members of the profession a license to charge more money.
    Yes, but the motive for that is to have a degree of control over the level of qualification required for practicing that profession (and that's how the C.Eng. programme is set up, as are the equivalent certifications in other states, and that's all laid out in a few different international agreements).
    If I'm going for surgery, I care that I have a good surgeon, not just a surgeon.
    :D
    You *hope* you have a good surgeon - the legal protection is to stop you getting someone who did a correspondence course in veterinary surgery opening you up for a quadruple bypass without legal consequences (you think caveat emptor is a pain when you buy a busted kettle? Look up the early history of medicine in europe :D ).
    Similarly, knowing that a lawyer is defending you, isn't usually enough - people generally want a good one, not just a titled one.
    Yes, but again, the title is there to indicate a minimum standard of qualification, not to act as a rankings system (which would be a very nontrivial thing to set up in any profession).
    You can become a "Chartered Engineer" as a software engineer at the moment; but if I got a CV for a software job, from a candidate who was a "Chartered Engineer", I'd be interviewing them just as critically as anyone else.
    Which is a fairly odd state of affairs in engineering - in Civil engineering, if you didn't have the C.Eng, the interviewer will be wondering why (unless you're only starting out), because there's a lot of buy-in to it from the industry and you're expected to work towards it from day one as a new graduate.

    And that's a hallmark of an established engineering field in general, when the main companies in the field have bought into the idea of CPD for engineers in general being a good idea for them specifically (because it ensures a solid pool of talent to recruit from and it's a tangible benefit when headhunting).
    If there is a job where individuals could only do it if they were chartered engineers, I would be suspicious that was more about money making, and protectionism, more so than guaranteeing quality.
    Driven over a bridge recently?
    Been in a building?
    Driven a car?
    Flown in an airliner?
    C.Eng (or equivalent) needed for the engineers on those projects (the senior engineers at any rate, and part of their job description is mentoring the non-C.Eng. engineers as they work towards their C.Eng).
    It's a lot like the old master-journeyman-apprentice system, which is probably not a huge coincidence.
    I'm not sure to what extent I really trust the professional 'clubs' that are out there, and I don't know to what extent professional titles protect members of the public, vs. whether they lure them into a false sense of security, and create a mystique, that intimidates the public from asking searching questions.
    Hello Thomas Edison, circa 1880.
    Your future industry is probably going to be run by the Nikola Teslas though (ie. people with specific training and degrees in the field). And social pressure plays a large part in this - when your light bulbs can explode, setting fire to your house in the process if they were plugged in at the time, people start demanding that practitioners be trained or they don't trust them. That's why we went from the days of Faraday (completely self-taught and worked as a scientist - ie. one-offs, experiments) to the days of Edison (self-taught and worked as an industrialist getting the systems in place) to the days of Tesla (specifically trained and approached things from the theory side to the practical and thus leapfrogged the technical abilities of Edison, who emphasised large-scale trial and error (and stealing designs) over theoretical work).


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


    Sparks wrote: »
    Exactly. It's "Chartered Engineer" here, "Chartered Engineer" or "Incorporated Engineer" in the UK, and various others in other EU states.


    Yes, but the motive for that is to have a degree of control over the level of qualification required for practising that profession (and that's how the C.Eng. programme is set up, as are the equivalent certifications in other states, and that's all laid out in a few different international agreements).


    :D
    You *hope* you have a good surgeon - the legal protection is to stop you getting someone who did a correspondence course in veterinary surgery opening you up for a quadruple bypass without legal consequences (you think caveat emptor is a pain when you buy a busted kettle? Look up the early history of medicine in europe :D ).

    I was at a really interesting talk in the RCSI, during culture night a year or two ago, where the speaker discussed the history of the RCSI, and how it was set up, when they broke away from the barbers, to set themselves up as a separate professional guild! I don't believe they had any medical qualifications - or anything other than a sharp set of knives - at the time.
    Pretty scary stuff, really.


    Sparks wrote: »
    Yes, but again, the title is there to indicate a minimum standard of qualification, not to act as a rankings system (which would be a very nontrivial thing to set up in any profession).

    I guess that I'm not sure the title fulfils that role.

    Or rather, it does indicate some minimum standard; but that minimum standard is below the required standard, and as such the title isn't that useful.
    And, furthermore, you lose some efficiency, by denying people alternate routes to become competent developers.

    There's always a cost, to locking things down, and you can end up with problems of overfitting. They'd be huge at the moment, if you tried to regulate software.

    Like, I think this is a major problem even in medicine at the moment, in this country: There's only a handful of ways to become a doctor, and I'm not sure they select the best people. A great medical scientist, say, might do a better job than some less good doctors, in certain specialist roles - but they aren't allowed do them. Psychiatry, as another example, requires becoming a trained doctor first - but does this system really result in the best practising psychiatrists?


    I guess, ultimately, there is an information asymmetry between the provider of the service, and the person paying for the service. The provider knows how good they are, and the buyer doesn't.
    Titles are one way to mitigate this asymmetry; but they come at a cost. Maybe in future, a state wide, crowd sourced, review system would be better?

    Maybe a system that is some future evolution of Linked-In, and/or Github, would be a better answer to the problem than protected titles?

    Sparks wrote: »
    Which is a fairly odd state of affairs in engineering - in Civil engineering, if you didn't have the C.Eng, the interviewer will be wondering why (unless you're only starting out), because there's a lot of buy-in to it from the industry and you're expected to work towards it from day one as a new graduate.
    Yes; and you've got to be overseen by an existing C.Eng. and you've got to pay money for CPD courses, and membership dues to the body, etc.
    Its a bit of a club...

    Its worse if you want to be a doctor, you've got to intern like a slave; similar things exist for barristers, accountants.

    Are the guarantees that titles give, in the end, really worth it?
    Sparks wrote: »
    And that's a hallmark of an established engineering field in general, when the main companies in the field have bought into the idea of CPD for engineers in general being a good idea for them specifically (because it ensures a solid pool of talent to recruit from and it's a tangible benefit when headhunting).


    Driven over a bridge recently?
    Been in a building?
    Driven a car?
    Flown in an airliner?
    C.Eng (or equivalent) needed for the engineers on those projects (the senior engineers at any rate, and part of their job description is mentoring the non-C.Eng. engineers as they work towards their C.Eng).
    It's a lot like the old master-journeyman-apprentice system, which is probably not a huge coincidence.
    And similar to the PhD system, too. (for better and worse)

    Sparks wrote: »
    Hello Thomas Edison, circa 1880.
    Your future industry is probably going to be run by the Nikola Teslas though (ie. people with specific training and degrees in the field). And social pressure plays a large part in this - when your light bulbs can explode, setting fire to your house in the process if they were plugged in at the time, people start demanding that practitioners be trained or they don't trust them. That's why we went from the days of Faraday (completely self-taught and worked as a scientist - ie. one-offs, experiments) to the days of Edison (self-taught and worked as an industrialist getting the systems in place) to the days of Tesla (specifically trained and approached things from the theory side to the practical and thus leapfrogged the technical abilities of Edison, who emphasised large-scale trial and error (and stealing designs) over theoretical work).

    This sounds interesting - have you got an article or book that talks about this, and uses these examples? Sounds like theres an interesting essay in there - has it been written?


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    fergalr wrote: »
    I don't believe they had any medical qualifications - or anything other than a sharp set of knives - at the time.
    Pretty scary stuff, really.
    Sharp knives and fast hands. Literally, that was all - and the fast hands were as important as the sharp knives because the faster they got things over with, the higher your odds of survival. Look up how they got rid of kidneystones sometime if you want to squirm for a good five minutes :eek:
    Or rather, it does indicate some minimum standard; but that minimum standard is below the required standard, and as such the title isn't that useful.
    And, furthermore, you lose some efficiency, by denying people alternate routes to become competent developers.
    I wonder about that.
    Definitely, in the early years of a field, field-specific degrees aren't any advantage (and may not even be available), but as it matures, that stops being the case gradually. You see it in the history of every profession and every branch of engineering, and the random one-in-a-million geniuses who frankly could turn their minds to anything and do groundbreaking work regardless of circumstances tend to become the actual one-in-a-million exceptions to the rule.
    I don't think we're quite there yet for software, but you can just about see it from here.
    Like, I think this is a major problem even in medicine at the moment, in this country: There's only a handful of ways to become a doctor, and I'm not sure they select the best people. A great medical scientist, say, might do a better job than some less good doctors, in certain specialist roles - but they aren't allowed do them. Psychiatry, as another example, requires becoming a trained doctor first - but does this system really result in the best practising psychiatrists?
    I honestly couldn't say - and that to me, kindof proves the point of the people who set up that system :)
    I guess, ultimately, there is an information asymmetry between the provider of the service, and the person paying for the service. The provider knows how good they are, and the buyer doesn't.
    Titles are one way to mitigate this asymmetry; but they come at a cost. Maybe in future, a state wide, crowd sourced, review system would be better?
    So, ratemysolicitor.com rather than the Bar?
    Hmmm.
    Can't quite go with that idea myself to be honest. The whole point of minimum standards is that there's an accountability trail. If your solicitor is incompetent and you lose your house because they muck up the conveyancing or if you doctor is incompetent and you get sick as a result, you have legal remedies to pursue. With a crowdsourcing solution, you get a ranking system, but no accountability trail, you'd be right back to caveat emptor.
    Yes; and you've got to be overseen by an existing C.Eng. and you've got to pay money for CPD courses, and membership dues to the body, etc.
    Its a bit of a club...
    You're missing the international standards there. And I don't think "club" really covers it. Unless you consider undergrad degrees in the same way...
    Are the guarantees that titles give, in the end, really worth it?
    If something goes wrong, yes.
    If you die because someone stuffs up your tonsillectomy, your next of kin get the proceeds from the medical malpractice suit, which means they're cared for. That kind of thing is important, not just for individuals but for society in general because it drives up the level of medical care in the long term so that everyone benefits.
    And similar to the PhD system, too. (for better and worse)
    Well, sortof, yes, but for good reason. The modern C.Eng in Ireland would be analogous to what the original M.A.I. would have been in the 1800s, and the PhD system grew out of those roots.
    This sounds interesting - have you got an article or book that talks about this, and uses these examples? Sounds like theres an interesting essay in there - has it been written?
    It must have been, it's too juicy not to have been written up, but I can't think of a specific citation. The examples are unfortunate as all three characters are historically significant and notorious for their own reasons (the Tesla/Edison current wars and their fallout) which clouds the analogy.


  • Closed Accounts Posts: 40 ITguy2


    Another thing I don’t understand, is the training that a lot of Software Engineers received. For instance they seem to have BSc’s / BA’s etc. in everything from Computer Science, Information Technology, Software Engineering – and even some people with degrees in Engineering, Mathematics etc. can apply for a job with the description ‘Software Engineer’.

    To become an Electrical, Mechanical or Civil Engineer for instance you go through 4 full years of an engineering education in Electrical Engineering, Mechanical Engineering or Civil Engineering, and receive a BEng certified degree at the end of it. There doesn’t seem to be anywhere near the same amount of training to be an engineer in the software world.


  • Registered Users, Registered Users 2 Posts: 1,311 ✭✭✭Procasinator


    ITguy2 wrote: »
    Another thing I don’t understand, is the training that a lot of Software Engineers received. For instance they seem to have BSc’s / BA’s etc. in everything from Computer Science, Information Technology, Software Engineering – and even some people with degrees in Engineering, Mathematics etc. can apply for a job with the description ‘Software Engineer’.

    To become an Electrical, Mechanical or Civil Engineer for instance you go through 4 full years of an engineering education in Electrical Engineering, Mechanical Engineering or Civil Engineering, and receive a BEng certified degree at the end of it. There doesn’t seem to be anywhere near the same amount of training to be an engineer in the software world.

    It's very much a work in progress. There are some BEng courses in Ireland, but many will be BSc.

    SWEBOK is the IEEE attempt to define what software engineering entails. What are peoples thoughts on this document?


  • Closed Accounts Posts: 19,777 ✭✭✭✭The Corinthian


    ITguy2 wrote: »
    Is it the same as Computer Science/ programming, or is it a branch of Computer Engineering? Also, what's the difference between (a) a programmer, (b) a software developer and (c) a software engineer?
    Computer Science is an academic field. The only place someone's 'job title' is a computer scientist is a university or college.

    As to programmer, developer, engineer, these are largely interchangeable terms because the profession is not regulated in the same manner as law, medicine and the other fields of engineering. Indeed, I've often wondered if it strictly speaking is a field of engineering, as while related to electronic engineering, any overlap between the two generally ends in college.

    Calling yourself an engineer may borrow some gravitas from the professional title of engineer (in Italy people literally use the term ingegnere in the same way as they would use dottore or professore). It's also a term you'll find more with those who work with embedded systems and more low level languages, rather than the Web.

    Developer, perhaps, is a slightly looser term as I've come across people with absolutely no programming skills (they rely on templates and WYSIWYG's) using the term.

    As an addendum, architect and analyst are certainly different roles. Architects may design a software solution, but do not actually develop it. Analysis are more a bridge between the stakeholders, effectively acting as both translator and filter between them.

    Both generally start off as developers/programmers/engineers (and often continue coding, especially where resources are limited), with the more technical gravitating towards the architecture roll and the more social gravitating towards the analyst roll, given enough experience.


  • Closed Accounts Posts: 2,616 ✭✭✭8k2q1gfcz9s5d4


    Liam Byrne wrote: »
    Nowhere near the truth.

    A software engineer is the equivalent of an architect, while a programmer is the equivalent of the blocklayer.

    I would disagree, a business analysist is more of an architect. architects are not block layers, Not all business analysists are programmers, where as all software engineers are programmers.

    software engineer/programmer/software developer are all just titles in my opinion, they mean different things in different companies. I have a degree in "Software developemnt", a masters in "Software Engineering" and my job title where I work is "Programmer" :D


  • Closed Accounts Posts: 25 iDigian


    This particular discussion is almost impossible to pin down as there are so many parameters. My tupence worth would be that having a college education and an inadvertant title doesn't mean you know what you are doing given that 90% of college courses focus on the regurgitation of text books. I have seen doctors qualify who couldn't take blood, computer scientists who couldn't write an application which could actually be used by anyone. IMHO, titles mean absolutely nothing in any industry and the only real way to measure a person is by sitting down and asking the right questions however this is not always time compliant and hence titles must be used to whittle down potential candidates provided daddy isn't pulling the strings that is :)


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 3,301 ✭✭✭irishguy


    From quite a few of the responses its obvious some people havent a clue what they are talking about and dont work in a commercial environment. They are interchangeable terms there is no difference only a job title.


  • Closed Accounts Posts: 19,777 ✭✭✭✭The Corinthian


    irishguy wrote: »
    They are interchangeable terms there is no difference only a job title.
    I don't know if I would entirely agree with you. Certainly, I do think they are practically synonyms, however I have noticed over the years slight variations on how they are used.

    Engineer tends to be used more often by those in a role that involves more low-level or complex programming. It is also used to give the impression of the role belonging a profession - to give it more gravitas.

    Developer is a looser term because you can still 'develop' with a WYSIWYG or a CMS, so non-programmers will often use this term, especially with the Web. This is not to say that they won't use terms like engineer too, but last time I came across a Frontpage 'Engineer', I laughed.

    Programmer is the original, old-school, term. It's still used, but I feel it's gone somewhat out of fashion, in favour of the former two.


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    irishguy wrote: »
    From quite a few of the responses its obvious some people havent a clue what they are talking about and dont work in a commercial environment. They are interchangeable terms there is no difference only a job title.
    They're interchangeable by a lot of SMEs in the industry.
    However, SMEs in the industry do not determine the terminology used by the practitioners; the practitioners do, mainly through evolved convention both in practice and in training. That's how ever other branch of engineering (civil, mechanical, and so on) has worked for hundreds of years.

    For a good illustration, TC's statement that some of us call ourselves engineers "to give the impression of the role belonging a profession" is both wrong and right at the same time. I call myself an engineer because that's what I am - if a BAI from the oldest engineering school there is doesn't make you a "real" engineer, then a lot of people have a lot to think about. But that's a title awarded by practitioners. The job titles I've held in a few SMEs over the years haven't been "engineer", they've been things like "developer", "programmer", "programmer analyst", and so on - and those titles hold no meaning outside of the company that assigned them.

    To use a metaphor, your official title in the industry has scope - your current job title has scope in your current company, but your industrial title (engineer in this case) has a much wider scope and isn't permanently overridden by your current company's choice.

    However, if you look at the older, more established branches of engineering, their job titles tend to align to the ones used by the industry as a whole. We're just seeing the early days of this branch, so things haven't settled down that much yet.

    One of the more interesting questions though, is whether Computer Science and Computer Engineering are going to wind up merged in the end, or whether they'll keep seperate identities. Either's possible, and I have no idea which way it'll go.


  • Closed Accounts Posts: 577 ✭✭✭Galtee


    Developer is a looser term because you can still 'develop' with a WYSIWYG or a CMS, so non-programmers will often use this term, especially with the Web. This is not to say that they won't use terms like engineer too, but last time I came across a Frontpage 'Engineer', I laughed.

    I can't agree with this statement, 'programmer' is a term for someone who programs, ie is handed a spec. and in theory produces verbatim what is spec'd. A developer is a more rounded individual in terms of their position and in my experience is a term usually adopted in SMEs in particular as there is more of a practical hands on approach to development. A 'developer' will research, design, document, program, deal with customers etc. and altogether contribute more to the company than just a 'programmer' and that's not a derision of the term 'programmer', it just means they HAVE to do it as it's an SME thing. Anyone can use use WYSIWYG or a CMS (even programmers!), that's not development, that's known as 'Application Building' and it's a completely different discipline yet can be performed by almost anyone. Even Accountants!


  • Closed Accounts Posts: 19,777 ✭✭✭✭The Corinthian


    Any 'programmer' who does not research or document, is not very good at their job. Design is something that is left to a senior technical resource, an 'architect', and while an 'architect' is almost by definition also a 'programmer', the reverse is not true - a college graduate might be able to code, but I wouldn't put them in charge of designing a system. Where it comes to dealing with customers, that's what analysis (and project managers) do - that's their role.

    Certainly in SME's you're likely to have someone adopting multiple roles, but that does not mean that the roles are not actually separate. For example, in an SME, it'll probably be one of the programmers who will also manage the network too - but network administration is also separate role, and the only reason they're doing it is someone has to.

    As to the developer term, I merely gave my experience of how I've seen it used and I have seen it used more loosely. You can call using a WYSIWYG or CMS 'application building', but I've yet to see the job title of 'application builder' (might well exist, but it's certainly not commonplace). Such people tend to be referred to as 'developers', rather than 'programmers' or 'engineers' - or less commonly nowadays as 'webmasters'.


  • Closed Accounts Posts: 577 ✭✭✭Galtee


    Any 'programmer' who does not research or document, is not very good at their job. Design is something that is left to a senior technical resource, an 'architect', and while an 'architect' is almost by definition also a 'programmer', the reverse is not true - a college graduate might be able to code, but I wouldn't put them in charge of designing a system. Where it comes to dealing with customers, that's what analysis (and project managers) do - that's their role.

    Certainly in SME's you're likely to have someone adopting multiple roles, but that does not mean that the roles are not actually separate. For example, in an SME, it'll probably be one of the programmers who will also manage the network too - but network administration is also separate role, and the only reason they're doing it is someone has to.

    As to the developer term, I merely gave my experience of how I've seen it used and I have seen it used more loosely. You can call using a WYSIWYG or CMS 'application building', but I've yet to see the job title of 'application builder' (might well exist, but it's certainly not commonplace). Such people tend to be referred to as 'developers', rather than 'programmers' or 'engineers' - or less commonly nowadays as 'webmasters'.

    There is no direct relationship between programming and research & documentation. So to say someone is bad at their job because they do their job is nonsense. The research and documentation that you speak of is called a spec. and is in the strictest commerical sense handed to the programmer. If a programmer engages in research and documentation thus contributing to the spec they are developers. They are developing the software, not just programming it.
    You can call using a WYSIWYG or CMS 'application building', but I've yet to see the job title of 'application builder' (might well exist, but it's certainly not commonplace).

    I call using a WYSIWYG or CMS 'application building' because that's what it is. It doesn't matter whether or not you've seen/heard it as a title before, that's what it is.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 8,070 ✭✭✭Placebo


    Id like to see a programmer write a full software spec.

    programmer_lt_swdev_1.png


  • Closed Accounts Posts: 19,777 ✭✭✭✭The Corinthian


    Galtee wrote: »
    There is no direct relationship between programming and research & documentation.
    Programmers never document their code then? Or research how best to tackle a specific problem? Or research in general, for that matter?
    The research and documentation that you speak of is called a spec.
    Actually it's not what I was discussing. And if it was, why would it be a spec? Why not a requirements document?
    If a programmer engages in research and documentation thus contributing to the spec they are developers.
    No, they're engaging in two roles, that of the programmer and that of the analyst. You can call it developer if you like.

    The thing is that all of these roles overlap in practice, it's why it is so difficult to define the terms. Even where one can argue that they are supposed to do X, Y and Z according to the official computer science definition, the reality is such definitions have long been blurred or ignored in the commercial World.
    I call using a WYSIWYG or CMS 'application building' because that's what it is. It doesn't matter whether or not you've seen/heard it as a title before, that's what it is.
    Well, if you say so, I'm sure it must be so. What would you call someone who does 'application building' then?


  • Closed Accounts Posts: 577 ✭✭✭Galtee


    Programmers never document their code then? Or research how best to tackle a specific problem? Or research in general, for that matter?
    Are you referring to commenting code? Surely you wouldn't document code outside of the IDE? What's the point in that if it's written to spec?
    Actually it's not what I was discussing. And if it was, why would it be a spec? Why not a requirements document?
    Because it's a Spec. which has been laid down based on a list of requirements.
    No, they're engaging in two roles, that of the programmer and that of the analyst. You can call it developer if you like.
    So what are they then? A programmer or an Analyst?

    The thing is that all of these roles overlap in practice, it's why it is so difficult to define the terms. Even where one can argue that they are supposed to do X, Y and Z according to the official computer science definition, the reality is such definitions have long been blurred or ignored in the commercial World.
    Well, if you say so, I'm sure it must be so. What would you call someone who does 'application building' then?
    A moderator.


  • Closed Accounts Posts: 19,777 ✭✭✭✭The Corinthian


    Galtee wrote: »
    Are you referring to commenting code? Surely you wouldn't document code outside of the IDE? What's the point in that if it's written to spec?
    So coders (using this term, to avoid any arguments) need not document how their code works for anyone who may take over their work, beyond in-source commenting?
    Because it's a Spec. which has been laid down based on a list of requirements.
    I was wondering why you focused on that rather than the requirements document. Not really important.
    So what are they then? A programmer or an Analyst?
    Effectively both. The term programmer-analyst also exists, but in practice the industry has increasingly separated the two roles, making each more specialized.

    A software project requires multiple skill-sets and roles, and as they have become more complex and demand for greater specialization has increased, these roles have slowly separated into different jobs. A 'webmaster' used to be a similar hybrid of roles fifteen years ago, but as the Web became sophisticated, those roles separated and people began to specialise in each of them.

    As to how the terms developer, programmer or engineer are used, I have simply given my opinion based on how they are used in practice in the commercial World. They've become effectively synonyms, but with slight differences (as observed by myself and others). And no doubt in the future they will evolve even further.
    A moderator.
    Actually moderators don't 'build' systems, they operate them. I moderate a few forums here and I can tell you that I never had to 'build' any of them, with or without a WYSIWYG or CMS, I only moderate the content using the pre-built system. Hint: it's in the name.


  • Moderators, Society & Culture Moderators Posts: 9,689 Mod ✭✭✭✭stevenmu


    This all seems pretty straightforward, so lets add consultants to the mix as well

    :pac:


  • Advertisement
  • Closed Accounts Posts: 577 ✭✭✭Galtee


    So coders (using this term, to avoid any arguments) need not document how their code works for anyone who may take over their work, beyond in-source commenting?

    I was wondering why you focused on that rather than the requirements document. Not really important.

    Effectively both. The term programmer-analyst also exists, but in practice the industry has increasingly separated the two roles, making each more specialized.

    A software project requires multiple skill-sets and roles, and as they have become more complex and demand for greater specialization has increased, these roles have slowly separated into different jobs. A 'webmaster' used to be a similar hybrid of roles fifteen years ago, but as the Web became sophisticated, those roles separated and people began to specialise in each of them.

    As to how the terms developer, programmer or engineer are used, I have simply given my opinion based on how they are used in practice in the commercial World. They've become effectively synonyms, but with slight differences (as observed by myself and others). And no doubt in the future they will evolve even further.

    Actually moderators don't 'build' systems, they operate them. I moderate a few forums here and I can tell you that I never had to 'build' any of them, with or without a WYSIWYG or CMS, I only moderate the content using the pre-built system. Hint: it's in the name.

    Wow, you are either A) Deliberately completely ignoring the point to keep this conversation going cause it's a slow news week and nothing happening in the Dev forum or B) Have no clue what an actual spec is without googling the term.
    Actually moderators don't 'build' systems, they operate them. I moderate a few forums here and I can tell you that I never had to 'build' any of them, with or without a WYSIWYG or CMS, I only moderate the content using the pre-built system. Hint: it's in the name.
    So why aren't you called operators then?


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    Galtee wrote: »
    So why aren't you called operators then?
    Because our role is primarily social as well as technical.
    For example, telling two posters to take a deep breath and to refocus on the post rather than the poster...


  • Registered Users, Registered Users 2 Posts: 1,311 ✭✭✭Procasinator


    Galtee wrote: »
    So why aren't you called operators then?

    In any context I've heard operator in IT it has been quite technical. Such as a NOC operator or even just a computer operator (who would be part of an operations team to keep infrastructure maintained and running).

    I would believe an operator would be closer to a system administrator then someone who enforces client rules.

    I think I get what you are trying to say about "Application Building", but the line where someone is a developer or an application builder is not clear. At what level of abstraction is someone not developing any more?


  • Closed Accounts Posts: 577 ✭✭✭Galtee


    Sparks wrote: »
    Because our role is primarily social as well as technical.
    For example, telling two posters to take a deep breath and to refocus on the post rather than the poster...

    With the utmost respect I do agree with your sentiment. I have now taken a deep breath, thanks.

    Also, having a quote button available means that you provide the facility to focus on a poster AND the post, ie what it is they have posted regarding the 'post'. I have taken another deep breath :) I am refocused.


  • Closed Accounts Posts: 577 ✭✭✭Galtee


    In any context I've heard operator in IT it has been quite technical. Such as a NOC operator or even just a computer operator (who would be part of an operations team to keep infrastructure maintained and running).

    I would believe an operator would be closer to a system administrator then someone who enforces client rules.

    I think I get what you are trying to say about "Application Building", but the line where someone is a developer or an application builder is not clear. At what level of abstraction is someone not developing any more?

    I see,
    Firstly, if you can switch on a computer and type your name you are strictly a computer operator as you are operating a computer.

    Secondly, a programmer can also 'build applications' it doesn't make him an application builder. The term software developer focuses on the Software Development Lifecycle which consists of (I'll do it in todays terms) Business Analysis, Architecture, Design, Technical Architecture => Spec, Programming, Testing, Documentation, Support) BTW this makes no provisions for iterative visits to each stage or lunches with potential clients etc. :)

    In terms of title a programmer will program but a Software Developer could have a hand in all of the above stages. It relates directly to the development lifecycle. I find it very hard to believe that some people (in the trade) think it's relating 'application building'.
    Bizarre.


  • Closed Accounts Posts: 19,777 ✭✭✭✭The Corinthian


    Galtee wrote: »
    Wow, you are either A) Deliberately completely ignoring the point to keep this conversation going cause it's a slow news week and nothing happening in the Dev forum or B) Have no clue what an actual spec is without googling the term.
    1. I've not ignored the point, I've simply disagreed with what you are saying and have given my reasons for doing so.
    2. Much of what I do for a living involves writing specs, so you'll forgive me if I consider your comment asinine.
    So why aren't you called operators then?
    Because our primary job is to moderate posts. I'm sure you could call us operators, but it wouldn't really describe our primary job. If you called us Whinge Filters, that would probably be more accurate.

    For this we use a Web interface, but we didn't 'build' boards with any CMS or WYSIWYG; that is left to someone employed by Boards.ie Ltd and is a very different role. For a start, they get paid. They're also not 'customer' facing.

    Those who specialize in producing Wordpress or similar sites will be what you refer to as 'application builders' - the thing is though, they typically go by the term 'developer', because they are effectively 'developing' the site (just using more abstract tools than a coder would). This is why I said that the meaning of this term is, or has become, looser than 'engineer' or 'programmer'.


  • Registered Users, Registered Users 2 Posts: 1,311 ✭✭✭Procasinator


    Galtee wrote: »
    I see,
    Firstly, if you can switch on a computer and type your name you are strictly a computer operator as you are operating a computer.

    If I jumped in a forklift and did some donuts I'd be a forklift operator, but not in the job title sense.
    Galtee wrote: »
    Secondly, a programmer can also 'build applications' it doesn't make him an application builder. The term software developer focuses on the Software Development Lifecycle which consists of (I'll do it in todays terms) Business Analysis, Architecture, Design, Technical Architecture => Spec, Programming, Testing, Documentation, Support) BTW this makes no provisions for iterative visits to each stage or lunches with potential clients etc. :)

    In terms of title a programmer will program but a Software Developer could have a hand in all of the above stages. It relates directly to the development lifecycle. I find it very hard to believe that some people (in the trade) think it's relating 'application building'.
    Bizarre.

    Does a software developer need to be involved in all them processes? Say if someone is commissioned to design and develop a website. They do requirements gathering, business analysis, research. During which, they find an off-the shelf product (such as a CMS) matches all the client's requirements and so no additional "programming" is required. So they describe the architecture of this product, install it and support it.

    Are they an application builder or a software developer?

    Does a software developer only exists in some software development lifecycles?

    If someone is doing Agile development, and as such relies on regular feedback and testing in combination with developing. The process that turns the requirement list to a specification document might not exist? Are these people programmers or software developers?


  • Closed Accounts Posts: 577 ✭✭✭Galtee


    1. I've not ignored the point, I've simply disagreed with what you are saying and have given my reasons for doing so.
    2. Much of what I do for a living involves writing specs, so you'll forgive me if I consider your comment asinine.
    Because our primary job is to moderate posts. I'm sure you could call us operators, but it wouldn't really describe our primary job. If you called us Whinge Filters, that would probably be more accurate.

    For this we use a Web interface, but we didn't 'build' boards with any CMS or WYSIWYG; that is left to someone employed by Boards.ie Ltd and is a very different role. For a start, they get paid. They're also not 'customer' facing.

    Those who specialize in producing Wordpress or similar sites will be what you refer to as 'application builders' - the thing is though, they typically go by the term 'developer', because they are effectively 'developing' the site (just using more abstract tools than a coder would). This is why I said that the meaning of this term is, or has become, looser than 'engineer' or 'programmer'.

    You didn't provide adequate reasons for disagreeing and your original comment implied that developers don't know how to program whereas programming is an intricate part of developing. Developers are programmers first, then everything else that goes with it.


  • Closed Accounts Posts: 577 ✭✭✭Galtee


    If I jumped in a forklift and did some donuts I'd be a forklift operator, but not in the job title sense.

    If you can operate something then you are an operator of that something. A computer operator is a general term for someone who can operate a computer but this could mean anything.
    If someone is doing Agile development, and as such relies on regular feedback and testing in combination with developing. The process that turns the requirement list to a specification document might not exist? Are these people programmers or software developers?

    Agile what? Programming?


  • Registered Users, Registered Users 2 Posts: 1,311 ✭✭✭Procasinator


    Galtee wrote: »
    You didn't provide adequate reasons for disagreeing and your original comment implied that developers don't know how to program whereas programming is an intricate part of developing. Developers are programmers first, then everything else that goes with it.

    So, your definition of a developer is a programmer plus one or more responsibilities within a software development lifecycle? If they don't have one or more responsibilities, they are just a programmer.

    Also, you are implying if the implementation phase of a software development lifecycle does not involve writing actual code, it's no longer a software development and those involved are application builders?

    If so, I disagree with these assertions. A label/title gives you a general idea of what someone does, it is not a well-defined universal formula that tells you exactly what they do.


  • Advertisement
Advertisement