Pros
MIT surrounds you with some of the most brilliant people from around the world. This alone is truly a privilege. As a software engineer working with researchers, this serves as a good springboard to hone your skills by leaping from project to project with agility and learning a tremendous amount about the cutting edge in a short time. The work-life balance is double-edged. You have a lot of flexibility to choose when to work, but of course there is a lot to do. Especially when collaborating with researchers and students the hours can get wonky, particularly near deadlines. There is little distinguishing of evenings, weekends, holidays, etc. as "sacred" time, but there is also the assumption that you will use your own discretion for giving yourself fair downtime as needed. I personally welcome this flexibility as it respects your own time management style as long as you're getting things done. Most importantly, everybody here is highly motivated. You don't come to MIT for the paycheck -- you come for the exchange of ideas and amazing learning opportunities. As an employee you have the chance to sign up for courses at MIT provided they are relevant for the job. It is a reimbursement program, so you pay full cost and get it back if you pass, which is good to stay committed and not just warm a seat that could go to someone else.
Cons
The pay for a software engineer is far from competitive; however, between having the MIT brand on your resume and all the skills you learn if you're diligent you can treat this as a good transient job towards your long-term career goals. Logistically, things are quite disorganized and decentralized at MIT. However, if you welcome this as a contrast to how prohibitive a heavily process-driven corporate job can be, there are definite upsides. This is a place where if you want something to change outside your job description, you're free to work on that yourself.