I’m a government contractor. Government contractors (and I assume many folks in private industry who work with data that should be protected) work on networks in which sys admins keep things locked down. This presents real challenges for software developers.
1. The tool list one uses has to be blessed. Meaning, the tool itself and its version. Meaning, there’s always a lag for anything to move through the process. You’d like to use an IDE with a time-saving or other productivity feature? Well, we already scan these other 3 – not sure why we need to add your 4th one to the list…..
2. The operating system one uses has the same challenge. The time required to cross-check an operating system, given the base layer at which it operates in the technical stack, is significant. Don’t think you’re using that new optimization anytime soon…. And, of course, tools which require relatively new versions of OS’es (Docker, say?) are tied up for a good long time.
3. For those of us with Linux operating environments, locked down operating systems often mean working with dated yum repositories. You want that thing that was released 6 months ago? It might make its way in in another 6 months when that repositories’ contents are brought inside.
4. “Air gap”… We’re not even talking about compatibility here or concerns about dated artifacts… Don’t think about using a yum repo that’s not already been imported in. It’s just not “there” for you to use…
Challenge of the day: I want to use a Chrome extension for use in AngularJS debugging. An older version of the extension’s available in my world, but my / my team’s primary development environment is CentOS, which doesn’t support Chrome. There are folks who’ve contributed scripts to get Chrome running on CentOS, but those require access to repos which our sys admin team likely won’t let come through… Reasonably certain of that, but still working through a set of steps at home to set up a CentOS VM, install Chrome, and install my extension. Key items being that all things needed for installation have to be able to be brought in as specific artifacts. I’ll need to test by installing them on my VM and then disable Internet access out to verify no secrets up my sleeve. None of that can really happen on the work network – need to prove it _can_ all work out here to be able to then make an argument to import the artifacts in where my team can make use of them.
My work-around hack in the meantime: from another OS, ssh tunnel my web app’s port across and through, so I can run Chrome from the supported OS and hit my not-yet publicly accessible web application.
None of the above are things you ever get exposed to in college, etc – you figure our your own hacks to get your job done once you hit the field. That’s what makes you an engineer, rather than just a code monkey…