Pros
The engineering team is small, so you can potentially have a broad impact on the codebase with less friction than you may experience at a bigger team. When they say full-stack, they mean it here. There is no distinction between backend and frontend engineers; you are expected to be able to ship both aspects. You have the option of working on a variety of platforms, e.g. iOS, Chrome OS, Ruby on Rails, and on different focuses, e.g. the iPad app, MDM. The software development process for all aspects of the tech stack will normally involve peer code review, test coverage, and automated deployment. Equipment provided to you by this company is generally high-quality. That is, laptops you use are top of the line.
Cons
In theory, you can work on any part of the technical stack. In practice, however, you will often be pigeonholed into one area, even if you have more prior experience in a different area of the tech stack. # Project Management and Vision Project management can be much improved. Product managers here tend to be from business rather than education backgrounds, which can lead to decisions that benefit students in superficial ways. There is a tendency among higher-ups to promise more than what our team could deliver, and to demand features that are poorly-specced. Managers outside of the engineering team also tend to view its members as assembly-line workers who exist only to be told exactly what to do without any resistance rather than as technologists with comprehensive computer science backgrounds. That is, if you express concern as to the technical flaws of a particular spec, your experience as an engineer is often dismissed by higher-ups. Progress on long-term projects is often stalled by ambivalence from management. The focus by leadership tends to be on securing sales rather than building a compelling product and service. The eSpark student-facing apps, teacher/school admin dashboard, and MDM services have the potential to be innovative, but consistently fall short of expectations (both from partners and internally). # Compensation I was consistently lowballed when it came to compensation. From talking to people who have the misfortune of continuing to work here, I am hardly alone and far from the worst case in terms of compensation parity. When I started as a software engineer, I was being paid 56K, which I was told by the CTO is the market rate. This, it turns out, is not true. Starting salary for software engineers is 70K. Newer software engineers with far less experience than I had were being paid 30K+ more than I had been, even when accounting for benefits. When I left 3 years later, my rate stayed the same, in spite of having shipped several products that have been integral to the growth of the company. Before my departure, I asked for a raise. The CTO was not willing to budge.