The 21st Century is the age of nerds. It might be an overplayed think-piece trope, but smart people are a huge part of popular culture—no longer stuffy personalities stuck in an ivory tower. This phenomenon is happening concurrently with the infiltration of data, analytics, and technology in life, as well as the code that underpins it. Film heroes reflect this change—John McClane is no more, and Iron Man reigns supreme. If the 2004 superhero film The Incredibles were made today, perhaps the physically powerless yet tech-savvy antagonist, Syndrome, would be the winner in the fight against the physically superhuman Parr family. Along with the proliferation of coding in popular culture, coding is evolving as an important skill in the job market and life in general.
Coding in schools
http://www.itpro.co.uk/strategy/25295/teach-kids-more-than-just-how-to-code-says-mozilla
The United Kingdom government embraced coding in 2014, where it was introduced into the primary school national curriculum, backed by sizeable donations from Google and Microsoft.
‘We need an education system which [...] can use technology creatively to advance learning and which is structured flexibly to adapt to change,’ then Education secretary Michael Gove said. “Children will learn [...] from 11 [...] to design, use, and evaluate computational abstractions that model the state and behaviour of real-world problems and physical systems.’
If successful—and year end reports are positive about the addition—coding could become a powerful form of self-expression and learning for a generation of Brits; however, according to CBC, Canada might lag behind the U.K. because it was not aggressive enough in pushing coding amongst students.
Still, several provincial initiatives showed that Canada is expanding programs to educate youth in coding. Founded in Montreal, Kids Code Jeunesse is a national not-for-profit program empowering educators and parents to teach kids to read, write, and create codes. Volunteers from McGill and Concordia’s computer science programs have taught many young students to code.
While Canada does not have a provincial or territorial curriculum for programming yet, this initiative raises awareness on the importance of coding in elementary school. Perhaps Canada will follow suit and introduce coding into the provincial and territorial elementary school curriculums. If so, it may follow in the footsteps of initiatives like New York Mayor Bill De Blasio’s 10-year deadline to introduce computer science into every classroom.
But what about those who did not have the luxury of taking coding in elementary or high school in Canada? Job prospects increasingly rely and expand largely upon one’s ability to integrate skills in digital communications, and coding is an asset to anyone’s CV.
Online bootcamps, independent courses, and university introductory courses offer a chance for students with no coding experience to catch up on these integral skills. HackerYou, an organization based in Toronto, offers full-time and part-time courses in coding in downtown Toronto. Intensive coding bootcamps are also available, like Decode MTL, located in La Commune in Montreal’s Old Port.Online coding tutorials also exist—New York-based Codeacademy is a web-based interactive platform that provides coding courses for individuals to access anywhere, anytime.
For students who want to learn coding and get university credits for it, McGill’s School of Computer Science also offers a popular course in the matter. Foundations of Programming, COMP 202, introduces computer programming to students with little or no background in the subject.
“[Comp 202] gave me an introduction to the foundations of one of the most important skills a person in our generation can know,” Angad Singh, U2 Urban Systems, said.
Hack McGill is a university collective that brings students together to learn about coding and develop more skills. They host events like HACK101, which are tutorials where student coders teach other students how to create codes. The group will also host McHacks, a 24-hour hackathon where coders come together to program, later this semester.
“You are in a room full of people with the same basic goal,” Lucas Stinchcombe, U2 Computer Science and a previous hackathon participant, explained. “They are all driven to make something. And when you have a good team of people who are able to collaborate with each other [...] there is a lot of give and take between the people in the group [...] striving for the best product […] that’s when we can get the best thing out.”
With the growing tech scene and platforms available, more people will learn to code; however, as coding grows in popularity and is used for increasingly varied and complex purposes, they will have to grapple with certain tensions and issues that come with it—like balancing the collaborative and personal aspects of coding.
Coding in a personal and public arena
http://www.returnofkings.com/53859/so-do-you-want-to-learn-how-to-code
Programmers recently pushed the idea of coding as an art akin to writing. There are code poetry competitions where winners submit the most elegant code; however, Zain Virani, U2 Computer Science, said that while coding can be a labour of love, it’s also tedious and oftentimes mind-numbing. It is important for coders to embrace the struggles and challenges, like they would for any other task or challenge.
“A lot of the work I’ve done over the past three years [was] for school, but there are definitely some opportunities for me to work on projects for my own pleasure, and it’s projects like those that really allow programmers to show their passion for their work,” said Virani. “The key [to coding], like in most fields, is to realize that what might be tedious [...] now is very important for future endeavours which you will be more passionate about.”
Still, new coders do not have to reinvent the wheel each time they use coding language to build a website. It’s okay to borrow ideas from other coders’ work as long as credit is given where credit is due. According to Virani, it’s even helpful to use someone else’s code as a guide.
“For the most part during your undergrad you’re going to end up looking at other people’s code for ideas and help,” Virani said. “If the [professor] says you can collaborate, then feel free, but most of the time they don’t [....] instead of copying and pasting [someone else’s] code, you should extract ideas and basic algorithms to implement yourself in your own work [...] In the case of professional work, you can copy other people’s code as long as you cite them, and there are no open patents or copyrights on their work.”
Coders and programmers can expect to work collaboratively, and there are tried and tested methods to aid this process. U2 Computer Science student Othniel Cundangan is a student in COMP 361, Software Engineering Project, where he’s learning techniques for effective collaboration.
“The idea is to break the tasks down,” Cundangan said. “If I am making a game [we will delegate the work]. We divide the work into sprints, which can range from four days to 20 days, and then you will come back and reallocate resources [to the different sprints] where necessary.”
Coders will often develop a personal trademark style of coding. Two coders may approach a coding problem—like encryption—in different, yet equally effective ways. The individual coder will benefit from developing a successful style, and must also be willing to learn from others, while taking responsibility for their own programming. Coders often seek to create ‘the perfect code,’ which raises some questions.
According to Othniel, while a perfect code may work for one situation, the code’s pattern may not be the same for another problem that the coder encounters.
“You want to code efficiently, so that the programs will run fast on the [central processing unit],” he said. “[Sometimes] to achieve that you will have to do some really weird things with code that [...] make it hard for someone else or for developers to keep up [and interact and improve the program], even though it is efficient for the [central processing unit]. You have to find a balance.”
Coders have to work individually and as part of a team. Therefore, a big concern is who ultimately benefits from their projects.
Who should you code for?
Donna Tam/CNET
Many vested interests in coding tend to centre around data privacy. Google and Microsoft may have played a part in establishing the British curriculum, but these companies have vested economic interests and philosophies that may not align with every person, let alone every coder. Google mines personal data to improve its search engines. Companies like Facebook have access to masses of personal information. These same companies are driving forward coding in a significant fashion.
“Hacker culture came from just people wanting to collaborate with each other, and lately there is a corporate interest in hacker culture,” said Stinchcombe. “In some ways it’s a good thing, there are more resources available to these young kids who want to learn. But at the same time, you also have to have the freedom to decide not to participate in the corporate life, and take those experiences and do something on your own. It’s up to you, but the freedom should be there.”
Learning to code will benefit students, yet it will also benefit big companies like Facebook, as well as governments—they will be able to choose from a bigger pool of coders who can optimize their products. Coders do have a choice of who they work for and should exercise that considering that an individual coder’s vision of the world might be markedly different to that of a Facebook employee. At some point, coders must question their own vision of the world and how they expect to employ their skills. Indeed, the Globe and Mail reported that a Canadian high school teacher turned down the chance to work for Google in order to pursue his passion to teach coding instead.
While working for big companies may be rewarding, there are always personal considerations.
“[You want companies to give] you an offer you can’t refuse, money-wise, or offering you an internship, a job position, or the opportunity to continue work on your project,” Stinchcombesaid. “It’s more of a mutual thing because you want what [companies] are offering. Its also the seduction of material things. You want it, but now your project [might be] out of your hands. I think it is up to the person [doing] the project [to] decide.”
Programmers serve a multitude of industries and platforms. There are a number of places that need code. It is important that coders recognize that they can develop skills and work for companies or initiatives that align with their values. A number of companies need programmers’ help—for example, /The Globe and Mail/ reported a worrying number of cyber security breaches in Canada in 2014. Coders have a choice, and should exercise it diligently.
Academic exercise, or real world implications?
The winning team. From left to right: Harold Day, Dan Greencorn, Andrew Doyle, and Mike Hoffman. (Clare Lyle / McGill Tribune)
As a coder or programmer, you are trying to solve specific computing problems. Coding is obviously very conceptual, and has a diverse range of applications. It is impossible to have an one-size-fits-all view of coding, or programming. The way an enthusiast coder approaches his work will be very different from a professional coder.
“[What mindset lends itself to better coding] would depend on the context in which coding is done and the definition of "better”, said Martin Robillard, associate professor at McGill’s School of Computer Science. “There would be a different answer for a university assignment, an ACM Programming Competition, a hackathon, or various types of professional software development.”
Many initiatives are expanding the world of coding. One key aspect for new coders is developing a solid coding ethic so they can learn to navigate the myriad ethical questions that surround computer science and its applications.
“In the professional context, programmers and other software developers have numerous duties to numerous stakeholders, including to their customers and users,” Robillard said. “The ACM Code of Ethicsprovides a good overview of the expectations placed on computing professionals.”
One of the most compelling debates in coding concerns encryption and privacy. Philip Rogaway, a professor of computer science at University of California, Davis argues that algorithm writers have astonishing power and are not politically neutral.
“Most academic cryptographers seem to think that our field is a fun, deep, and politically neutral game—a set of puzzles involving communicating parties and notional adversaries,” Rogaway wrote. “This vision [...] animates a field whose work is intellectually impressive and rapidly produced, but also quite inbred and divorced from real-world concerns. Is this what cryptography should be like?”
A coder may not always have the macro-level qualms of developing algorithms for the NSA. Coding may be as simple as helping a friend build a website or helping parents set up a computer page. Coders will have to figure out their own ethical approach to their work.
There are also debates on whether coding constitutes free speech, and if codes with damaging implications should be censored. For instance, Facebook can impact voter turnout in the United States. The company did an experiment to see if Facebook could encourage U.S citizens to vote, and the result was positive. On the opposite end of the spectrum, terrorists can do a lot of damage with algorithms by encrypting messages in order to hide plans of attack. These issues may not immediately confront new coders, but it is important to understand the debate as it will have eventual impacts the digital world.
With coding comes enjoyment, challenge, a new way of engaging with the world, and, to some degree, power. Coders can heavily impact society through the digital world and innovate in ways that can have a global impact.
The world is becoming increasingly digital, and a generation of coders, largely pushed through education, is set to emerge. As this happens, new coders will have to grapple with hard questions surrounding coding and ethics.