It’s More Than Writing Code !

With distributed application architectures, virtualisation and cloud environments the Software Engineering discipline has been facing challenges that go way beyond coding and compiling. Developers are versatile, mastering aspects of programming languages and frameworks, development techniques, code quality and collaborate as part of Agile teams using both software engineering and DevOps tools.
EXPLORELANGUAGES / FRAMEWORKS
Java – C – Go – JavaScript – PHP – Ruby/Rails
Python – PowerShell – Swift – C#/NET – HTML
Kotlin – C++ – Scala – Objective C – Spring -JPA
CODE QUALITY
Clean Code, Secure Coding, Continuous Inspection, Unit Tests, Linters, Static Code Analysis
READ MORE12 FACTOR APPLICATIONS
A framework for design, development and maintenance of scalable and cloud-ready microservice applications.
READ MOREMICROSERVICES
A collection of loosely coupled scalable services, focussed on business capabilities and highly suitable for cloud environments.
READ MOREAGILE / DEVOPS
An iterative approach to Software Engineering with short but highly efficient development cycles and use of DevOps tools and methods.
READ MOREDEVELOPMENT TOOLS
Integrated Development Environments,
Software Build Tools, Source Code Management Tools
CLEAN CODE
Easily maintainable, extendable and understandable source code. Small classes with single purpose and concise APIs.
READ MORE
Software Engineering
Languages
Whether front-end, database abstraction, back-end service or build chain as code – we support a wide range of development projects using programming languages and frameworks
• Java, Spring/SpringBoot, JavaScript
• Node.js, Angluar, React, JQuery, Bootstrap
• C/C++/C#, Python, Scala, Ruby/Rails
• PowerShell
• HTML, CSS, PHP, Perl
• Kotlin, Swift, Go Lang
Our developers are used to working in Agile mode and can be part of your team remotely or onsite.
Enquire today if we can help supporting your project!
ENQUIRECloud Readiness
Cloud Ready 12 Factor Applications
Distributed applications in cloud environments can be extremely complex. The 12 Factor approach provides a framework for developing scalable and cloud-ready applications.
Managed and revisioned code
Isolated Dependencies
Environment stored configuration
Backing service as resource
Build and run separated
Stateless processes
Service export via port binding
Restartable, scalable processes
Fast start, graceful shutdown
Identical DEV, INT, PROD envs
Event stream logging
Long running admin processes
Good Practice
Development Methods
TEST DRIVEN
(TDD)
TDD is an innovative software development approach where tests are written, before writing the bare minimum of code required for the test to be fulfilled. The code will then be refactored, as often as necessary, in order to pass the test, with the process being repeated for each piece of functionality.
BEHAVIOUR DRIVEN (BDD)
BDD has evolved from TDD. It differs by being written in a shared language, which improves communication between tech and non-tech teams and stakeholders. In both development approaches, tests are written ahead of the code, but in BDD, tests are more user-focused and based on the system’s behavior.
PAIR PROGRAMMING
Programmers work in pairs, one writing code (the driver) while the other one observes (the observer) and reviews the code as it is entered and injects short term ideas and strategically important ideas.
This approach is an Agile development technique focussing on software quality by close collaboration.
REACTIVE PROGRAMMING
Reactive Programming is by definition not a methodology but a programming paradigm required by and structured around applications concerned with data streams and the propagation of change. All programming is focussed on events delivered by data streams.
Application Architecture
Microservices
The mircoservice architecture style aims to strucure applications as a collection of loosely coupled services. The services are organised around business capabilities and have a number of attributes that make them highly suitable for the use in cloud environments:
INDEPENDENTLY DEPLOYABLE
Deployable without dependencies to each other, automated and often containerised.
HIGHLY
SCALABLE
Able to dynamically adapt to workload changes by duplication and request routing.
EASILY
MAINTAINABLE
Maintained per services by small specialised teams.
LIGHTWEIGHT COMMS APIs
Standardised and lightweight communication interfaces such as REST.
MINIMUM CENTRAL ADMINISTRATION
Centralised administration is kept to a minimum. Admin processes are services.
HETEROGENEOUS TECH STACK
Services of the same application can employ various platforms and programming languages
Quality Software
Code Quality
The quality of code is often determined by the individual developer’s experience. Other factors are the availability of resources, time allocated and also the tools used for quality assurance. To effectively evaluate code as good or bad a number of methods and techniques must be employed:
REGULAR REVIEW
Regular and stuctured reviews enable improvement through the sharing of expertise and adherance to coding standards defined in a project
CLEAR METRICS
Clear definition of qualitative and quantitive metrics such as extensibility, maintainability, technical debt, complexity, duplication.
CODE ANALYSIS
The structured analysis of source code (automaded or manual) to detect vulnerabilities, functional errors, duplication, deficiencies or weaknesses.
AUTOMATION
Continuous Code Inspection supported by tools such a SonarQube or Veracode allows for comprehensive analysis that is fast and effective.
TESTING
Structured functional testing puts the focus on business functionality to be delivered by software and reduces the amount of irrelevant code.
Efficient Development
Agile and DevOps
DEVOPS
DevOps is a set of methods, tools and processes to support Agile Software Engineering.
Software and operations engineers work closely together across the entire product lifecycle, starting from the requirement stages, through development all the way to operational production support.
DevOps promotes a high degree of automation and relies on an integrated set of solutions, a “toolchain”, that will speed up build processes, test cycles and product deployment.
AGILE SOFTWARE ENGINEERING
Agile is an iterative approach to software engineering that is more cost effective, delivers quality software without the need for rework and allows for predictable resource requirements and delivery timeframes.
Stakeholders are closely involved into the software engineering process and see immediate value on their investment through short development cycles and transparent project metrics.
DevOps methods and tools support Agile software engineering aiming at a high degree of automation to rapidly evolve products and seamlessly test and deploy into production environemnts.

Software Engineering
Development Tools
Our Software Engineers use a wide range of development tools. Whether IDE’s, Source Code Management, Build Tools or Continuous Integration – we are ready to hit the ground running as part of your project.
ENQUIREGood Practice
Clean Code
Clean Code is easy to understand, to maintain and to extend.
• Each class has a minimal and defined purpose.
• Public APIs are clear and concise.
• Code is easily testable and covered with unit tests.
• Tests are easy to understand.
• Object collaboration is understandable and clearly defined.
• Methods have a single purpose.
• Classes, methods and variables are sensibly named according to purpose.
At LINHART DIGITAL we care about and practice clean code. We ensure that all code we write can be easily revised, extended and maintained by our clients.

Good Practice
Documentation
What is good code documentation? Code should be written well enough to be able to document itself while context documentation should describe roadmap information, external dependencies, application APIs and any other information that will help extending the application or improving it.
1
SELF DOCUMENTING CODE
Code is written in a way where purpose of classes, methods and variables is obvious from their naming and their interfaces. Cyclomatic complexity is kept to a minimum to ensure maintainability
2
CURATED DOCUMENTATION
Maintain documentation that is not part of the code close to the source by using tooling such as document management systems that link to code versions or, where suitable, store documentation along code in source control.
3
CONTEXT DOCUMENTATION
Enable readability and purpose of code by maintaining context documentation to describe the overall application purpose, it’s roadmap and APIs. This enables quick orientation and targeted code extensions or improvements.
Get in touch !
Let us know how we can boost your software project !
UK: +44 20 71934743
Germany: +49 34 645869004
contact@linhartdigial.com