Learning to Code the Hard Way
How one woman taught herself to be a programmer by building an educational software system
A guest post by Megan Harney
Learning to code is something that happened organically for me. I come from a family of teachers. My dad taught woodshop for 30 years in some of Milwaukee's toughest schools, and my mom taught briefly, too. When I was a sophomore in college, I wrote my own curriculum and taught SAT and ACT prep. As a student who had always done my homework, I was dismayed when my students didn't do theirs, and I was frustrated by their excuses. I needed a better way to hold them accountable. I was an English major and a computer science minor, so I built a system for online homework delivery and performance analytics.
I tried to share my system with my teacher friends, but they said that they were using too many different software solutions already and didn't want to add another one. So instead of looking to integrate my software with other products, I decided to build an all-in-one system--and to build it myself.
I was still a student, and I was doing well in my English classes but not as well in organic chemistry. Based on my own performance and my experience teaching kids with a wide range of abilities and learning styles, I became a strong believer in individualized instruction. I designed my system, called MIDAS (Massively Integrated Data Analytics System), from the ground up with the goal of guiding students to mastery by letting them learn at their own pace. MIDAS takes into account individual and aggregate student performance, demographics, and socioeconomic data to recommend what students should study next--all while accommodating individual needs and allowing students to submit their work using various media.
Learning to code for myself
When I started building MIDAS, I had zero coding experience. I hired a team of offshore developers to help me. When we talked on Skype, I asked lots of questions and studied the code. Those questions and their answers were the start of me learning to code. As a senior (a year into building the system), I finally took three programming classes. Eventually, I realized that language, time, and cultural differences were hampering my work with the developers, so I took over building MIDAS myself. Ultimately, doing it myself was easier than trying to explain to programmers how teachers think.
I stored the code for MIDAS on my local server, made changes, deployed those changes to see if what I'd done worked, and did it again and again. I learned by trial and error. When I got stuck, I read online articles on Stack Overflow or just Googled the topic I was looking for. I found snippets of code online in repositories like GitHub and CodePen; most of these snippets are under MIT or GNU license, which means that programmers can use them or change them however they want. (Some snippets do require a paid license, though.)
As I built the system, I showed it to teachers, and they would say, "Hey, it would be great if it could do XYZ," and I would add that feature. This went on for eight years, so as of right now, MIDAS combines the utility of up to 13 siloed systems, including SIS, LMS, CMS, SPED forms, graduation planning, transportation, scheduling, teacher mentoring and professional development, data analytics, state reporting, and the ability to build and curate curriculum and assessments.
The truth is, the system will never be finished. I wrote a major feature the other night that lets you post a video (for example, of a teacher teaching to demonstrate instructional practice), add time-stamped comments, and link those to a standard. I thought it was beyond me, but I searched online and found that Google has an API to deal with timestamps, so I thought, "Cool, I could use this."
I'd say I wrote 90% of the code for MIDAS myself. I hired four other developers in the last year. (The size of the development team has quintupled!) We're continuing to build additional modules and interactions between the modules, adding new functions over existing data structures. We do product demos a couple times a week, and when a teacher says, "It would be cool if it could do this," I add it to my list.
My goal is to help school superintendents and IT directors help students and teachers who are tired of struggling to support dozens of different software packages. I built MIDAS on a single Amazon Web Services database, so reporting and analytics can be automated and simplified; this makes complying with state reporting requirements easier and frees educators to do what they do best: teach.
It has taken me eight years to wrap my head around MIDAS, but I know what every field in our database of more than 600 tables does. Growing up, I absorbed a lot about how educators work and how schools work just by talking with my parents and teachers and being that kid who hung around the office while counselors built the master schedule.
Being a woman has helped, too. I think my approach to solving problems and writing code is more global, whereas many men I've worked with engineer more linearly. If I were advising girls who are learning to code, I would say, "Do it, and don't let anybody tell you you can't do it. And just keep at it." Oh, and getting a degree in computer science would be a good thing to do.
Megan Harney is the founder and CEO of MIDAS Education. She holds a master's degree in Technology, Innovation, and Education as well as a bachelor's degree, cum laude, in English and computer science from Harvard University. Megan has previously managed developers at Microsoft, taught students and teachers, consulted with district administrators to solve business problems, and conducted neurodegenerative research.