0001.i Careers and habits of mind
Students who are thinking about computing as a career need a better picture than "someone who codes," and this section gives you one by narrowing in steps. It starts with the industries where computing work happens, moves to the specific roles people hold, then to the habits and tools that those roles share, and ends with how people get there. Keeping those steps apart also helps with advising, because a student's interest may lie at any one of them.
Where the work happens#
Computing runs through agriculture (sensors for irrigation), health care, finance, the arts (where it can be a creative medium), journalism (data investigations, in which computing extends what reporters can find in large records while they remain essential), and government. This breadth has a teaching use, since students can connect it to fields they already care about, and a student who loves farming or music doesn't have to give that up to study computer science.
Some fields go further and combine computing with another discipline. Bioinformatics applies computing to biological data, computational social science to social questions such as how people interact, and digital humanities to texts and culture. In each, computing extends scale, enabling analysis that would be impractical by hand, but it doesn't replace theory or critical thinking from the home discipline.
Other industries are shaped by their history, which creates an opportunity that students rarely hear about. Legacy systems are older systems still in critical use. Banking, insurance, and government rely on languages such as COBOL, because replacing stable systems is costly and risky, which creates demand for people who can read and maintain them, a skill few newer programmers have.
What people do#
Within those industries, a set of roles recurs. Software developers build applications, often from stated requirements. Data analysts draw conclusions from data. Network administrators maintain connectivity. Security analysts monitor and respond to threats, and system administrators restore and maintain systems, so after an incident an analyst might review the logs while an administrator brings service back.
Software development itself divides by where the code runs. Front-end developers build what users see and interact with, using HTML, CSS, and JavaScript. Back-end developers build server-side logic and manage databases and APIs.1 Full-stack developers do both.
Not every role centers on code. User experience (UX) designers research users' needs, create prototypes, and test interfaces. For instance, they might watch people use a screen to learn what confuses them, and they use low-cost prototypes so that problems are found before they're costly to change. The role relies more on research and design than on production code, which makes it a good fit for a student who is more interested in how people behave than in writing programs.
What the roles share#
Across these roles, certain ways of working matter as much as technical knowledge. Computing careers call for several habits of mind: persistence in debugging, tolerance of ambiguity (requirements are often unclear, so professionals ask questions and adapt), attention to detail, continual learning (because tools and practices change throughout a career), and clear communication with teammates and clients, since software is typically built in teams.2 These habits can be built in a classroom, for instance whenever a student explains their debugging process to a partner.
Some habits apply more specifically to working in a team. New professionals learn the tools and workflows their team uses, such as its IDE (integrated development environment, the program in which code is written), version control (see 0002.p), and code review, since shared practice matters more than personal preference. Having a favorite editor is fine, but a team's shared tools and review are how it maintains shared quality. Having student groups use branches and pull requests on a project gives them a taste of this.
How people get there#
There are many ways into this work, and students benefit from hearing about all of them, ideally from people who took them. People enter computing through college degrees, community college, certifications, apprenticeships, and self-directed portfolios. Internships are a common bridge to employment, offering experience and connections, and portfolios of working projects show what someone can do, whichever route they took. A candidate without a degree might pair a certificate program with such a portfolio. Knowing these routes lets you talk honestly with students about where computing might take them. Section 0002 turns to the thinking and programming that much of this work is built on.
- legacy system: an older system still in critical use
- software developer: someone who builds applications
- data analyst: someone who draws conclusions from data
- network administrator: someone who maintains connectivity
- security analyst: someone who monitors and responds to threats
- system administrator: someone who restores and maintains systems
- front-end developer: someone who builds what users see and interact with, using HTML, CSS, and JavaScript
- back-end developer: someone who builds server-side logic and manages databases and APIs
- full-stack developer: someone who works on both the front end and the back end
- user experience (UX) designer: someone who researches users' needs, creates prototypes, and tests interfaces
- bioinformatics: computing applied to biological data
- computational social science: computing applied to social questions
- digital humanities: computing applied to texts and culture
Practice: practice questions for 0001.i
-
MWC2, Riddle Server: views, models, fields, subclasses, and an API specification. ↩
-
MWC1, Turtle: first programs, sequence, errors and bugs. ↩