For languages we mostly use Java / Kotlin.
For data streaming we rely on Kafka
Database technologies are important for our work: database engines like PostGRES; AWS data services like S3, RDS, DynamoDB; SQL is the main query language for databases and many other applications use querying languages based on SQL.
We write micro-services and use Docker and Kubernetes. Infrastructure as code tools like Terraform are used to set things up.
These are currently popular technologies for data processing systems. In the course of my career I have seen technologies change a lot, but Databases have always been important so a good working knowledge of SQL and non-SQL databases is good to have.
For my day-to-day work, I'm mostly using...:
- Visual Studio Code (for code-writing)
- IntelliJ (also for code-writing)
- Git & Github (for version control)
- Java + Kotlin
- PostgreSQL-flavored databases
Adjacent collaborating teams are using many of the same technologies, but also add in Kafka for streaming data.
I would also add that technology stacks like this are pretty common, it's good advice not to over-index on any one thing. Focus on foundations -- take whatever you've learned and abstract it a little bit: "What did I learn over here that I can use over there? How are they similar? How are they different?"
Gregory recommends the following next steps:
I like to separate software development/engineering jobs into two categories. Jobs where you are supporting the business and jobs where you are working on the product.
An example of supporting the business would be working for an insurance company. Their software needs to be worked on and maintained to facilitate the sales of insurance to customers. You might be updating existing systems to handle new insurance products.
An example of working on a product might be working as a software engineer at Facebook. You would be developing new features directly for the facebook app.
To me working directly on a product is more fulfilling but you can have a very successful career building up knowledge of a certain field supporting those businesses ( A software engineer that really knows a lot about insurance for example ).
Redis, MySQL, and PostgreSQL for Databases
Go, Python, SQL, or Bash Scripting as Programming Languages, depending on the task
GitHub for Source Controle
Jenkins & Ansible for Automation
Terraform for Infrastructure as Code
AWS is our primary Cloud provider
Docker for Container Management
Kubernetes for Orchestrating Containers
I'm sure there are others, but I probably use them less frequently.