search
Beatifuldating s Dartmouth z Www = Dartmouth ]dsearchcsearchti Dartmouth nsearch/ Beatifuldating izsearch]g ~NHmw
People from many different educational backgrounds make important contributions to SE. The fraction of practitioners who earn computer science or software engineering degrees has been slowly rising. Today, about 1/2 of all software engineers earn computer science or software engineering degrees. For comparison, about 3/4 of all traditional engineers earn engineering degrees.
O%p?n%C[
DQ#S(x)m2Pjz
[size=3]Software degrees [/size]9N6A/~/jEp#rb]
About half of all practitioners today have computer science degrees, which are the most relevant degrees that are widely available. A small, but growing, number of practitioners have software engineering degrees. As of 2004, in the U.S., about 2,000 universities offer computer science degrees and about 50 universities offer software engineering degrees. Most SE practitioners will earn computer science degrees for decades to come, though someday this may change. BAD}vw_DM
[size=3]Domain degrees [/size]h4E"M2IZ m%t9Kr!t?
Some practitioners have degrees in application domains, bringing important domain knowledge and experience to projects. In MIS, some practitioners have business degrees. In embedded systems, some practitioners have electrical or computer engineering degrees, because embedded software often requires a detailed understanding of hardware. In medical software, some practitioners have medical informatics, general medical, or biology degrees. 5uut:~ x!i E-y^
[size=3]Other degrees [/size]
!d0kFUT6S3P
Some practitioners have mathematics, science, engineering, or other technical degrees. Some have philosophy, or other non-technical degrees. And, some have no degrees. Note that Barry Boehm earned degrees in mathematics and Edsger Dijkstra earned degrees in physics.
2r"Q]mP:l*t]
[edit]X%Eas_3S.~
[size=3]Graduate[/size]
Z'd~!zH^3FyY-p"m&Dv
Graduate computer science degrees have been available from hundreds of universities for several decades.ey)[g&E |_'hi6Z5k
R-l;`}skm4z
Graduate software engineering degrees have been available from dozens of universities for a decade or so.
"S i9SXq(u+R)M
,nY'?;L[}n9e
[edit]
T%Jm9f[{}F
[size=3]Undergraduate[/size]b
w}m5U
Undergraduate computer science degrees are available from most universities.5W#mU"k'izu6J$k
3}uN5L:k w/Q
In 1996, Rochester Institute of Technology established the first BSSE degree program in the United States but was beaten to ABET accreditation by Milwaukee School of Engineering. Both programs received ABET accreditation in 2003. Since then, software engineering undergraduate degrees have been established at many universities. A standard international curriculum for undergraduate software engineering degrees was recently defined by the CCSE.
k+SB-V:F)lU
V{}3xf2vO0sG9_
[size=3]Secondary[/size]2nW e D{}w5J
[edit]4o-slGC,h6txp
[size=3]Employers[/size]
1[5s gN&RD:@!b7U
Most software engineers work as employees or contractors. Software engineers work with businesses, government agencies (civilian or military), and non-profit organizations. Some software engineers work for themselves as free agents.
\]jWvNi
,eTW(f]~&V
[edit]
1ZUh2b_C
[size=3]Certification[/size]
t;[XQU6H,I
Certification is a contentious issue. Some see it as a tool to improve professional practice. Others point out that very few traditional engineers bother with any form of certification.kPH7w4xj^mX-So
V8~mD
B2t6KO
The most successful certification programs are oriented toward specific technologies, and are managed by the vendors of these technologies. These certification programs are tailored to the institutions that would employ people who use these technologies.
5\*Mz] mwvi
8F3h#l l4BSK
General certification of software practitioners has struggled. The ACM had a professional certification program in the early 1980s, which was discontinued due to lack of interest. Today, the IEEE is certifying software professionals, but only about 500 people have passed the exam by March 2005.
3Y%KY}!t\?
g#G;X)KP:g)l
See Certification (software engineering)
!^0v0jG2U{}-r-g"k#m
[size=3]Science [/size]
+v0g0Y:v-|8m:S|
Programs have many scientific properties that can be measured. For example, the performance and scalability of programs under various workloads can be measured. The effectiveness of caches, bigger processors, faster networks, newer databases are scientific issues. Mathematical equations can sometimes be deduced from the measurements. Scientific approaches work best for system-wide analysis, but often are meaningless when comparing different small fragments of code. a0P]{}de#P
I
The act of writing software requires that developers summon the energy to find the answers they need while they are at the keyboard. Creating software is a performance that resembles what athletes do on the field, and actors and musicians do on stage. Some argue that SEs need inspiration to spark the creation of code. Sometimes a creative spark is needed to create the architecture or develop a piece of code. Others argue that discipline is the key attribute. Pair programming emphasizes this point of view. Both Kent Beck and Watts Humphrey have argued this emphasis.
V6C#d8Dw
n5YI
[edit]
e!x{}Q(l)x4@5Ij
Programming emphasizes writing code, independent of projects and customers. Software engineering emphasizes writing code in the context of projects and customers by making plans and delivering applications. As a branch of programming, SE would probably have no significant licensing or professionalism issues.
:iu(L"n [z^Kw,NN'}
[size=3]Branch of computer science [/size]8B^,]a L'T9~
Many believe that software engineering is a part of computer science, because of their close historical connections and their relationship to mathematics. They advocate keeping SE a part of computer science. Both computer science and software engineering care about programs. Computer science emphasizes the theoretical, eternal truths while software engineering emphasizes practical, everyday usefulness. Some argue that computer science is to software engineering as physics and chemistry are to traditional engineering. As a branch of computer science, SE would probably have few licensing or professionalism concerns.
O
[3Iz-RR
[size=3]Branch of engineering [/size]5yL[\ls
Others advocate making SE a part of traditional engineering. This is especially true for people who want to emulate other elements of engineering, such as licensing. Both engineering and software engineering share many project management problems and solutions. But, they apply different technologies, they use different kinds of processes, and are driven by different economics. As a branch of engineering, SE would probably adopt the engineering model of licensing and professionalism.
E]:N8c)HpfE)c
[size=3]Freestanding field [/size]
YW
i(H'Lb[
Recently, software engineering has been finding its own identity and emerging as an important freestanding field. Practitioners are slowly realizing that they form a huge community in their own right. Software engineering may need to create a form of regulation/licensing appropriate to its own circumstances. It is arguable that licensing (in the United States) is inappropriate because the creation of software represents a form of writing, and requiring people to be licensed in order to write computer programs may be a violation of the First Amendment. Requiring software engineers to be licensed would make persons who create software without a license into criminals, even if they give their software away, same as practicing medicine or law without a license, even for free, is a criminal offense. It could also be argued the requirement of licensing of programmers could be "prostituted" into an orthodoxy where those who create software in ways or using methods which are not approved by the licensing authorities may be subject to sanctions up to and including loss of license. Thus the licensing authorities could conceivably hold people to whatever "flavor of the month" of software engineering standards are considered a good idea at that time, under threat of loss of livelihood.
,}u_ Wq2l FBj6[
The U.S. Bureau of Labor Statistics treats Computer software engineers as a freestanding field. The general category of "engineers" includes computer hardware engineers, but not computer software engineers
s2P.u0mxx
R @pe
?
See also Comparing software engineering and related fields.
/c&~|bj!b \P
&G)TeOq#k7@
[edit]g)]@!vQ]%s dd
[size=3]History[/size]q5k*m'k^