Contents
Your Collaboration
Do not hesitate to collaborate by sending us your comments by Email: blog@argonauts-it.net (do not modify the subject).
Context
This blog is about the skills and abilities that a developer must have to claim a given level of expertise.
Our Ada developers curriculum is organized around three main axes:
- the language (rich syntax with fine-grained semantics which allows efficient design and coding, think for example to the strong typing that helps the identification errors during the compilation time)
- the software engineering (the language Ada is a mature computational technology allowing to deliver robust and maintainable applications and to write quickly clean code for an optimal cost when the right engineering approaches are applied)
- the application domains (general, numerics, database, embedded, concurrent, etc.)
Junior Leval
Overview
A junior developer has to master the Ada 2012 syntax and semantics. He or she must efficiently code simple programs. He or she masters property the unit testing (he or she can design a complete test coverage). He or she also masters the defensive programming and the clean code rules. In a word, he or she is an outstanding craftsman. And finally, he or she works inside little groups.
Curriculum
- Language Features
- imperative programming
- structured programming
- object-oriented programming
- concurrent programming
- exception handling
- defensive programming
- conditional compiling
- basic libraries (Ada and AUnit)
- Tools
- basic literature (Language Reference Manual (LRM) and further reading on "wikibooks", LRM 2012 edition and Rationale for Ada 2012 on the site of "Ada Conformity Assessment Authority")
- GNAT Programming Studio (GPS)
- GCC-GNAT compiler collection
- git
- source code beautifier
- documentation generator
- UML (class, object, state machine, activity, sequence and timing diagrams)
- analysis tools (gnatcheck, gnatpp)
- Methodological Approaches
The junior's way of working is based on implicit processes and the best practices of the profession (Argonauts-IT Maturity Model Level 1).
- Extreme Programming (Agile Manifesto principles)
- Test-Driven Development (TDD)
- systematic documentation of the source code
- SOLID principles and Clean Coding rules
- anti-patterns
- Continuous Integration (CI)
- Scrum methodology
- Pomodoro technique
Intermediate Level
Overview
An intermediate developer has to master libraries. He or she must design efficiently complex applications. He or she masters specific both programming domains and techniques (system, network, embedded, concurrent, real-time, functional programming, etc.). In a word, he or she has an excellent analysis and synthesis abilities and conduct research projects about mature topics (e.g. create an embedded simulator to choose the better bus like I2C or Ethernet). Having an excellent software engineering background, he or she works in supervise the job done by the juniors.
Curriculum
- Language Features
- interface-based programming
- functional programming
- interfacing to other languages (e.g. C/C++, Python)
- systems programming
- GPU programming
- real-time systems
- distributed systems
- numerics
- general and domain-specific libraries (GNAT Component Collection, AWS, ASIS, GtkAda, etc., see predefined libraries, external libraries and external resources on wikibooks, tools and libraries on ADAIC, and AdaCore on GitHub)
- Tools
- design and architectural patterns
- UML (package, composite structure, component, profile, deployment, use case, interaction overview and communication diagrams)
- sysML (requirement, block definition, internal block and parametric diagrams)
- visual techniques (e.g. Burh diagrams)
- analysis tools (gdb, valgrind, gnatelim, gnatmetric, asistant and adacontrol)
- testing framework (gnattest)
- documentation generator (adabrowse and gnatdoc)
- libraries maturation
- packaging
- Methodological Approaches
The intermediate's way of working is based on explicit processes and the reference SWEBOK v3.0 [1] (Argonauts-IT Maturity Model Level 2).
- Object-Oriented Analysis and Design (OOAD)
- system and integration testing (TMap approach, including the test-specification techniques)
- specification of Application Program Interfaces (API)
- Continuous Delivery (CD)
- risk management
- Quality Control (QC) and security
- project management
- team management
Senior Level
Overview
A senior developer has to master the Ada 2012 (and soon Ada 2020) syntax and semantics. He or she must be able to prove the code, and he or she draws very complex architectures. He or she masters industrial domains (e.g. aerospace, railway, banking, etc.). In a word, he or she has an excellent creativity ability and conduct research projects from scratch (e.g. specify new formal systems to be able to validate models). He or she works in multidisciplinary structures with rocket scientists like mathematicians, physicists, biologists, doctors of medicine, etc.
Curriculum
- Language Features
- aspects and contracts
- logic programming
- high integrity systems
- SPARK
- operational research and artificial intelligence oriented libraries (decision making, optimization, game theory, machine learning, reasoning, etc.)
- Tools
- model checkers (alloy)
- software verification tools (spin and atos)
- formal verification tools (gnatprove)
- Methodological Approaches
The senior's way of working is based on controlled and optimized processes (Argonauts-IT Maturity Model Level 3).
- design by contract
- Quality Assurance (QA) and safety
- cleanroom software engineering
- six sigma
- lean management
References
- [1] SWEBOK v3.0, Guide to the Software Engineering Body of Knowledge. Pierre Bourque, and Richard E. Fairley (Eds.). IEEE Computer Society, Los Alamitos, CA, 3th edition, 2014.
Your Collaboration