- Location
- Bangalore · Bengaluru, Karnataka, India
- Workplace
- Hybrid
- Department
- Engineering
- Source
- Greenhouse
Description
Forward Networks is revolutionizing the way large networks are managed. Forward's advanced software delivers a "digital twin" of the network, enabling network operators to verify intent, predict network behavior, avoid outages, and simplify network management. Our platform can be implemented on premises, in the cloud, and in hybrid environments.
The results? More reliable networks, reduced outages, and reduced business risk.
Forward Networks is currently looking for a talented Software Engineer to join our NQE and Programming Languages team. This team develops NQE (Network Query Engine), a query engine for network data, enabling non-programmers to express custom data views, reports, and verifications on their networks. This team also maintains a suite of internally-used domain-specific languages that help deliver a reliable, robust experience with Forward Networks’ network verification and assurance software.
In addition to Java development, the NQE & Programming Languages Engineer will draw on concepts and techniques from the areas of programming languages (PL) and database systems (DBMS) to help develop the state-of-the-art network verification platform and improve how network operators manage networks today. Here are some of the types of problems that this engineer might be challenged with:
- Implement a cost-based query optimizer for NQE’s query language.
- Design extensions to a novel hierarchical text pattern-matching language.
- Design and implement a bidirectional parsing language and system.
- Collaborate with AI experts to design natural language interfaces to DSLs.
Responsibilities:
- Develop, enhance, and maintain our code base (primarily Java)
- Develop, enhance, and maintain NQE, leveraging various PL and DBMS techniques.
- Deliver a suite of domain-specific languages used in the development of Forward Enterprise.
- Build and support tools (such as IDE plugins providing language support) associated with the above domain-specific languages.
Requirements:
- BS in Computer Science or related degree; MS preferred
- 3+ years of work experience with Java, Scala or other similar languages (C#, F#, etc.)
- Strong object-oriented design and development skills
Nice to Haves:
- Strong functional programming skills with experience in at least one of the main functional programming languages, such as Scala, Haskell, OCaml, Scheme, F#, etc. Familiarity with functional programming idioms such as monads, functors, algebraic data types, and persistent data structures.
- Experience implementing parts of programming languages or domain specific languages (DSLs), such as implementing any of the following components: a parser for language syntax, a type checker or type inference algorithm, a compiler or evaluator, a static analysis or optimization pass, or editor support such as auto-completion and semantic information about programs
- Experience implementing parts of a database-like system, such as implementing a query parser, a query optimizer, execution pipeline, or storage format (like Parquet, etc.).
-
Experience leveraging open source data systems libraries such as Apache Parquet, Iceberg or Datafusion.
-
Experience analyzing and optimizing performance of complex applications, especially on JVM-based languages.
NOTE: experience in the networking domain is NOT a requirement for this role but is a plus.