It's fairly well known who the first programmer was but who was or were the first software engineer(s)? By software engineer I mean someone who uses formalized specifications and methods to deliver software not just a batch programming job. When was the term first used?
History of Software Engineering – Who Was the First Software Engineer?
historyterminology
Related Solutions
Yes this is just a term that is thrown around by management types but if you strip away the management language what he's saying is that he wants a department that is seen as using and embodying industry best practices in a way that others aspire to and is doing so to deliver great solutions people like.
(This last bit is important - if you're not actually delivering it doesn't matter how great everything else is and your manager won't be around long).
The complexity comes in two main ways:
1) Does he want this because he understands that it's the right way to develop software and that this is how you produce great products, or does he want it because he wants to be able to brag about it?
2) Will he accept the up front cost (time, money, credibility and risk) that comes with implementing best practice? It's fine to say "let's go agile" but he's laying his reputation on the line that it will improve things and is going to have to spend a lot of time selling it into the organisation. Almost always the benefits are long term, the costs are short term and that's the tough bit. Ultimately is he really serious about it?
In terms of what would it look like, well, that depends what you're doing but you need to be thinking in terms of what your development and project management processes are, what tools you're using, what kit people have and so on. The Joel Test is always a good place to start and in particular I'd want to see a really solid version control process, really good bug tracking and really good build processes.
I'd also look at whether agile methodologies are right for you (SCRUM in particular), to what extent automated testing could help (without starting a religious war there are differing beliefs about the point at which the complexity of the tests outweighs the benefits they provide) whether you've got the necessary tools and kit to do the job. Generally I'd suggest that you want tools to be on the leading but not bleeding edge. It's worth stressing that this isn't about having toys, it's about giving everyone in the team the tools to be as productive as possible for as much of the working day as possible. The most obvious example is bad PCs - is it really excellent to pay developers to watch a cursor while their project takes 5 minutes to build when they build it half a dozen times a day?
A few other things that are probably going to be visible in a centre of excellence: I'd suggest a software centre of excellence has likely got a pretty good training programme - maybe not formal courses but certainly book budgets, study time, mentoring and the like.
And I'd suggest that it's probably also doing a small amount (at least) of R&D. By that I don't mean completely blue sky stuff, but giving the developers room to try new things out and evaluate new tools and languages without the continual pressure of delivery to the client. That's how you move forward and stay good next year, the year after and so on.
How can you measure it? Ah, the age old question. Ultimately measuring software development is hard, if not impossible and measuring excellence in software development is similarly hard.
The only thing I can really suggest that I think would be useful that is widely adopted by a lot of companies is customer and staff satisfaction. It's an indirect measurement but my take would be that if you're not excellent, it's unlikely that you'd be getting really great levels of customer satisfaction and really great levels of staff satisfaction.
There's a book in Russian, German Noskin, First computers (literally board digital computing machines) for space applications (Герман Носкин, Первые БЦВМ космического применения), ISBN 978-5-91918-093-7.
The author himself participated in many early projects (mostly in hardware) and according to him analog hardware was in favor for a long time, he mentions that space rendezvous tasks didn't use digital computers until the late 70's. Due to this policy many digital computers were really proofs of concept although used in other areas of soviet economics. The first computer according to him used on-board was the Argon-11S (Аргон-11С) on the unmanned missions to the Moon closer to Apollo-8 in time. Also Noskin briefly says that the on-board computer Salut-4 was compatible with general-purpose computers ES used in Soviet economics so it was possible to develop software in PL-1 and Fortran.
There are several mentions of Buran program languages on Russian websites. According to Vladimir Parondjanov, an engineer from the program (Russian Post) three languages using Russian as a base were developed: PROL2 (ПРОЛ2) for onboard programs, Dipol (Диполь) for earth tests, and Laks (Лакс) for modelling. All of them were intended for use not only by professional programmers but also engineers from other areas.
When the Buran program was closed they were merged into a new language Drakon (Дракон, Russian word for "Dragon") that is claimed to be be a "graphical" language having 2-dimensional descriptions of the programs and using arbitrary well-known languages for code generation. This language was also intended for use by non-programmers. The language probably does not have and international community and isn't even well-known within Russia although heavily promoted by its author, Vladimir Parondjanov (the Russian Wikipedia article article is very long and was even deleted once for not following Wikipedia rules). Drakon was first used for programming for the Sea Launch missions and has been used in other Russian space programs since.
Best Answer
The first discussions of software engineering began in the mid-1950s, which places it around the same time as the SHARE user group previously mentioned in a now-deleted answer.
The widely accepted beginning to software engineering as a profession was at the NATO Science Committee conference in 1968 in Garmisch, Germany. The conference report (PDF) is often considered to be the very first definition of software engineering. A second conference, held in 1969 in Rome, Italy, was also sponsored by the NATO Science Committee and continued the work of the first (conference report PDF). You could define the attendees of this conference as the first software engineers.
However, there is some evidence that the first person to coin the term "software engineering" was Margaret Hamilton. She started to use the term at MIT during the early days of creating software for the Apollo missions.
Some of the earliest contributors to software engineering include:
Searching for "father of software engineering" tends to turn up many different names, since there were many people doing both academic research, analysis of software projects, and applied software engineering work at universities and companies around the world. However, David Parnas (professionalism/ethics), Fred Brooks (software project management), Barry Boehm (metrics and cost), and Victor Basili (empirical software engineering) tend to come up pretty frequently in their respective fields.
Something else to consider is that software engineering is a team activity. Many of the people that I named above were leaders of teams or organizations, their work was supported by any number of people "in the trenches" who might never get credit for being a part of a project or research effort that today is viewed as the beginning of software engineering.