← Back to context

Comment by Ao7bei3s

3 years ago

What does a development environment look like, both architecturally and simply visually?

Like: Do developers spin up entire fake economies with two banks and the fed on their latop, or is it all incremental changes to individual microservices in a big permanent test setup? Do other banks / service providers / the fed run test instances of their systems with fake money for other companies to do interop with, like a "global test financial network", or do you generally test with "real" money?

What do you see on your screen in day to day developer live? Are there like dummy online banking web interfaces? Or is it all text logs?

Is it just normal software development like anywhere else, or is there anything that really sets it apart in terms of developer workflow?

Once the service provider is connected to the Fed (a somewhat complex process), it's normal software development. The client uses either MQI or JMS to send and receive messages; the messages are essentially ISO20022 XML. The development environment could be anything (any OS, any IDE). You interface those messages with your system of accounts. The Fed also provides a simple web UI and a testing network where you can test with other participants and run regression tests.

From a software development perspective, it's really quite normal.

  • That's really interesting. I worked in PCI (payment cards industry) and we had terminals we could relay the ISO8583 messages through, eventually opting to emulate via software for obvious reasons.

    Always so cool to hear about this sort of stuff.

  • What is normal though? From the perspective of a hardware engineer, from the perspective of a contractor or small company developer, from the perspective of a developer at a medium-sized firm, and from the perspective of an engineer at a FAANG, what is normal is different. Twitter famously doesn't have a dev environment and that's not a bad thing. That's because coordinating umpteen teams to have an actually useful dev-dev and qa-dev env costs more than it's worth, in their eyes. And then, what does normal look like depends on when, too. Local dev envs looked a lot different before Docker came on the scene.

    So back to the question, what's the dev env look like? :)

In front of your eyes: TSO-ISPF for everything. IDz for the 5 seconds per month that code is actually written

Test env: Separate permanent envs. From playground where nothing matters, env with some fake data in similar databases and variants of all systems, to mirror of prod with anonymised data, then prod

There are dummy online banking web interfaces

What sets it apart is that the operating system is painful to use and never stops being painful to use. And your employer is paranoid and keeps you in a digital prison for security so very few permissions so there is no creativity or off-road improvisational innovation just assemblyline style development

  • > And your employer is paranoid and keeps you in a digital prison for security

    That, um, sounds reasonable to me in the context of what they're developing.

    • >> the operating system is painful to use and never stops being painful to use.

      But this is regretful, and slows down everything by orders of magnitude. One of the big problems is lack of EFFICIENT documentation/Quick Starts. The guides are labrynthine in layout, looping and colliding spiders' webs of wtfness.

    • Not really.

      Access to production and its data should be highly regulated. Ideally no dev machine has any kind of write access to prod - instead it's commit access to a (non-master) branch which needs multiple approvals to be merged into a release branch.

      Access to dev environments and their local code? Who cares, let them explore. As long as all code is reviewed prior to deploying, they could even be developing on a compromised machine and the live system will still be secure.

      1 reply →

  • I'd rather not have "off-road improvisational innovation" with the nation's banking infrastructure, thanks. If that's what you want to do go write another JS framework or static site generator, don't work at a bank.

    • Your gut reaction is disgust and I don't blame you. You could do without the insults, however. The "nation's banking infrastructure" is outdated and messy. There is no chance in the entire world to upgrade it or clean it up if we the workers are not equipped with the power to do so. A first step could be informational transparency, I would for example really like read access on other systems in the bank and not just my own. Truthfully, separation of duties in this case is more of a controlling function and less of a security function. Of course I care about security, we all do. But let's not stifle the workers that can change the system from within in such low risk work that it's bordering on fear of change. Don't insult me again on something you know nothing about and haven't seen with your own eyes.

      2 replies →