It took several years but I finally found my dream job.
I work as a software engineer for an ISP. We're a startup and so of course our mission is to disrupt the industry. The great part is we're actually doing it!
Fun stuff I've done so far:
- Wrote a library to find the best available subnet given our set of IP blocks, set of existing subnets, and the desired subnet size. This may not sound like a big deal, but we've shown our IP block utilization to other ISPs and they are blown away that we achieve a perfect 100% utilization of each block. (Typically at ISPs of our size this is done manually and so there tend to be a couple leftover subnets in each block which are too small to use).
- Wrote a monitoring system for OLT hardware which A) does not provide out-of-the-box monitoring and B) does not have an API. We actually managed to build a robust system on top of its CLI interface. This is huge for us. If there are hardware or fiber problems, or if a customer simply unplugs their modem, we know instantly. It can even pinpoint where the problem is.
- Wrote a system which is able to talk to our OLTs, core switches, core routers, and customer modems to do things like provisioning or upgrading/downgrading our customers' bandwidth. Again, there is nothing even close to an out-of-the-box solution for this. You have to build real software!
- We have some upcoming products I can't share, but one of the most exciting things right now is that we are focusing on helping our customers troubleshoot their networks. This is a surprisingly complicated thing to do while providing a top-notch customer experience, and we think software is part of the answer.
So, do I feel like I've been using "computer science" knowledge? Not really. Closest thing would be using binary trees to do subnet stuff.
But what I have been able to do is flex my software engineering muscles, go back to first principles, and design software from scratch. No CRUD, no huge frameworks and package managers, just plain old fashioned programming.
(Ok, we do have CRUD and framework stuff. The web browsers have to talk to something!)
Wow you've done some great stuff. I work in the same industry in a company that has been around since 2007 and we don't have anything remotely similar to provisioning systems for client or backbone equipment, everything is done manually.
What kind of equipment do you use mainly ? Cisco, Juniper... ?
I work as a software engineer for an ISP. We're a startup and so of course our mission is to disrupt the industry. The great part is we're actually doing it!
Fun stuff I've done so far:
- Wrote a library to find the best available subnet given our set of IP blocks, set of existing subnets, and the desired subnet size. This may not sound like a big deal, but we've shown our IP block utilization to other ISPs and they are blown away that we achieve a perfect 100% utilization of each block. (Typically at ISPs of our size this is done manually and so there tend to be a couple leftover subnets in each block which are too small to use).
- Wrote a monitoring system for OLT hardware which A) does not provide out-of-the-box monitoring and B) does not have an API. We actually managed to build a robust system on top of its CLI interface. This is huge for us. If there are hardware or fiber problems, or if a customer simply unplugs their modem, we know instantly. It can even pinpoint where the problem is.
- Wrote a system which is able to talk to our OLTs, core switches, core routers, and customer modems to do things like provisioning or upgrading/downgrading our customers' bandwidth. Again, there is nothing even close to an out-of-the-box solution for this. You have to build real software!
- We have some upcoming products I can't share, but one of the most exciting things right now is that we are focusing on helping our customers troubleshoot their networks. This is a surprisingly complicated thing to do while providing a top-notch customer experience, and we think software is part of the answer.
So, do I feel like I've been using "computer science" knowledge? Not really. Closest thing would be using binary trees to do subnet stuff.
But what I have been able to do is flex my software engineering muscles, go back to first principles, and design software from scratch. No CRUD, no huge frameworks and package managers, just plain old fashioned programming.
(Ok, we do have CRUD and framework stuff. The web browsers have to talk to something!)