Training Preparation -- All Questions

Years with company Years programming Primary programming language Other programming languages Unit test harnesses Something else Test practice now Target system Dev tools Build time Coding standard Function too long Code reviews Code time Test time Debug time Favorite thing about dev Least favorite thing about dev Tdd knowledge Why attending?
0 10 C C++ Java labview junit googletest unity I started working at astrocast few month ago. Glad to finaly work in a company where software testing is part of the work and not saying, if the software have bugs, that means that the engineers are not good enough. I enjoy a lot working in embedded software and Linux environment. I hate using debuggers, having good tests avoid loosing time with debuggers. Unity for unit testing and a hardware in the loop test with inhouse python scripts. A terminal using a stm32 mcu sending data from satellites. arm-gcc, cmake, unity, cppcheck. 5-30 minutes We have a company coding standard (with spaces, ident, ...). Try to code easy to test functions, avoid global variables, passing as much in arguments. When the function can't be tested. If the pull request is small, we found something to say. If the pull request is huge, sometimes, we juste accept it because it's too complexe to understand. 70 20 10 Learn new things every day. Complexe tasks. Embedded software became real software and not messy assembly programs. Using wrong tools. Try to use a code for days and finaly find that it's not working. including test in the development avoid the project to fail. Develop projects in a better way Show
6 21 C++ C, C#, PowerShell, Python Unity (ThrowTheSwitch), MSTest/VSTest MSc in Computer Science. Originally more of a C# developer (still actively developing with for non-embedded), dived into embedded software engineer for space systems 14 years ago for a CubeSat project. Unit Testing, low-level functionalities on embedded hardware (manual runs) and high-level functionalities on x86 HAL (partial emulation) in CI Integration testing with test procedures remotely commanding embedded software and verifying result of execution. Partial integration testing with software running on x86 emulation. Spacecraft subsystems, either FRAM-based MSP430 (12Mhz, ~40KB firmware size, ~12KB data memory), or Cortex-M3 (100Mhz, ~64KB firmware size, 64KB RAM). Visual Studio with VisualGDB extension GCC toolchains (x86, MSP430, ARM) and VC++ (x86) 11-30 seconds C++17 with strict subset (no dynamic allocation / no heap) -Wall -Wextra cppcheck static code analysis Short and clear code, "every line must be there for a good reason". Contains code that can be shared with others or duplicates existing. Contains more than one "functionality". Lost track of what it is exactly doing before reaching end. Through pull requests for major features, not always for smaller. Lot of room for improvements. 50 20 30 Creating something, innovating. Finding clever solution to challenges. Uncertainty of what is needed, changing requirements. Dependency on other parts not always in your control (libraries, hardware, etc.) Principles and theory from studies, lack practice. Practical TDD deep dive, how to improve our standards and test skills. Both as a developer point of view (what should I do correctly) but team lead too (how should I coach others, what should I require from team). Show
1 10 C VHDL, C# Cpputest some I recently started a new job after working on FPGAs for the past several years. So I am working on getting my C skills back a little bit On device testing/verification We develop on a variety of microcontrollers like the MSP 430 and 8051 chip IAR 5-30 minutes We use the Barr and Misra standard When additional functionality is being implemented outside the original limited intent We user PRs where our team members will review and approve PRs 20 50 30 I enjoy being able to create new things and solve problems that software allows us to do Probably the unknowns that can be time sinks away from valuable development Very little We use TDD at work so I am excited to learned more about it Show
10 35 C/C++ Python, C#, Matlab, Java, (learning Rust) Microsoft .NetMicro Unit Test I have most experience programming PIC microcontrollers and linux for arm chips. I also do some web programming with Python, and GUI development using QT. separate binaries and test scripts Linux on ARM SBCs, PIC Microcontrollers, and getting into ARM STMicro chips soon as well. Visual Studio, VS Code, QTCreator 31-60 seconds MBARI develops prototypes, and have no coding standards that we are asked to adhere to. Usually when I can't remember variable names from the bottom to top, or when sections seem repetitive. We typically do these ad-hoc, with usually 1 reviewer. 40 20 40 I've always enjoyed embedded software tasks, I/O, communications, and control software. Troubleshooting code at the debugging phase I understand the basic philosophy. To see how we can apply this to embedded software development at a workplace that only builds prototypes, often the phase to do a rev 2 of software doesn't get funded, so I'm hoping TDD can help me make better solutions on the first try. Show
25 40 C# C/C++, Matlab, Labview There is some unit test framework for C# and the .NET Micro Framework that we use but I can't remember the name. I'm a mechanical engineer who develops systems for oceanographic research. I've done a lot of electrical engineering e.g., instrumentation, signal processing systems, autonomous platforms. I was dragged into the embedded software development world kicking and screaming about 10 or so years ago. I started off trying to figure out what the "best practices" were and was appalled at the range of so-called best practices. I've been trying to develop a disciplined approach to SW development ever since and am really hoping this class will help. Unit tests, higher level functional tests, benchtop simulators that mimic the ocean in some small way, systems tests in our test tank, test at sea. Various ARM processors, currently developing a STM32H7A3 based system. Not a lot of heavy duty computing but we do need to run control loops at a deterministic rate (usually less than 100 Hz). And we have to interface to a lot of instruments. Visual Studio 11-30 seconds Wish I had some? Anything I wrote when I first started writing serious embedded code 10 years ago is too long. Now my functions are generally less than a 100 lines or so. I grew up as an engineer at a defense contractor where design reviews of all kinds were a critical part of my job. I've been at MBARI, an academic oceanographic research institute, for 25 years and formal design reviews are not so effective. 20 50 30 I think of my self as a systems engineer and need to have some knowledge about and experience with every part of the systems I develop. Well designed and implemented control loops are particularly satisfying. Not having a disciplined approach to software development and not having enough experience at it. I've skimmed your book and watched one of your conference presentation videos and understand the principles. I have a fairly disciplined approach to mechanical electrical and systems engineering. Developing a similar approach to software development has been painful. I'm hoping this class will get me much further up the leaning curve. Show
0 21 C Python, C#, Java CUnit, CppUTest - Unit testing, functional testing. - - Under 10 seconds Based on MISRA-C and the Barr group coding standard. Personally, when it's over a page or two. Done through Bitbucket, all team members are always included, requires a minimum of 2 approvals. 40 50 10 Its creative aspect. Development processes can be a bit tedious. Have used it in the last 2 projects. To learn more about unit testing and get more formal training on TDD best practices. Show
1 19 C C#, Python Unity I am a big fan of Embbedded FM, which is how I know of you. When visiting California I met Elicia for stickers :) Unit testing with Unity/FFF. Tests are generally written after the code. Tests are built into our CI pipeline to be run on commits. We also have Hardware In the Loop testing for integration level testing STM32L5 M33 based hardware; bare metal finite state machine based application; GCC/CMake toolchain; The product is a micro linked to a custom ASIC radio chip over SPI GCC, CMake, CLion, Azure DevOps Under 10 seconds Err, I don't know which standard it is similar to, but we do have a pretty tight spec. We have markdown doc in our /doc folder in the repo with the rules. Sometimes it is a bit arbitrary, but on the whole I like it and it seems good for quality A feeling. No static analysis tools, or even rules of thumb. Not ideal. We generally work in feature/bugfix branches, and then do PRs in master branch. The PRs need to be reviewed by the 2 other firmware engineers in the team. The obvious weakness to me is the lack of focus on "how good are these tests" in the review. 4 2.5 3.5 Simply, building code that does interesting things. I love building a product to do a specific task, and hopefully creating a good design, and bug free implementation. Not always understanding the entire system, and having unexpected factors cause problems. Also, having to be very pedantic about small issues in reviews. I think a reasonable amount. However...! I really want to know how to fit it into what sometimes feels like R&D - how can I write tests before code when I don't know what I'm doing yet, or how I will achieve something? Flexible process? I want to move my team to a point where we are confident about what we are delivering. We are making a module that may never get remote bug fixes, so we need to be very sure about the code we write. I believe you have some great insights into this. Show
23 23 Java Javascript, Python,C++,C JUnit,Pytest,Jest I have 7 kids, former musician. My aspiration is to get deeper into technical coaching. I work mostly in mobs. Most of my coding in my current job is during katas. We use TDD with cyber-dojo. I would like to take TDD katas to the embedded world. The embedded developers in my area do MIL/SIL testing. There also are validation teams upstream who do a combination of manual and automated testing. The area I work in develops Autosar based C code for embedded vehicle ECUs. 70% is model based, 30% is hand coded. Matlab, Embedded Coder, Simulink,BTC Tester, Target Link 1-2 hours There are strict standards based on regulations. I know there are coding stds but I dont have the details. If its more than half a page. Peer code reviews are a mandatory step for all code. They also review models and data dictionaries. 50 25 25 I like the feeing of accomplishment when something works. nothing Worked with it a lot in coding katas. Red green refactor cycle. It has a deep impact on the design of the system. Because I want to become a technical coach. My current job is in the embedded space and I would like to be able to help developers adopt TDD to improve the design, quality and fun in our systems. Show
3 15 C# C++, ASM Unity ( Unit Test (.NET) I love programming, as well as outdoor activities Unit tests, run the code use the device (user perspective) CubeSat VisualStudio, Visual GDB 11-30 seconds Orally defined, not real standards used By its number of lines or when you cannot keep its entire behavior in mind while (re)writing or reading it While reviewing git pull requests (MS DevOps) 50 30 20 There are millions of ways to do it, it's like an art, it offers concrete solutions to real needs and it can always be improved Finding faint bugs (those that "sometimes" happen) It helps developers having great sleep during night (or after programming session) It greatly helps code writing. It prepare your mind Once tests are set (takes most of the time) you "just" have to write code to make the tests pass (easy ^^) To improve my test skills and learn new technique(s) Show
5 14 C Python C# Assembly -Ceedling (Unity) -IBM Rational Test Real Time -An in-house custom framework -I used cpputest when going through the embedded TDD book, but not for real work I started my career as an embedded firmware tester, although I was isolated from the developers and only did unit and integration tests for the product. This gave me a bad taste for unit testing initially, because it was overly mechanical (just write tests to get full coverage). After changing jobs I read your TDD book and it made a lot of sense, and now I'm the "testing guy". I am a fairly careful/deliberate programmer, and I prefer to have a deeper understanding of what I am working on. I like studying new and different programming languages as a hobby (my latest interest has been Forth). I also like studying human languages (Esperanto, Spanish, Mandarin,...) For re-usable/library code I use Ceedling to do some unit testing, but it has been difficult to find a way to use this on our production code. Most SW testing is manual bench testing with a debugger, and integration/system testing in the product. I've used Robot Framework with python to do some automated integration tests on our products, but I would say that the majority of testing is done using a debugger or python scripts. The products I work on are embedded controls for electric motor protection devices or variable frequency drives. We run on bare metal with a cooperative scheduler. Vendor-provided Eclipse-based IDEs and build tools with various debuggers depending on the target. I use python for writing test scripts/tools. I use vim for more involved coding (I use Windows Subsystem for Linux to get vim and other Linux tools). 31-60 seconds My coding standard is pretty simple. It uses prefixes to functions to identify which file they come from, and variables have prefixes based on scope. No globals. I try to keep code modular with a single focus. If it does too many things, or nests too deeply. Sometimes a flat switch-case for a state machine might be long but fairly simple, so it depends on complexity. I use Microsoft DevOps to do code reviews via pull requests with git. Typically I look at diffs if I am familiar with the codebase, or I will look at the whole files more if I am not familiar with the code. 20 30 50 I like solving problems and making things work. I also enjoy making tools to make my life easier. I like the rush when I solve a complex bug (although wish I didn't have to do that as often). I generally like understanding how things work. I don't like the unpredictability and stress associated with debug-later development. I feel like SW testing is under-valued in the embedded sphere, and I see many instances where it would have saved a lot of time and money. I have read your TDD book and sparingly used Ceedling for several years, but I wouldn't really say I have truly used TDD outside of one small project and a few library modules. I want to learn how to apply TDD more in my day-to-day coding, not just for frameworks/libraries. I see a lot of potential to benefit from more testing, but can't find a path to achieve that. Show
1 1 C Python Unity: fff: I did a 6 months internship in Astrocast and one of my objectives was to add unit test to our codebase. It has been 1 year now that I work for this company and I try my best to make the most relevant tests when I add a new feature. We are doing two "types" of tests. Unit tests and Continuous integration tests. Unit tests are done by the Software Engineers when we add some code. Continuous integration tests are done by our Test Engineer. Our application runs on a STM32L5 MCU. We also ported it to x86_64 to facilitate the unit tests. Visual Studio Code on Ubuntu STM32CubeIDE STM32CubeProgrammer Azure DevOps 31-60 seconds We have in our team a file that describes the coding conventions we have. When writing this paper we tried to follow well known standard like: SEI CERT C Coding Standard NASA - C Style Guide Google C++ Style Guide A function is too long when I have to scroll to see everything. Usually we do a PR with several code reviews. We put comments where we want discuss something and when we agree on everything, we accept the PR. 55 15 30 I like the challenge I have sometimes when I am adding a new feature. Also I like to see the product evolving and getting closer to what we will release. I don't like settings up new tools. I feel like it is hard for me to discover something new and be efficient with it. I usually take time to get used to something. At the beginning of my internship I was not familiar with tdd, so I read as much as possible on this subject. I tried to follow those principles but I failed because I was not feeling very productive and it was not very natural to me. I hope I can improve the way I am writing my test currently and maybe learn how to use tdd in an efficient way. Show
8 months 8 years C C++, Assembly, Python, Matlab/Octave. Unity I am a micro-engineer specialized in robotics, and my main area of focus has been the miniaturization of autonomous systems. Therefore, I have a shared background in electronics and in software which I have found to be useful when delving into embedded software. Following my MSc, I have worked for a few years on nano-satellites and have been interested in the development of embedded electronics + software. I have then pursued a PhD in robotics and autonomous systems. Over the course of my thesis, I have tackled the development of integrated control for a small sensorless piezoelectric actuator. I have also had the opportunity to develop automated test environments for this type of actuator. Since then, I have returned to the world of embedded electronics and software by joining Astrocast as an embedded software engineer. After having written a code following a phase of planning, I write unit tests for the code and try to cover the possible outcomes of software units as extensively as possible. Nano-satellite subsystems powered by constrained hardware with space flight heritage (TI MSP430, some STM32 architectures). Used to working against code size limitations, to favoring deterministic behavior, and efficient CPU/memory usage tradeoffs. Git, IAR Embedded Workbench, Visual Studio, Visual GDB, GCC, Logic analyzers, Oscilloscopes, Matlab 11-30 seconds In addition of halving delved into automotive MISRA-C and DO-178B standards, I try to keep to these principles: - No dynamic allocation - Deterministic behavior - Code abstraction where appropriate Generally, a function is too long if it: - Is using logic that is present in other functions - Has control loops / structures that span several levels - Attempts to do more than one thing at once, - Has an unclear purpose They are usually only done when examining pull requests to the main development branch following the development of a feature. 20% 20% 60% I genuinely like seeing complex embedded systems coming together thanks to soundly developed software. I enjoy tackling challenges of code size restriction, execution optimization, efficient memory usage, and execution reliability. I don't like spending whole afternoons hunting bugs that are caused by minute mistakes in code implementation ! I am somewhat aware that increasing testing and appropriately planning for it will greatly reduce the amount of time wasted chasing bugs. It is my understanding that tests should be written before even the code itself, not the other way around. I always feel like there is a lot to learn in this trade, I want to know how to be more efficient with my time. I am also genuinely curious to know if there are possibilities of testing with hardware in the loop. Show
6 25 c python can't remember (Dyson uses unity but i haven't used that tool) I have been mostly working in testing for the past 10 years behave off target testing + on target (+ unity) various m0 / m2 boards IAR workbench, VM, scons, atlassian tools, git 5-30 minutes C coding standard based on MISRA static analysis tools? pull request in git reviewed by 2+ other developers 30 40 depends problem solving myself making stupid mistakes write the test first, then write the code and run the test to see if the test now passes. Iterative I would love to do TDD properly - and find out how much i don't know about it. Show
3 10 c++ c bash gtest I'm an external consultant on Rational as Davidson Consulting. It's my third big project. My jobs until now was always to help the software to grow from bad design to something better Generally compagny I worked don't use unit test. When I'm free I try to use TDD and gtest but I think knowledge are missing to do it right. I work mainly on the gui, so I cannot goes in details about the system. vim, linux command line, tmux... Qt creator to be able to debug it. 5-30 minutes Unfortunately on this project there are no coding standard. I try to tell we needs coding standard. Not easy to answer this. By feeling. More most of the time is when I cannot read them without scrolling down. ON this compagny code review is new, so not so much. On my previous job, I was lead developer, so I introduced code review. OUr quality increase a lot. The time to develop a feature grows by 40/60% but the bug report decrease to 80%. 3 1 6 Thinking to beautiful solution Really developing Going fast Debuging I think it the right way. I'm pretty sure I will adopt it when the knowledge will be enought. Get the answer of questions I have about how concretely doing and apply TDD. Show
1 2 C++ Python, C# GoogleTest Relatively new as software developer but very interested in the process Using Unit Tests to verify that my code still works after changes have been made cooking device with a modern user interface to provide an easy and automated experience for preparing meals in the commercial sector QT Framework 11-30 seconds If I have deeply nested control structures Usually done in gitlab over merge requests 60 10 30 If something was not programmed correctly I can debug it and it can be fixed without dramatically consequences for the production line. I can test the product without big waiting times for prototypes Changes in existing code can be quite difficult if its not your own code The basic concept is to test the functionality of your code base against changes and secure the stability of your main functionality if you add new features to your product. I would like to extend my knowledge about this topic and also to be more qualified for the sw development cycle Show
1 4 C++ Python, C#, Java not used yet 33% Software-Developer + 33% Engineer + 33% Designer write unit tests / QtCreator 1-5 minutes / Deeply nested control structures, display isn't big enough to display it, can't immediately determine the function's purpose i've used Pair Programming, Over-the-Shoulder and Merge-Request to help reviewing codes 5 2 3 make thinking logical debug is always struggle Test-driven development really want to improve my knowledge about testing code Show
3 3 C++ C#, Python None I enjoy listening to audio books. Predefined Test cases. Embedded Linux Visual Studio Code 5-30 minutes - - - 40 20 40 I enjoy problem solving and software development gives me an environment where I can do it creatively. Being stuck at one problem for a long time. Little to nothing. I am joining a new project at my firm and this course is preparation for it. Show
3 25 QML + C++ Python Google Test, 'homemade' Tools My background is the ruelless world of 'C' programming. New tools and methods are well appreciated. As Qt is platform independent, tests by the developer are ususally done in a simultation environment on a Linux Server. That is fast an convenient. Only after successfully testing the code, the code is cross-compiled and flashed onto the embedded target device. Embedded Linux, ARM CPU, Everything provided by Qt (Qt Creator, Qt Designer, QML Profiler etc) Valgrid, Lint, Jenkins, Git, Gitlab pipeline 11-30 seconds - If I as developer can not debug or even understand it. Very new. Not entrenched in mindset. Is seen by some as a hassle. But that is the wrong attitude. Code reviews can not make sure code is error free, but helps with architecture, style and grave mistakes. 70 10 20 Creativity, lot of different companies Often lonely endeavour. Bit nerdish Not much I strongly believe this company needs to double down on testing, otherwise quality of product will never improve. Current focus on features is not working. So I want to be part of the revolution, of putting test much, much higher in priority. Show
1 12 Python Whatever I need qtest, pytest Always interested in learning new things and getting better :) Unittests and AcceptanceTests Qt/QML UI, C++ backend, Python system tests VSCode, PyCharm, QtCreator 11-30 seconds Python PEP8 If I have to scroll a lot between things on the beginning and the rest. And if I have to many branches for the unit tests Currently at least 1 reviewer and the gitlab pipeline. Sometimes also pair reviews. 50 30 20 The range of possibilities we have. Sometimes also the range of possibilities we have ;) When software is some kind of unwanted. red green refactor :D Integration of UITests and wanted some knowledge about the UnitTests workflow. Show
5 35 C++ Python, Javascript, Typescript, C, Lisp, Dart QtTest, googletest, CppUnit Nothing special I am working most on legacy code, try to write some kind of unit tests to prevent regressions. Embedded System, working with C++ / QT / QML QtCreator / gcc / clang (code analysis), git, 11-30 seconds I try to use the coding standard of Qt for the c++ / QML coding. Otherwise it depends on the current coding standards for the module I am working on (can be different) It depends. Generally spoken a function/method shouldn't be longer than 30 lines. We started doing merge requests with coding reviews 40 20 30 Been creative to find clean and efficient solutions for a given problem. Working on legacy code (brown field) without having the chance to make it better. Some basic thoughts about I would like to find a way how to write code up from the beginning in a better shape than now. I would like to get some ideas / tools how to refactor legacy code in an easier way than now Show
<1 7 Qt QML, C++ C Javascript Python PHP Qt Qtest Electrical engineer with an interest in UX and UI Write test cases with Qt Test framework. Yocto based Linux on ARM Qt-Creator Clang-Tidy and Clazy 1-5 minutes Mostly Qt Coding Style as I use Qt-Creator as an IDE - If i can not explain what the codes does in a short sentence - miss red thread through the code Review over Gitlab MR 30 30 40 - Finding a solution to a problem/task. - Way to the solution. - Compile-time. - Debugging bugs, especially those, which are easily overlooked An approach of developing a software Write Tests -> Make test pass -> Refactor -> First, the Company is offering an opportunity to learn about TDD Second, improve my coding skills and use them on a daily basis. Show
0 20 c++ qml, python, html, javascript QTest, custom made I like to make the software scriptable and write test scripts in order to have complete integration tests. QTest, screenshot comparison Embedded linux QtCreator, Visual Studio 1-5 minutes Hungarian notation I don't understand anymore what the function is supposed to do git lab merge request. I prefer gerrit 30 20 50 Creating something new Debugging Not much. Maybe I am using it already but I just don't know the terminology To learn the terminology and concepts of software testing. So I can explain in the right words my testing techniques. To learn new testing techniques. At an interview once, the question was: How do you test a button. I still don't know the answer Show
0 7 C++ C, python, java QtTest I also use QML files for UI display and of course, Qt libraries. Most of testing is done by manual testing. Few unit and integration tests (via QtTest) are written. But it doesn't cover full code. Target system is under UNIX system. We have two main applications (frontend/backend) running and communicating between each other. QtCreator CMake 1-5 minutes New part of code is written in english following camel case rule. Comments are put if reason to write part of code is not clear. I know when a function is too long when I need to scroll in IDE to read it. We use merge request via Gitlab to validate or not modifications. At least two MMI members are put as reviewer. 30 40 35 I like to see the result. I don't like when classes are too much inter-depend, eg when you have to include many header files to develop your feature. Test should be written before implementation. Improve my skill to write tests. How to begin with new feature and how to proceed for correcting bugs? Show
7 13 C++ Java, Swift GoogleTest, qTest Tests with generated test data and recorded data. ? Manual testing, unit tests with qTest embeded linux with touch screen QTCreator 11-30 seconds KISS if it does not fit on my screen anymore - 60% 20% 20% Breaking down problems and implement solutions. Waiting for the code to compile. Unclear error messages. first you write the tests, then the actual implemtation Expand my horizont. SEe how other people would solve a problem. Show
4 8 C++ Javascript, C#, Python Mocha, GTest Over the last 4 years I tried many different programming languages and would say I am still not settled for a preferred/primary programming language. If applicable I try to write tests preemptively after creating a class skeleton/interface for example. As a seconds step fill it with the actual functionality and see if it fulfills the requirements. Embedded Linux Qt Creator, VS Code, Visual Studio 1-5 minutes Best Practises, Static Code Analysis If the function handles multiple logical tasks, that are not moved to own functions. Gitlab merge requests. If required, face-to-face / via video call) 50 25 25 Coming up with new new ideas, collaborative work, forging new functionality together If timeline does not provide the time for refactoring old code or sufficient testing cycles. Tests first, adjust/implement code to fulfill these tests, optimize code To learn more about tdd itself and how it can improve my daily work. Show
17 35 C++ SQL Google unittests, C++ Builder unittest - mostly manual with defined test procedures and unittest Commercial kitchen cooking appliances C++ Builder, DBSchema, QtCreator 5-30 minutes not systematic enough When I have to analyze a function for a long time when there is a need for expansion. rare 50 30 20 Analyze and solve problems. Create something new Requirements that are not systematically prepared. "Request concert" - I want to learn more about common practical methods Show
6 1 C++ python google test I like using new algorithms using small unit tests, debugging code with print-outs Our target consists of three parts of : basis, cooking system&application and mmi running on a linux machine VS Code gitlab 11-30 seconds formatting convention and commenting conventions it's a feeling ;-) guess it start getting too long around 300 lines every bigger change is review by a merge request 30 20 50 it's fun making things work. it's logical. everything is possible. searching errors. trying to understand confusing code not quite a lot. I want to be more effective in coding and write more reliable code. Show
16 17 c, cpp none, just a very basic python ? may be a typical (?) career from hardware developer, via vhdl, to (embedded)software developer testing on the machine using test cases; using logging outputs its a linux machine qt creator 11-30 seconds ? it's intuitively ( :) ); if I can't overview it, if it's too nested, .... sometimes I'll do a review with a colleague 60 10 30 to create new processes on my machine testing just the definition because I'm really interested!! I've never learned how to test software, whats best practice, ... Show
1 1/2 20 C C++ Java Python GTest JUnit Pytest SW Developer, Project Leand and SW Team Lead in many different kinds of project (for a couple of different customers) Highly dependent on the project and on the customer's wishes and needs. -- VS Code Qt Creator IntelliJ 1-5 minutes Highly dependent on the project and on the customer's wishes and needs. For me it's too long when it does not fit on one screen. Highly dependent on the project and on the customer's wishes and needs. 33 33 33 Solving problems and find elegant solutions. Waiting for the compiler to finish. Write a test for a new function, watch it fail, write and rewrite the code of the function until the test is green, refactor the code Interest. Heard a lot about it, but had never the time or the project to really try it out. Show
27 40 c / c++ many years ago pascal / fortran assembler 8051 cores ? i studied communications engineering. After my graduation my first job was in a company which was producing video-tape-recorders. A was designing hard- an software for electronic components. After 10 years i changed to RATIONAL company, as they were recruiting a software engineer working with controllers based on the 8051 core. From that on, i am working at RATIONAL company... i am testing my components either on a Intel-PC, or in a kind of simulation on the target. arm-single-core controller, linux, 2 main processes running (mmi and base), too less RAM, too less computing power,... tools provided by the OS, QT-creator, geany, gdb,... 1-5 minutes ? when i lose the overview we are designing components of the cooking oven. The collaboration in our system is the part, causing problems because in many cases the behaviour of these components cannot be foreseen. The big issue is not the SW, but the system behaviour... 20 40 40 ? missing understanding of non concerned people about the complexity of that... nothing, as there was no need know it. i did not subscribe to that training. (my personal opinion is, that such a procedure might be helpful to develop stable code, but it is not the solution for our main issues...) My boss asked me to do so... Show
10 30 c++ python qml qtest I like home improvement. - manually - some qtest module tests - embedded device qtcreator 1-5 minutes derived from qt examples Screen is to full are in planning to do 33 33 33 - it's not only coding, testing debug but requirement analysis, stakeholder diskussions and finding of best way to implement for customer (so the question above does not fit to reality) - more and more difficult tools and tools to wrap tools - real working together reduces when the team increases - not much - learn something new - it's for all colleages Show
4 17 C++ QML, Java, JavaScript, C GoggleTest, QTest, JUnit If i code more than 8 hours my head gets mushy and the resulting code is bad. Mostly by hand, because big chunks of the code are not testable apart from other big parts. weak hardware ARM device QtCreator, MySQL Workbench, Python- and Bash-Scripts 11-30 seconds Qt Defaults I prefer functions to cover about 1/3 to 1/2 of my (FullHD 22") display. At max the full display. Code Revies must not be done, but for middle to big changes i use them with other experts of this code modules. Usually I tell the colleagues how it should work and they comment. If needed, we do multiple rounds. 50% 25% 25% There is always something to learn and it is very satisfying to make code run more stable and/or faster. Clustering in coding standards/style, bad testability and everything else that makes me invest more time in understanding what existing code is doing instead of woriking on a problem/bug/feature. Wiriting tests before the program code. This means what exactly the code should do in the end must be known to develop a test that can 100% verify the code satisfy the requirements. There are multiple ways how to practically do this in a project. There is always something to learn and it's better if the whole team has the same knowledge input than only a few of them. Show
3 6 C++ python google test and a little bit of qTest Actually, I have studied physics and unfortunately I have never attended to a computer science course. Therefore, I am missing a lot of theoretical background and learned everything from the practical side. I am using google test. To bring the system in the right state and set the needed preconditions is most challenging for me. Furthermore, the test converage could (as always) be improved but lacks of setting up the test. embedded linux with ARM processor QtCreator 11-30 seconds Well.... there have been a few attemps to establish a coding standard in our project (documented on a wiki page). In the last week, we at least managed to integrate teamscale to have an static code analysis tool. If it does not fit on one screen, if it does too much stuff, if I don't understand it any more one week after implementing. I hate long functions. My colleague and me are doing regularly code reviews on the component we are developing. It helps us a lot and it would be great if we have more of it in the whole project. First attemps are made by introducing merge requests. 40 20 40 You see a result at the end of the day. Bug fighting, especially if the bug is not reproduceable I must admit... not much... I heared of it and it sounds really interesting and promising. My boss says so. BUT. I am happy with it since this is my change to get some theoretical background and to use the theoretical skills right afterwards in exercises. This is much better than attending to a talk about TDD or reading “only” a book. Show
2 10 C++ Python, Javascript Mocha/Chai for NodeJS, pytest and hypothesis for Python, only Googletest for C++ <script>alert("I like to break stuff")</script>;" When starting new feature: write Code with public interface, write gtest unittests for "happy path", write some more error/edge cases. If extending existing untested class: run executable on desktop and target. ARMv7 single core with Yocto Linux Visual Studio Code, remote ssh plugin, C++ plugin, Test Explorer UI plugin 11-30 seconds We try to keep it in line with existing code, so it depends on what I'm working on. For new code, i mostly use clang-format and we have some naming conventions Teamscale will complain about it. Without a tool, functions usually get too long when they do multiple things or have multiple depths of abstraction in one place We actually started doing those in the past year. I submit a MR in gitlab and get valuable feedback from my domain-colleagues 50 20 30 I like when software interacts with the real world: when something moves or does something. I don't like to leave work when something is not working. And I hate how systems become complex over time due to added features. I know I'm supposed to write tests first and I know I shouldn't write code that does not satisfy a test. I already tried to immplement some features in a tddish way. The tutorials I did usually worked with trivial examples like "int add_two(int)". I hope to get some experience with tdd that goes further than the easy tutorials you find on the web. I'm not sure I'll use tdd in my day to day work but it can't hurt to have one more tool. Show
3 40 basic c, fortran, lisp, assembler intel motorola, dsp, c++, python, java, whdl, ... spring tool suite, benchmark hardware knowledge, FPGA, WHDL, DSP, Network processor. I worked for teklecom test equipment, medical, rails, big probe for telecom, embedded software google test Linux ubuntu Qt creator Under 10 seconds rational standard teamscale rules git merge request 10 10 40 Developing new features Corrections of issues and regressions made by others nearly nothing I suppose, a good and better way to make tests in Rational workflow Show
8,5 23 c++ shellscript, javascript, java, some python, delphi (long time ago), worked directly with assembler for motorola 68k cpu's, visualdsp++ for analog deviced sharc dsp's, ... cunit 38yrs old mostly manual testing since it's mostly low level hal code that is highly dependant on real world timings/loads.. currently an yocto linux embedded system; running on an single core arm cpu (cortex a15) nothing special; few editors, console, qtcreator, ms vs code, etc. 1-5 minutes ... no real metrics, but when it starts doing subroutines that belong into a separate function/method...usually i try to keep functions below 50-60 loc unfortunately there are none 60** 20 5 ... ... i could write a small essay about what i remember from university lectures about tdd, but to keep it short: first you define/write a test, then you write code that satisfies that test; refine and repeat. improve my nearly non-existant tdd skils (really). i used unit tests on very few occasions, but i think it's a powerful "tool" to improve coding efficency and prevent unexpected behaviour... Show
6 30 c++ Objective C Java Python GTest SW Engineer GTest, Python Test Framework Embedded Linux / Arm QT, Yocto, Linux, cmake, GIT Under 10 seconds - - - - - - - - - - Show
5 6 C++ C, Python GTest Embedded software engineer Since 2m ago, unit test all code changes. Before this, all code was tested manually by SQA team. CPU (ARM Cortex-A15) running Linux Ubuntu v16.04. The CPU communicates with an IO board via a proprietary protocol based on a serial interface (Rs485). VirtualBox, QtCreator, CMake, GTest, QTest, gcc, g++, CQSE Teamscale, Git, GitLab, Jenkins. 1-5 minutes None When it doesn't fit my screen. When I spend more than a few seconds to read and understand it. Started CRs 1m ago with the team. No feedback yet. 80 10 10 Not having to deal with people... Developing code under tight schedules. Increasing tecnical debt. Generating or dealing with legacy code. Followed a 1h course, never practiced. Reduce technical debt. Increase code quality. Reduce release cycles. Simplify branching strategy (towards trunk-based development). Prevent bugs. Show
1 20 C++ C, Python (just a bit) GTest, Catch2 I think I do not fit well (technically not socially) into most large organizations I have been part of so far. I care about (good) deign. I care about unit testing. I care about TDD. I care about clean code. And I know a thing or two about the above (but I still learn a lot each day!) Usually I find very few likeminded collogues, and I find it very energy draining to "swim against the current" in terms of how code should be designed, tested and written and needing to see all the horrible code around me (there are good parts, but generally speaking), feeling helpless to make a change that makes a difference. It depends. If I own it, I TDD. If I don't own it, I try to TDD - but in this codebase, its sometimes actually impossible even to put unit test in place without spending weeks on refactoring. We code on X11, but deploy on an embedded HW. But I don't know much about the actual embedded system. GCC, CMake, Git, MSVCode CLion/QtCreator, GTest 1 day or more What standard? It fails the SRP test (Single Responsibility Principle) SRP is one of the most misunderstood principals (by those who actually are aware of it) in our industry, and yet one of the most important 3 principals of all. I am trying to move my team to use CRs. Its just in the beginning. I still am trying to make them see the benefits. My team is also open to it, so its on track. The rest do not CR to my knowledge. 45% 45% 10% When software is well designed - and it proves its worth. Happens too seldom. I simply enjoy solving problems with software, and I enjoy crafting good software. The need to deal with developers who do not care about good software design. That its the only profession where a manager with null knowledge about it can make decisions that that we need to implement and that make no sense. I practice it when ever I can - but there is a lot of room for improvement - I am experienced beginner if you will. I hope to gain more technics and improve my overall TDD skills in this workshop. I was one of the people who pushed for it. This organization (like most unfortunately) is filled with many good people, that know sh*** about how to write good software. And I will take every opportunity to get better at TDD. Show
2 3 C++ C Python Bitbake (Yocto) None I am a BSP/SDK engineer but still also dedicated to production application code in C++, which is why I am interested in gaining information about writing testable code and testing of the code itself If I test I tested via Python-based scripts which can be run as regression tests Embedded Board based on companys own Yocto-based Linux distribution. Highly resource constraint (Just 1 core and 512 MB RAM which is not quite much for a Qt application) Texteditors for Bitbake/Python QtCreator/CLion for C++ 5-30 minutes No coding standard in place in the company currently If it has a parameter list that is longer than three parameters Only being done on request not obligatory. Mostly just with high-risk features or big code changes 5 0 5 Solving real-world customer problems and developing features with have a customer benefit Being forced to maintain backwards compatibility for a lot of old interfaces. Refactoring or writing "good code" is not as important as fast feature developing in our company Not much, I am really new to it Because some people in my company think it is a good idea to do so. I am not convinced it will help us too much yet especially for the part that I am mostly working in (BSP/SDK) but I am open to it Show
3 40 C C++, Bash, Perl, Python, None Most of my contracts were about configuration and build management not about development. Separate test targets for all public class methods. It's an embedded Linux system based on YOCTO. qtcreator, cmake, cross toolchain generated with YOCTO 1-5 minutes C11, C++14 If it exceeds 50 lines of code. Pair programming for complex parts. 5% 20% 10% It teases my brain. In commercial projects code tends to get messed up over the years. Features seem to be more important than quality. Not enough :-) I want to improve my skills. Build managers should have at least a basic understanding of tdd to define quality gates. Show
1 8 C/C++ Dart with Flutter Framework Python Rust SystemC (For High Level Synthesis) GTest and GMock What do you want to know? Test functionality with python scripts (Black Box Test) Embedded Linux with armv7hf Vim, VSCode, Clang, Git, SVN, Valgrind, CppCheck and more. 5-30 minutes Do not really understand this question. When coding convention is meant: Im trying to fulfill Google Style Guide. When the function does not fit on the screen anymore. Using Teamscale Pre-Commit Analysis Last Review: Long functions with many code duplications in one file with about 5000 lines of codes... 20 30 50 Development is an never ending learning story! Im curious to know how the most things work. Wasting a lot of time in meetings... Write the Test first, after that, write the implementation until the test passes. Not more, not less. I like to have concrete guidelines to do things, it makes the development easier and more straight forward. Show
0.5 8 C++ python bash Qt unit tests Before I joined the company, I mainly developed C++ code in some research project. Currently I mainly develop the yocto project. For the yocto part the test-concept needs to be developed and set up. The target systems I develop for are x86-64 and arm terminal, VS code, QtCreator 30-60 minutes Regarding C++ code I try to stick to the Cpp-Coding Guidelines. As my current work is more or less Yocto I try to keep as close as possible to poky and how things are structured and developed there. In my point of view a function is too long when this function implements multiple tasks and exceeds about 40 lines of code and can be broken down. We introduced Merge Requests and for the project I'm working on we did a lot of pair programming. 50 20 30 For me it is really creative work and developing a structure and a system of code is fun for me. It is a nice challenge get things running. Waiting for long builds I know what it is but never worked with it. To get a new view on how to develop and experience new strategies Show
0 12 C++ Java, C#, Python cppunit Clean code lover In my personal work, I used "cppunit". I usually have a "build configuration" dedicated for tests, that produces an executable for each libraries, this exe runs units tests. For "functionnal tests", Either I used tests projects that link the libraries involved in the functionnal tests, or the final software executable with a dedicated configuration for tests. In the company, I haven't done any tests yet. Linux arm QtCreator 2-4 hours C++11/14 between 5-50 lines is my personal "rule of thumb" Using Merge Requests on GitLab. 6 1 3 Brainstorming about design and architecture. Continuous skill rising. Use of a great framework, having a great software architecture. Code that is so hard to understand that it make me think that the developper has an integrated "obfuscator" in his head. The basics that can be read on Wikipedia. I really think that "tests" are a key point to guarantee software quality. To avoid regressions, to win time in new feature developpment, eventually decrease technical debt ? Show
1.5yrs 7yrs C++ Python, Java, SQL, bash. I used to work with ADA as well. Barely any, I got taught about gtest at school and a bit of tdd as well, but that was only basics in a perfect environment, nothing that could be easily extended to a real world situation (with legacy code). During school, I was working on a private game server for >2k simultaneous players. The team consisted of around 20 people (8 developers and 12 gamemasters). We were adapting its c++ code and database to provide new features and events to the users. I was leading the dev team, planned and worked on low level stuff such as communication protocol between client and server, pathfinding and collision detection algorithms to improve interactions between the world and the users. This project lasted ~2.5yrs. After my studies, I went to the european spatial center in french guiana to work for the software maintenance of the ground segment operations. It mainly consisted of developping ADA procedures that check valves, temperatures, positions of the VEGA and Ariane 5 launchers and all the devices around. The validation was made separately by the ESA and ArianeGroup specifiers, running on the bench, and by specific devices. I worked there for 3.5yrs Mainly with manual tests on the device. We run the software on the actual device, we try the functionality and we then force some issue on the device to check if the degraded branches work as well. We have a few tools made in python to connect and force values on the device so we can simulate issues on the device. Also, in my current job, we are mainly trying to unknit the monolithic software that we have, we don't develop new code, it's rather a cleaning that we are doing within the platform team. We build the product for a linux target, it's a plain, monocore cpu board. we also compile it locally and run it on our linux dev VMs, for testing purposes. QtCreator (CLion soon) Git (not properly used at all by the company, but that's another topic) We are applying a CI pipeline for 2 months now within the platform team, trying to push it to other teams as well as merge requests 30-60 minutes we are trying to apply C++ code guidelines, but the code is so intricated that it's nearly impossible to make it clean, and we have around 25% of the code that is written in german (comments, but also method and variables names) personally : when I have to scroll to see the variable declaration in this company : we are far from having this in mind we had none 40% 10% 50% solving algorithmic problems, finding the best complexity to solve the problem. Developing reusable code. Be proud of what I develop copy pasting things. cmake and devops, often looks like magic to me (things suddenly work or break, you never know). Developing tests first gives you a frame of where you go and what you want to achieve. It's also a way to be sure tests will be developped because no one wants to develop tests when they have finished the product,and companies dont offer time for it honestly, I want to produce clean code, and it's an opportunity to learn how to do it well. I hope to learn realistic ways to do them, not only like at school with perfect situation. How to do it in a pro environment with legacy code and limits Show
0.5 14 C/C++ Java, C#, python, sql, vhdl, assembler, shell google test, junit I'm 39 old. I mainly come from the embbeded/firmware world. I was able to work on several projects for several companies but without having a real test process. I search ever to discover newer things. Currently I don't have really the chance to test my code (less programming for the moment). I mainly did poc and process implementation I am part of the platform. We therefore do not have a real device. But we mainly work on the refactoring of existing common code, improvement of structures currently QT Creator and Clion 30-60 minutes We don't have coding rules by Rational. We use C++11 For me a function bigger as 25line is too long. Currently we use merge request with Gitlab 30 40 30 continuously discover new technology, new language, to bring a project to life. nothing tdd is a method of software development, which involves building software in small steps, iteratively and incrementally, writing each test before writing the source code. But it's all... Learn and improve my code in order to be able to progress faster while avoiding errors Show
1 18 C C#, Python NUnit, MSTest I started my own business half a year ago and work as an independent contractor for various clients and projects Manually 8051, MSP430, Aurix, ARM Cortex-M4, dsPIC33, STM32 Atmel Studio, AURIX Development Studio, uVision, Eclipse, MPLAB, Visual Studio, Resharper 31-60 seconds MISRA, Clean Code Too many lines of code (does not fit into the screen) or to many nesting levels of if-else statemants. Mixing up integration code with operational parts. Fisheye with Crucible 60 20 20 You are never done. There is always something to improve. You are never done. There is always something to improve. Write a red test before developing a function. Make the test green. Change the test according to new requirements (red again) and adapt the function until beeing green. Want to learn to remove the dependencies to hardware and peripherals on embedded systems (mocking) Show
6 6 C/C++ Python, Java NA I have recently become hooked on playing The Legend of Zelda: Breath of the Wild. Build UI and manual test Embedded control unit w/UI Eclipse IDE 30-60 minutes Fairly straight-forward and not too rigid, but based on common practices for C++ When it is out of scope Fairly straight-forward, via Fisheye-Crucible 80 10 10 The art and form of it, plus solving uniwue problems with real-world consequnce The ambiguity behind certain frameworks and processes A little Seems like a good opportunity to learn. Show
3 5 C++ Python,Java,Bash,Javascript None Currently pursing a masters in Georgia Tech Manually MOCU is the UI that interfaces with a Robot DevTools for Javacript, GDB, Valgrind 11-30 seconds CamalCase for functions. Keep it evenly spaced When it exceeds 1000 lines of code or when there is a certain block code being repeatedly used 3 or more times We have designated peer review process 5 3 2 I like that it gives me the opportunity to solve challenging problems and can really make me think updating the documentation None It was offered by my training coordinator and was curious what it was Show
1 22 C# JavaScript, Python, Java, C, C++ XUnit, NUnit, JUnit I like to learn new things. I like to improve my skills and find better ways of doing things. Still rely a lot on compiling the whole application and then testing the changed functionality by hand. We have some unit tests, but not enough to exercise all of the functionality. Split between web apps and cross platform (Windows/Linux) desktop applications that process SAE J1939/J1708 vehicle diagnostic messages. Visual Studio Code (Linux and Windows), Notepad++, Git/BitBucket, Jira 1-5 minutes No real coding standard in place. Attempts have been made to create one but there is often disagreement on what requirements should be in the standard. It's probably too long when it exceeds about 100 lines or the control structures are nested more than 3 or 4 levels in. Code reviews are required. They tend to be done individually by reviewers using BitBucket pull request functionality. Sometimes I think too little time is spent and issues get missed. 70 10 20 Challenging and satisfying (when things work!) Creative outlet. Don't need a lot of physical space and tools. It automates repetitive and mundane tasks in a repeatable way. Tendency for everyone to want to test software as a whole application instead of building confidence through testing parts and integrating. We don't do this when we build cars (and for good reasons). Why software? Basic knowledge from reading on the topic. "Write tests before writing code." I know about unit tests and I think I know what TDD is all about but I'd like a more formal introduction. I don't like that most testing is focused on application level testing only. Show
14 17 C++ JavaScript, Bash GoogleTest, Catch2 Relatively new to team (8 months) Full system-level tests; Developing unit tests Ubuntu, Intel Core i5 dual core @ 2.60GHz, 8GB RAM GCC, CMake, Visual Studio Code, Docker, Bitbucket, Jira, Jenkins, SonarQube 31-60 seconds Code is automatically scanned using several static code analyzers via Jenkins pipeline build, results checked against quality profile rules via SonarQube, all issues to be resolved by fixing code or updating rules It has more than one job or produces multiple outputs Pull request for most changes, typically 1-2 reviewers within our dev team; Static code analysis via Jenkins pipeline for all automated builds, reports pushed to SonarQube for issue tracking and resolution 40? 30? 30? Solving problems and delivering a high quality product that performs as good or better than expected Legacy and 3rd party code that hinders new features, maintenance, and product quality High-level concept To write better code and unit tests Show
1 20 clojure Java Ruby Python C Speclj JUnit google test I'm a pilot yes and client software IntelliJ / IDAE editors Mac Under 10 seconds Clean Code when it does more than one thing pair programming 50 50 5 creative outlet immediate feedback utility sitting in one place all day long lots James invited me and I'm curious Show
1 5 c# python C++ N/A Picked up programming in college and have since highly enjoyed it. Play hockey on the side and enjoy spending time on the local lakes. Currently, all human testing. linux robot VS Code/Studio, Atlassian suite 11-30 seconds Currently using the standard language style guide for the specific language When it has more than one function to it Review code on bitbucket before merging 30 30 40 Being able to solve a problem that may be impossible, or otherwise improbable, without a computer The unknowns you can run into can throw your time estimates off. The testing begins when the requirements begin, so every new code is designed to be tested, and will be tested throughout the life-cycle. To learn about TDD Show
11 10 JavaScript Python, C++, bash Karma/Jasmine, Google Test, Isolator++ I love playing almost any sport. Depends - some manual integration/system test, some unit test. UI for small unmanned ground robot control/status (called MOCU for MTRS Inc II system). Visual Studio Code, Node Webkit dev tools, gdb Under 10 seconds For C++ it exists and is pretty basic and not sure it's really considered too much when coding, but for JavaScript we have a Visual Studio Code plugin for StandardJS (semistandard version) which auto detects various non-conformance issues. When you have to scroll the page more than twice. We use Bitbucket PR feature (or Visual Studio Code) to review diffs, then build if needed, and verify with test steps in a JIRA issue. 80 10 10 It requires detail yet allows flexibility, it's chill, and normally you don't destroy hardware if you make a mistake. System testing (running through our test procedure - manual process). I understand it to be where you write the tests to fail before you write code, then you write code to make the tests pass. I was asked if I could attend, and I need continuous learning points, but it does sound like an enjoyable class and I am always up for learning more to improve my software development skills - I am confident I will learn new things. Show
0 15 Rust/C Python, Perl, VHDL, Verilog, VectorCast, CUnit, cargo-test I enjoy mushroom hunting, Jazz/Folk/Blues guitar, and baking. using Rust's built-in unit-test framework combined with hardware-in-loop test. STM32 micro-controller Vim Under 10 seconds Conforms to Rust standards and practices. If it's not obvious at a glance what the function does, it can probably be written better. Done with Mob Programming, and it's awesome. I highly suggest it. 20 50 30 I enjoy discovering solutions to problems, building circuits which address these problems, and developing control algorithms to make the thing do the thing. The tediously slow process of performing code reviews over e-mail. 1.) Identify the thing. write a robust test. test that the test fails as expected. 2.) Do the Thing. 3.) test it. 4.) if it fails, see step 2. 5.) if it passes, see step 1. 1.) My boss paid for it. 2.) I'm actually really excited to have a boss willing to pay for this kind of training instead of just telling me to google it real quick and then implement it. Show
6 29 C++ Java, C, Perl, Python JUnit back in the day I am primarily a lead Architect on most of my projects. The old fashioned way by brute force and VIM or notepad. CentOS, Ubuntu, Windows, Debian, RedHat, Yocto MS Code, Visual Studio, Eclipse, QT, GCC, G++ 5-30 minutes We mostly Google. When the logic becomes more complicated. General Pull requests in Bitbucket while using Jira and Confluence. 30 15 55 I like learning new tools and creating solutions to requirements. The unnecessary stress and pressure from over zealous managers and stakeholders. When reuse gets more complicated than necessary. I know that TDD can make things easier for troubleshooting and debugging. It also can help minimize issues earlier. It can also help with documentation and technical debt. I wanted to learn a new tool set and perhaps have an opportunity to improve our approach to development tasks. Show
3 22 C LabVIEW, RUST Cargo I work on relatively small embedded systems, electro-chemical sensor devices that measure different properties in liquids. Our team is currently switching over to RUST. Manually. I write tests in LabVIEW. My test software communicates with the target device serially, mainly RS-232 and RS-485. We are currently designing a new line of smarter sensors. Target system will use ARM Cortex-M microcontroller from STM. We will use a BLE module to support iOS and Android mobile applications to configure and monitor our device. Old tools include Code Composer Studio from TI and MCUXpresso from NXP. We will use RUST and Cargo with VS Code as our IDE. I also use mixed signal oscilloscope regularly. 1-5 minutes We have a very loose coding standard for C/C++. RUST has more defined style standards. If it takes up more than a page when printed. In our old projects, code reviews are done in bulk. We have tried Mob programming recently to have continuous code reviews. 50 25 25 I like working on products that sell. It is fulfilling to know someone is using a product that you worked on. I hate documentation. It is a necessary evil, however. Make it fail. Make it work. Make it right. Make it fast. Think of how to test it first. Boss says so. Show
0 14 C C++ Python Rust C# Java CppUnit Google Test ROS I want to become an expert in embedded safety and reliability. I want to have a sound understanding of how development practices affect safety/reliability outcomes. I also wish to become a part of the growing embedded Rust community, and learn how the language can be used as a tool for functional safety in complex embedded systems. Unit testing. On my (Agile) team, adding tests for all new code was encouraged but not required by policy, and there was a large legacy codebase without coverage, so we didn't see the full benefit of testing. Tests were run every commit by CI but not automatically on a dev workstation. I learned about TDD but never got the chance to put it into practice. Previously I have targeted STM32 as well as other ARM platforms, either on top of Linux, RTOS, or bare-metal. I'm most comfortable in vim but I can usually tune an IDE enough to be happy, when needed. I usually use a GCC or clang toolchain. 31-60 seconds We based our C++ standard on Google's, focusing more on code style consistency than higher-level issues. - Whenever it's not obvious how to isolate for testing. - Whenever it feels like it does more than one logical "thing" (I guess this is subjective). - Whenever I have to start counting arguments in the signature to call it. Organized with GitLab using Merge Requests. Reviews required two approvals from team members as well as a successful CI build/test. 40% 30% 30% Problem solving, architecting, implementing new things. Making hardware do things! Sometimes I like debugging, especially when the problem is interesting without being too frustrating. Most of the time I hate debugging. I initially hated writing tests but I've come to enjoy the way they force me to reexamine my code structure -- otherwise I tend to go down an implementation rabbit hole and end up wasting effort. I have read TDD for Embedded C, though it was a few years ago. I read Kent Beck's book years earlier, and I found it useful, but I couldn't quite grok how to apply it to the embedded work I was doing at the time until I read yours. My work signed me up for it! But I'm excited about it because since learning about TDD I've wanted to put it into practice, but haven't been able to get team adoption. Jumping in with a whole team and learning from an expert is the way to go! Show
1.5 35 C++ Python Bash Google Test, Catch2, doctest, Boost Test, Boost.ext.ut, CppUTest I love testing and refactoring! Mainly with doctest and ApprovalTests macOS, mainly CLion, mainly 31-60 seconds It's automated When it does more than one thing None - always pair-program instead 45 50 5 Helping users solve problems When working in environments where release cycles are slow due to lots of manual testing Lots... I really enjoy it. I don't have any experience of working on embedded code, and I've been asked several times for suggestions on how to test there - so I'm really looking forward to hearing what James has to say. Show
4 5 C Python CppUnitest I am a Firmware Engineer. I am very much interested in how to get quality code using TDD. We have a CppUnitest framework, but I don't have deep knowledge of it. ARM Cortex Segger JLink Visual Studio Visual GDB Visual Studio Code Make 11-30 seconds I have our own. It is a combination of some of the Standards which are already out there. I look if anything in that function can be modularise and can that module be used by some other functions. I look for structure, is it following code standards, code make sure there is nothing malicious. I also try to make sure the application code is hardware agnostic. Then I build it myself, load it and make sure the target is happy. 60% 20% 20% Coding Sometimes, build system I am not sure if I know much about it. So, that I can start implementing TDD for the future projects and see if I can apply it to the current projects Show
5 spotty 15 matlab ruby, C, java, vhdl, labview only custom vhdl testbenches, a long time ago I'm an electrical engineer, so I generally hand off my hardware after designing it to our embedded folks. I have programmed my own hardware in C in the past and want to get back to bringing up my own boards. The programming I do now is more scripting to analyze data and so it is generally running right in front of me and I am the consumer of the output, so my eyes are the test. Various embedded MCU's. TI's Code Composer Studio, Altium, matlab 1-5 minutes N/A N/A N/A 1 1 1 The quick development cycle. I don't have to send a design out to get fabricated, I just have to compile it. Its intangibility My understanding is that it's defining the successful outputs of a function before the function is written. And that this approach would lend itself to simpler software architecture and collaboration between contributors. I want to get more familiar with our product's code base and start bringing up my own boards, or at least refresh my skillset for doing so. Show
2 7 embedded C++ python C# Matlab (In the past) a proprietary, eclipse based framework for embedded C++ (I guess derived from JUnit). Microsoft Visual Studio build in Unit Testing Framework. Software development is my passion. In the past, I brought up serial codes for commercial products within an international development environment. Nowadays I am working together with many external partners. We try to set up different stages: 1. Unit tests (e.g. Microsoft Visual Studio Unit testing - but not all projects are covered, yet) 2. Integration tests - right now executed manually we distinguish between stress tests, fault injection, boundary value, and error guessing. Jenkins CI is planned here in the future. 3. Acceptance tests - Finally we have a test report which we can hand (together with the system) to uninvolved people (e.g. Product managers) Depends on the project - most likely a 32 bit ARM Cortex Mx processor. Microsoft Visual Studio Microsoft Visual Studio Code Eclipse based environment Keil uVision 31-60 seconds We are about to integrate the MISRA coding standards, checked by PC-lint (an ongoing process). It does not fit on one screen. (Use a commercially available screen resolution ;)) The external partners have a 4 eye principle. We applied a rule to our DevOps environment. For critical features, there is an additional review. 20 40 40 To see the physical interaction between the real world and our system at the end of the day. The tingle when a new release goes into serial production - bear in mind that software is always faulty. To be honest - not that much yet. I guess I heard about that in theory - but I've never seen a project developed under tdd in practice. The development lead from our daughter division asked me to participate in the course. But I am really happy and keen to learn more about tdd. Show
9 30 C/C++ Perl, Python None I like hiking and camping in the California desert. Run manual tests after implementing a feature. An embedded system to control a conductivity sensor. Eclipse IDE supplied by chip manufacturer. 1-5 minutes No company coding standard. I try to following recommendations by Steve McConnell in "Code Complete" and follow the MISRA recommendations. When it exceeds about 100 lines. Infrequent and incomplete. Performed to satisfy checkbox in a company process. 40 25 35 I like designing an elegant and maintainable solution to a problem. I dislike having to fix other people's poorly written and poorly documented code. Had an introduction to TDD by watch the Clean Coder videos. My engineering director mandated that we take the class. Show
10 18 C Python Matlab none Controls engineer primarily Mostly final testing of functionality and code reviews see Eric Renger's answer. Code Composer ST's IDE 5-30 minutes rules for variable naming, returns, globals, etc. Avoid div by 0s, infinite loops. When I can't easily trace a variable's progression through the function. We review for coding standards as well as for functionality and efficiency, though much of our functionality is tested in system tests. 20 50 30 I like the problem solving aspect of trying to get a robot to do what you want it to do with logical statements. Choosing the right data structure or approach to a problem. Mark gave our team a summary a few years ago after he attended this class. I have read some information, but have not implemented a test system. Relying on system level testing and how a device feels just isn't sufficient. We spend too much time checking for things manually that should be done automatically, and I don't want to have to do those manual checks anymore. Show
1 36 C++ Rust (moving to this as primary) Clojure (for hobby projects, web/react stuff) Lua Google Test Catch / Catch2 CPPUnit Busted clojure.test test.check (Clojure version of QuickCheck -- limited) Rust Test (part of the language) an in-house embedded unit test framework in C++ lots of others along the way I'm the R&D Director and have been doing high-reliability embedded systems since the early 1990s. I joined the company 15 months ago and have been encouraging the team to shift into modern development practices, including TDD, Clean Code, CI/CD, etc... I've been using XP since 1999 (added Kanban at some point, moved from pairs to mobs recently.) I gave a talk at Software Craftsmanship North America 2017. We are using Lua Test to do acceptance testing of one legacy project. Using Rust Test on a starting out green-field project. We make sensors and controllers for sensing properties in water. New systems are built on small ARM M-type processors, many older systems on MSP430. Lots of bare-metal, starting to use a small RTOS. CLion, VSCode rustc, cargo, clippy, etc... 11-30 seconds Rust has an opinionated style checker built in, so we use that. (Team had no standard for its previous C coding.) If it is more than 5 lines long. My preference is to use Mob Programming and code review as you go. 5 5 1 Everything. That I don't do it enough now that I'm in management. I've been using TDD since 1999 (XP Immersion III). This is almost exclusively in embedded systems and is layered with automated acceptance tests. I've read Kent Beck, Mike Feathers and Gerard Meszaros, plus GOOS and a few others along the way. Want my team better exposed and I'm looking forward to getting some insights along the way. (And I'm getting to play SW Engineer for a while, instead of the management gig.) Show
11 28 C python, matlab, php none robotics and embedded software are very interesting, but I also like to get outside, away from desks and computers capture and analyze communication between devices, run system in normal use pattern, run system in unusual use patterns embedded system, robotics, medical device, multiple embedded processors, multiple communication buses TI Code Composer Studio, Keil uVision, STM32 Cube IDE 11-30 seconds list of do's and don'ts for writing C code. usually addressed during code reviews when it becomes difficult to understand what is going on all code is reviewed by multiple software developers, reviewers then meet to go over their comments and questions 60 20 20 I like the process of writing code to solve problems and make complicated systems work in a clear, uncomplicated implementation maintaining and fixing messy code not very much our system needs more automated testing. We are starting a new software development project, so this seems like the perfect time to implement TDD. Show
25 30 C# Java C C++ Python R none Never give up using debugger and printf Xilinx Visual Studio, Eclipse 11-30 seconds whatever works More than one screen page Peer reviews 50 25 25 creativity bugs when it does not work Nothing To gain knowledge Show
20 30 java c, go, objective c, javascript, swift junit, gtest, Golangs standard test system Just another one of the code monkeys at the keyboard. junit, gtest an embedded arm system vs-code, xcode 31-60 seconds Basic standard based on SOLID and googles standard Primarily when it is doing many things and or when it is longer than a page. If its longer than a page it is probably doing multiple things I just can't see it. combination of bitbucket and live (virtual) reviews.i 40 30 20 solving problems, learning new things solving problems Write test, fail test, write code, pass test rinse and repeat Learn new techniques for doing TDD with c. My current setup with docker/gtest/cmake is a bit clunky Show
2 25 c# .net javascript/jquery, angular, ember, c language, c++, jasmine & Karma I have masters degree in Software Engineering back in 1998. My passion in programming leads me along the way, and that is why I have stayed for many years as a Software Developer working in a team environment. Most of the time, by simulating as a user, what are the possibilities. I also utilize the use of Fiddler and SQL Query Analyzer. I know there are built in unit test in Visual Studio like Assert, and in Angular, I could utilize and use Jasmine & Karma. my target system or framework is MVVM architecture. VS Core and Visual Studio 2015 11-30 seconds I have used STIG (Security Technical Implementation Guide) in the past. I like it to be short, portable and table driven. I like writing classes, arrays and have fundamental knowledge in dependency injection, delegates and events. when it is covering the whole screen, and have to use the scroll button to navigate. it needs to be analyzed and see how to enhance it. I pay attention on using access modifiers and data types, and on how memories are being consumed. I like the code when it is readable by other developers not just me. 30 50 20 I like it when we all know what we are doing, why we are doing it, and how we plan on doing it, and setting up goals and meet deadlines, and meet customer demands an high standards. I prefer Agile development, and Scrum methodologies. Waterfall development is tedious. The use of third party tool can be cumbersome when there licensing is involve. Test driven development. Not very much. I would like to learn TDD, and all its ups and downs, and thinking how to apply it with our current technologies. Show
2 10+ C C++, Python, Java JUnit In the past have developed for Telecom switches and Data server Unit test cases IntelPOC UT69000R GCC 5-30 minutes Internally developed C/C++ standard When it goes over screen length Web-based diff/Collaborative review tool 30 60 10 Learning new technologies reading undocumented code Testing as code is being developed To learn TDD practices in C/C++ Show
1 12 Embedded C C#, Batch scripting, Powershell scripting None for SW dev. All Windows based - very little Linux experience. System Testing post releases... RTUs (Embedded Systems): - ARM uCs(Atmel & Siliconlabs) Sub GHz, - Small flash & ram - OpenRTOS & FatFS - GNU ARM compiler (arm-none-eabi-gcc) - Ethernet, serial, usb, zigbee interfaces - Dig In & Out, An In & Out, RTD - RTC, GPS - Simply Studio (Silabs), Atmel Studio & Visual Studio. - JLINK - Wireshark - Putty (telnet) - HxD - Git & SVN 11-30 seconds Consistency and commenting is most important. Treat all internal components in a similar manner. Treat all global components in a similar manner. Provide context in names of components. When it serves more than its original purpose - a function should have a purpose and do little more than that. In general though when it is hard to navigate through the components of a function - it is probably too long. There is usually no time for code reviews. 40 20 40 The ability to design, implement and visualize solutions for various protocols and interfaces in complex systems. - Having to go back and fix issues in code that was written by myself or someone else after a long period. Very little. To learn about the principles of TDD in order to ease and speed up design and development of SW & FW. Show
5 months 4 C++ Java, C none Having only just graduated and started working afterwards left me inexperienced. I am considered new to C++ overall however I can manage to work with it. I am completely new to C and embedded systems as well. I do not. No specific target system. QT for c++ 1-5 minutes functions have conventional names, easy to read. When it performs a lot of actions. A function should be short. we trace the parts we are interested in. 70% 0% 30% I like coding, it gives me a challenge. not figuring out the solution of something, and debugging. A colleague. What I think is that I feel like it's necessary to learn about TDD as it may help finding future bugs, and it helps deliver the software early. Show
1 5 java, c++ python, c, none i love learning new things and code and go to the gym i dont . Qt 11-30 seconds the code must be clean so i try to get my code as clean as possible if it do many things and not a single thing mayeb to trace the code all over 70 0 30 To see my program running perfectly and without bugs is so satisfying errors time saving, and can accelerate your productivity so much so that sometimes you need some hardware for the test but with TDD it is much easier to improve my testing in code and save a lot of time Show
5 30 C Python. Have used Javascript, HTML, CSS, C++, Perl, Assembler and PHP in the past. Python unit testing. Into Scifi and currently enjoying season 2 of the Mandalorian. Bespoke Python test harness over the serial port to exercise and validate the running code via a shell. Manual testing by an experience field engineer. Embedded real-time control system for Oil/Gas sampling system. Keil uVision. Linux 5-30 minutes There is no official coding standard, but I try to keep to Misra 2004. When it is too long and you are unable to understand the functionality. Usually aim for around 50 lines max. There is usually only myself working on the code. 50 20 30 Problem solving. Picking up someone elses poorly written/structured code in order to fix a bug. Test driven development, not that much. To learn something and so I can make my code more reliable. Show
0 5 Python Mostly C and Java, however I have also done a little C++. I have some minor exposure to CppUTest through my internship. In addition I have some minor experience with the python unittest framework through my internship. I am a recently graduated computer engineer. In addition to my interest in embedded systems, I am also very interested in machine learning and artificial intelligence. Outside of engineering I love playing sports, and the outdoors. For most of my personal projects I do not employee any unit testing currently. I do not have a specific target system. I use visual studio code for all python programming. I use gcc from the command line and visual studio code for c programming. 31-60 seconds I do not use a specific coding standard for personal projects. But I do use autopep8 for consistent indentation in python projects. In addition I use CamelCase for larger projects. Generally I would say a function is too long if it does more than a single thing. So maybe we are writing a function to do something numerical, and part of that is matrix multiplication. There should be a function that does ONLY matrix multiplication During my internship there was a CI/CD pipeline on our gitbucket server. Each time a push was made it would run all the tests and then you could review any code changes. The whole team reviewed all pushes to the repository at the end of each day. 6 1 3 I like software engineering because I think there is a creative aspect to it. I enjoy STEM topics and I am also pretty creative so I like how sometimes software engineering can combine those two aspects. I do not like the fact that sometimes programming involves spending incredibly large amounts of time debugging code. My understanding is that tdd shifts the process from starting with writing a function and then writing a test; to writing the test first and then writing the corresponding functionality. Using some tdd made finding errors easier during my internship I am attending the training class because it was offered to me, and I am interested in the subject matter. I found the tdd method useful for team programming efficiency during my internship and I would like to learn more about the methodology. Show
0 30 Swift Started on FORTRAN did C for a while, did just a touch of C++ then years of Java with all types of scripting Perl/shell/html etc. lately Swift and iOS. JUnit, touched Nunit; now focusing on Apples XCT Xcode test. I’m a sailor, a dog person, I’m married to Tracy we have no kids and hope to retire soon. Experimentation constantly Much of the last iOS app I wrote was 90% UI and so it was constantly running in simulator. IOS and Mac. Maybe Mac servers. Cloud servers. Xcode What Unix tools I can remember Xcode simulator and instruments tool Under 10 seconds Hmm, I guess it’s following along the lines of a C based std. but way more wordy than the old days. Heck I just had to fix some misspelled words that broke the Apple compiler so bad it gave the wrong error messages When I’ve got to scroll the screen. I’m currently a team of one. Except on a side project. Pair programming with Lance Kind and TDD.Academy. 80 18 2 Building things. That feeling of dopamine when it all comes togeather on a screen. Trying to remember one thousand details that are only needed for this one little bit of code that will be forgotten as soon as I can get it to work right. Kent beck and others invented it to make my life with code so much easier. If only I’d use it -ALL the time. I’m interested in how an expert teaches TDD and all the extras of a hard domain today. Show
24 46 C++ C, Matlab,bash script (in the past I used FORTRAN, Assembler, Pascal, BASIC) None I studied electronic engineering first and then I got a PhD on robotics. So my education is not on software development. I studied FORTRAN, Assembler and Pascal during my master at the University. Then I studied by self-taught C and C++ and perfected it. Because of this history my C++ skills are not "canonical". My expertize area is on scientific programming and, in particular, in optimization of the code. Optimization is obtained choosing the fastest mathematical algorithms and parallelizing and vectorizing the code. Because of bad experiences in the past I have decided to take this course. I am now mostly working on a 1.8 Mb long code: and I just discovered TDD. I have to implement a testing for this code and learn how to use TDD when I will start to work an a new code. I just test the lines of code I write (trying to do the more exhaustive possible set of conditions) and then I keep the code. I realize this produces, especially on a large software, a code that fails easily and it is difficult to maintain. x86_64 Linux. Code I develop normally needs at least 4 cores to run in real-time (lot of calculations). gcc, cmake and eclipse for C++ (now) 11-30 seconds I don't understand the question. I try to implement a single mathematical algorithm or a single initialization in a routine. But I do not have a criteria. I just know that I do not like to reduce to much the routine length since I found "minced code" difficult to understand. I don't understand the question. Maybe the what follow answers: usually the result of my code are data processing or model software whose results are used on our experiment and/or presented at a conference. I do not have a formal reviewing process. 40 40 20 I like to get a problem from a scientist and solve it with an optimized software. I often get a matlab or a C++ routine and make it run very fast, possibly with more accurate algorithm and results. Re-working many times on the same code (for big changes). This often break the code (now developed without TDD) and the bugs can appear in the worst moments. I only read the googletest tutorial. During an esperimental cruise I got a nasty bugs due to new addition to a code that caused ALL the algorithms, which was running well beforehand, have problems. After asking him, my new software development boss told me about TDD. Show
7 20+ C/C++ C# None N/A Run testcases as a whole project FreeRTOS and Linux Simplicity Studio Atmel Studio Visual Studio 11-30 seconds N/A more than 100 lines N/A 50 30 20 n/a n/a n/a n/a Show
3 15 C++ 11 Typescript; Java; gtest; junit; FitNesse; I am currently working as a Scrum Master with some focus on technical excellence. I like practising TDD. Every now and then I try ATDD as well. Unfortunately I am not writing much code at the moment. But I try to do my best to get the teams running with TDD and unit testing. At the moment our target system are several micro services within an internal IT department. Mostly IntelliJ for writing Code. GitLab for building and deploying the artefacts. 1-5 minutes We try to stick to four rules of simple design. Some clean code principles like only 5 lines per method. Only two parameters. Intentionally naming of variables, methods, classes and so forth. 5 Lines of Code should be enough. We always try to keep our functions only 5 lines long. We mostly try to do Pair-Programming 20 20 60 I like learning new things. With things I mean e.g. patterns, principles and so on. Last week we did a Kata and tried to only write code based on principles like balanced abstraction, step down rule and so on. I like refactoring of code. I don't like to convince people about TDD. I have read some books about it. "Test driven devlopment by example" - "Acceptance driven development by example". And I try to do my best to practice TDD as much as possible. I would like to see, hear and practice how TDD works from an expert. So not only from the books and self educated. One of my first jobs was about writing code for cashless payment systems. I would so embedded C/C++. So a perfect match. Show
1 2-3 C++ C, Python, Perl None I am a recent graduate of UMBC, University of Maryland, Baltimore County We have a suite of apps that can be deployed for simulation purposes on a Desktop PC as well as on our target system. We develop radar detection systems fighter jet and test against that Visual Studio, UltraEdit, BeyondCompare, MULTI 1-5 minutes Honestly, I'm not very familiar with our coding standard as it hasn't been stressed very much in my time here When I have to constantly refer back to previous sections of the function to determine the flow of the function We don't have a consistent for of code review. Sometimes a senior member of our team will review my code, but usually all of our team contributes their changes to a collective baseline and the baseline is tested overall. 15 20 65 I like the challege of breaking down code to figure out what its doing and I appreciate the ability to create code to serve as a solution to some problem. I don't like the opaqueness of testing, where it can become increasingly difficult to accurately determine where things are going wrong. Not very much I'm interested in hearing about another approach to software development, I also hope to increase my knowledge and develop my expertise in software development processes Show
10+ 10+ C/C++ Java Script None I Have more than 15 years of programming experience but I use the traditional method of debugging. Its mainly functional testing by putting the executable directly in the target board and use printf statements for debugging. Its X86 board with stripped version of Linux ( Ubuntu 10.04). The Kernel is 2.29.6. It has the peripherals ( IOs), LAN Port, Zigbee port Ubuntu 10.04 Eclipse (LUNA) for development For Microcontroller Keil5 and for ARM IAR 1-5 minutes Basic Coding standard 1. When you have to scroll the page 2. More than 100 lines Peer to peer code review is done. Another developer does the code review and put comments in an excel sheet. Modification is done based on that and proper comments are placed in the same excel sheet. 40 30 30 1. Seeing the transformation of idea/requirement to a real life solution 2. My idea controlling something real 3. Taking inputs from real world and giving some out put 1. Hectic schedule/Long hours of work 2. Unrealistic requirement 3. Stress Nothing. It is complete new to me. As I said I follow traditional method of debugging. With the older approach, some scenarios are left undetected in lab testing but appear in field scenario. Want to minimize that so that such situation can be avoided. Reproducing/debugging an issue reported from field is quite difficult. Show
2 4 C++ Python, C, JavaScript, Haskell pytest I enjoy programming and especially in the embedded context. It seems to me quite special to be able to program instruments and small devices. I am new to embedded programing and despite its initial challenges, what I have found most difficult is to organize a decent method of working within this domain. Hardware Prototype in loop, trial and error. 8 bit and 32 bit low end Microcontroller based Instrument Control Systems. These in some cases work in tandem with an Embedded Linux based HMI written in C++/Qt. STM32Cube, Viusal Studio Code, Visual Studio, Qt Creator, Vim Under 10 seconds C++ coding standard guidelines If a function does more than one thing, or if it mixes pure computation and IO, I try to separate them. No review process in place. Static analysis tools - not in embedded. 10 30 60 Building Abstractions that lift the semantics of the code closer to the domain of the project. As project size increases, new requirements are brought in - things can start becoming quite complex due to the hidden dependencies they have on each other. I understand its (immense) usefulness and do depend on tests to have confidence in the code I have written. However, I do no know of testing outside of Unit tests. I had a really bad experience on the previous project. I don't want to be in such a position again where my code is so fragile. Needing hardware in loop when programming embedded systems - I would like get out of this. Show
2 5 C++ Python gtest Frustrated about bugs in my code, eager to learn about TDD paradigm. use gtest and gmock Windows Visual Studio 11-30 seconds Write code that is readable and fast When it is hard to follow. Having discussions with several peers. Check in when all agree with the change 40 10 50 Deriving methods to solve problems When code doesn't work, debugging Come up with test first, then code to let the test pass To reduce careless mistakes in my code, reduce time spent on debugging Show
3 10 C/C++ C#,Powershell Google Test I love writing code, I love Operating systems and system level programming. I'm very curios person and I like to understand everything is details. yes Windows Low Level System Programming, Device Driver and System level code C/C++,git,tc, Visual Studio 1-5 minutes I like to use modern C++, use the STL as much as possible. If I have to scroll to see the full function It it is doing more than 1 thing. Code review needs to be reviewed and approved by 2 people. 50 25 25 That I can design and implement something from scratch. Getting the computer to do exactly what you want is awesome. I love solving problems. Having to deal with old legacy systems that I do not fully understand. It helps developing software in small increments and it shortens the time to between writing a bug and finding/fixing the bug. Because I want to learn more about TDD Show
2.5 10 C and C++ Pyhton (novice), Shell scripting gtest - Have programmed for embedded, driver and middleware components for Android/Linux, Symbian and Windows platform primarily in C and C++. - Have written some unit tests using gtest along with custom mocks/gmock, component tests and system tests. - Like to improve testing skills to find better bugs and vulnerabilities - Unit test using gtest (most of new code, some legacy) - Component tests e.g. client/server, COM client/component - Automated system tests using proprietary automation framework. Mostly regression, updated when a new feature changes some system aspect - Manual testing. Uncover more feature specific end-to-end test - Performance and stress testing using industry standard tests for enterprise e.g. LoginVSI for single server scalability Windows on X86 Microsoft visual studio (MSVC++), Trace tools (based on windows event trace logging system), build scripts using power shell, Windows debugger(WinDbg), Wireshark, git 1-5 minutes Mostly uses standard C/C++ coding conventions - Function seems to do much more than stated purpose - Is too big (lines of code) - Has too much nesting (cyclomatic complexity) Code reviews are done using review tools (Atlassian bitbucket), requiring at least two human approvals one of which is generally required from SME. An additional bot "reviews" for build success and automated smoke/sanity tests's success 35 30 35 - Great to design systems - Great to implement systems - Satisfying to make code do expected - Learn new technologies and ways - Understand systems how they work and solve issues (sort of puzzle solving) - Delivering value to customers - Legacy code and maintenance - When new to a complex system in place it is difficult to balance between requirements and efficiency and understand big picture (however it feels good to overcome these and understand the system) - Effort estimation Very little - Name, and that it is different approach where tests are developed early based on requirement unlike traditional approach. These tests are used as sort of specification to ensure code meets the requirement. - Want to see if there are better and more efficient ways of doing tests - TDD sounds fascinating and curious how we can develop tests so early Show
1 4 C++ Python, C - - 1.Using the Gtest framework to write unit tests 2.Automation tests using python and the RobotFramework. - VSCode, Linux based debugging (gdb). 30-60 minutes - 1. The easiest metric to use is the number of lines 2. If the function is performing multiple actions (changing the state of multiple variables, performing multiple calculations, etc.) - 50 30 20 - - That you write a test for the first and then develop the software To gain a better understanding of TDD so I can learn how to write better, more secure code. Show
1 4 C++ Python, C - I am a new graduate hire. This is my first full time job as a software developer. 1.Using the Gtest framework to write unit tests 2.Automation tests using python and the RobotFramework. - VSCode, Linux based debugging (gdb). 30-60 minutes - 1. The easiest metric to use is the number of lines 2. If the function is performing multiple actions (changing the state of multiple variables, performing multiple calculations, etc.) - 50 30 20 - - That you write a test for the first and then develop the software To gain a better understanding of TDD so I can learn how to write better, more secure code. Show
4 20 C++ Java, Kotlin, Ruby, JavaScript Google Test, CppUTest, JUnit I see a trend that most mainstream programming languages are adopting functional programming features into their languages. I'm in the process of trying to learn more about functional programming and think it might be good to use in combination with TDD. I spend most of my time testing by writing unit tests to verify the code under test is doing what I expect. Next I test the code in production to verify it's working as expected when integrated with the rest of the system. Currently writing software that runs on multiple platforms. We have to make sure we can write as much cross platform code as possible so that the same code can be reused on all platforms. Visual Studio, Visual Studio Code, Android Studio, Clang, CMake, Git, Windows Terminal, Docker, Windows Subsystem for Linux 11-30 seconds We try to keep our tools up to date with the latest standards and use C++17. We encourage our developers to use the modern features of the language to improve code clarity, such as using smart pointers instead of manually managing memory. I feel like a good way to tell if a function is too long is if it violates the Single Responsibility Principle. Everyone on our domain team gets added to the code review and is free to comment any suggestions. Two developers need to approve the code review before it gets submitted into main branch. 40 20 40 I like that programming gives us the ability to create so many great things and all you need is your computer. Trying to figure out the root cause of a software bug that is intermittent can be frustrating. TDD is a test first approach to writing software. You write the unit test first before any production code is created. This has the advantage of never having to submit production code without tests and also improves the design of the code. I've taken this TDD class, but many years ago. I think taking this class again will remind me of the all concepts I learned in the past and give me extra insight to apply them better. Show
9 14 c/c++ c#, python, java script, groovy, powershell, java googletest mocha, chai, Jasmine . We have unit tests, component tests and system test. Recently there are more emphasis on unit tests and we have been adding more unit tests. Unit tests runs as part of our CI/CD steps in jenkins during the build. Build is not successful if any one of the UT fails. Windows, Linux, MacOS, HTML5/WebAssembly VS, VSCode with various plugin. Windbg. Under 10 seconds . when I have to scroll to see full function. . 40 20 15 . . . . Show
4 6 C++ C gtest and gmock I am fairly new to Object oriented programming and part of a team which is tightly coupled with MS subsystem. I am part of protocol team as well which is predominantly client-server architecture both on the same machine as well as over the network with multiple components (named pipes, network socket, COM etc) Wherever possible and wherever there's an ROI, for all new code, we write unit tests and legacy code predominantly gets tested at system level Target system is Windows 10 or 2016 VDA connecting with a client (windows, mac etc) and running along with multiple components in the middle interacting with each other at various times. Visual Studio, Sublime 30-60 minutes Beginner with clear and readable code. Keeping code as simple and efficient as possible. Write a lot of comments where ever possible. When multiple independent operations are clubbed together Looking at working as well as readability of code along with avoiding static analysis errors. 5 3 2 Amount of learning involved and how designs and concepts are so beautiful. Gives the jitter on anything new that I take up. Best thing is, we can work from anywhere :) I love the variety of things that can be done. sitting in front of the computer all day :) Writing code with testability in mind, not just writing tests before writing code To learn and adapt wherever possible and wherever it makes sense to invest Show
12 since 2005 C C++, little bit of python and C# googletest I prefer to follow a pragmatic approach to software engineering and development, exploration and experimentation. mix of automation, unit test, component test and manually. could be linux or windows, simple or complex deployment VS Code, Visual studio, git bitbucket 5-30 minutes short functions, no global variables, simple solutions and code obvious to understand nested control structures, duplicate code, unnecessary overhead, having multiple responsibilities, depends... Understand what problem this code change addressing and how. Flow of the code and data. Avoid or minimize use of global, local variables. Error handling, resource cleanup, return values and parameters to functions, their time etc. 40 20 40 Problem solving, to be able to synthesize thought/idea to real world code. too much context switching Write failing test case and let it fail, then write the (production) code that makes it pass. I am convinced with the value and importance of Test driven development. To consciously develop the mindset needed to apply TDD skills in every day operations. Show
2 19 C++ Python, Go, C Unity, GoogleTest Wes Montgomery is my favourite guitarist. GoogleTest - I have unit tests integrated in some parts of some projects, but an uphill battle to incorporate it int Mostly XMOS MCUs or embedded Linux targets. gcc, vim, CMake 1-5 minutes Working towards adopting and formalising one More than two screens. Many of them are too long anyway. Upsource - we have a language-agnostic set of acceptance criteria 30 30 40 Working through obscurity and indecision to develop a working, well-crafted system is really satisfying. Gumption traps are acutely painful. In principle, it structures development activity as a short feedback loop within a rigid and supportive mental model. In practice, it tends to encourage implementing programs as assemblies of implementations-with-interfaces. When I've been able to use it (i.e. in C++), it's been a really satisfying workflow. I want to discover good ways to introduce it into C-based development, and to gather ideas for adapting legacy code so that tests can be added. Show
4 20 C++ C, XC (for XMOS), Python, bash, Groovy Googletest Probably the thing about me most pertinent to this training is that I largely work with what Michael Feathers refers to as a large legacy codebase. There are a number of ways and it varies. New code is generally developed along with unit tests - these run as part of the build on the CI system. The unit tests either run the code natively on Windows/macOS or use a simulator for hardware specific functionality. There is an automated test harness using real hardware for end-to-end/integration tests. We have some great QA engineers who do manual testing and who develop automated tests. I do some manual testing while developing the code. I work with a legacy codebase and some of these testing methods have been relatively recently adopted - a lot of code is not under test... USB, XMOS processor, audio, real-time. VSCode, git, XMOS toolchain (including XGDB), xTag debugger, GoogleTest, lots of bash, Beagle USB analyser, Jenkins, Artifactory, YouTrack, make, cmake 31-60 seconds We're currently discussing coding standard across the company - there isn't one currently in place. I feel like I could look this up and give you a technically correct answer. In practice, a function is too long when I can't keep all the context in my head, or when it does more than one thing, or maybe more than 50 lines. It varies. Code reviews vary from meetings to discuss the approach taken to fix a particular issue to using UpSource or using merge requests in GitLab. They vary from project to project and the availability of appropriate reviewers. 20% 20% 50% Building things, getting things done, problem solving, helping people. Feeling there is not enough time / resourcing. I have heard about it on podcasts, I have read a couple of books, I used it in a project (which went well) and I enjoyed the rhythm of TDD. I first heard you (James Grenning) on the podcast, I have your book, I have used TDD before (it went well and I would like to use it again) and I want to learn how to use TDD more effectively. It should also help management buy-in. Show
4 7 C++ C#, C, Python, Java Jenkins We mainly use C++ at work, but this is my least used language used in school. A lot of our effort right now are expanding our unit test support, so I figured this would be a great opportunity to learn more about C++ and testing our code. Run scripts through Jenkins each night. N/A Eclipse 1-5 minutes Well defined. The code is the main reference for coding standards but we do have documentations somewhere.... Usually when you have to scroll to see the what the whole function does is usually a sign to start breaking the code out into smaller methods. This is very situational though, sometimes it's hard to avoid. Usually one on one meetings stepping through the code. Sometimes we have larger groups (around 5 people) stepping through each line. 4 2 4 I love problem solving and challenging my brain. Documentation/Commenting. Setting up an environment. nothing! I just finished college and looking to expand my knowledge and contribute more to our team. Show
0 8 Matlab/C C, C++, Python, C#, Mathematica I don't know their names. I'm a GNC software engineer, so my primary IDE is Matlab. I'm interested to see how what you teach transfers to that environment. There is an existing unit test structure in the C code, but nothing implemented in Matlab. My target is an autopilot. Matlab, Visual Studio Code 1-5 minutes There is no written standard, I try and keep things as simple and consistent as possible. If a function is doing more than one thing (within reason) then it's too long. I'm less focused on length and more on content, but I think being focused on the latter has a tendency to control the former. They are good-natured and useful. Sometimes the points are pedantic but I would say they are useful more often than not. 50 10 40 It's the laziest form of building you can do, and I love to build things. Working with legacy code. I think the point is to write tests first and then write code only until the tests pass. It's required by my work. Show
5 3 C Python Working on C++ None in practice - have seen Unity and GoogleTest I'm a electronics and firmware engineer - I do a split of hardware and software work, the software stuff has come in more in the last 3 years. I also do quite a lot supporting DevOps activities in the teams. Verifying behaviour using memory-watching while stepping through (with code running on the target), logging trace events, and functional system testing on the hardware. STM32 Cortex-M devices (M0 through to M7). Starting to work with Espressif ESP32 devices (Xtensa core). IAR Embedded Workbench, VS Code and CLion for IDE / text editing etc. GCC and IAR compilers. Segger J-Link, IAR I-Jet hardware debuggers. 11-30 seconds Be consistent and fit in with what you observe of the standards already in the codebase. We don't have anything formalised! When I can't keep track of the mental model of what's going on anymore, or it becomes obvious that the function is handling more than one job. We peer-review design documents as part of our process. Code reviews are initiated by the code author when they feel its needed (which happens for maybe 10-25% of the code). 40 10 50 It's open-ended, there's the opportunity to be creative. There's a craft to it - you can go a long way further than having code that functions as required, and have code that is transparently written, reusable and efficient. It's open-ended, and the number of techniques, design patterns etc can be overwhelming! It's hard to estimate time. It's hard to estimate how powerful the target CPU needs to be! It's an extreme programming concept. It's related to but not the same as unit tests. You write a failing test first, then make it pass. I want to get a practical start in writing unit tests, and get better at preventing bugs. If the process of TDD is a good way to do that, I'm up for it! Show
0 1 C# Python, JavaScript, HTML None Recently completed a 14-week intense full-stack coding bootcamp that focused on Front-End, Back-End and Database in Python/Django, C#/ASP.NET and MERN. I haven't I don't have one Visual Studio Code, the Internet Under 10 seconds n/a n/a n/a 0 0 0 I like building out the application, little by little adding features and getting them to work successfully and creatively and then finally having a functioning program that can be seen or interacted with on the user side. Not knowing how to approach something or wrestling with errors once I've written code and can sometimes spend hours trying to fix it. Just that it stands for Test-Driven Development and that it seems extremely tedious but necessary to vet software for complete viability. First, because of a referral through Tom Stanton. Second, because I feel that I can't have too many tools in my developer's arsenal. Show
1 39 C Python CppUTest My company serves various retail industries in IoT. Earlier I worked for a German safety equipment manufacturing company to develop gas monitors for about 25 years. I enjoyed studying & using Humphrey's PSP there to gauge and improve my work quality. I've also enjoyed reading about TDD through your book. I used CppUTest on the job a couple of years ago for testing MSP430 C code, on target via a simulator. We test using manual device and system tests. It's a small portable embedded IoT device built with a commercial RTOS on an ARM M0+ chip. It senses the world and reports data periodically to a server. Low-cost hardware is a primary project driver. a tailored eclipse with gcc-arm-embedded toolchain, plus Msys2 and Gcc on dev box for unit test. GitLab Runner. 1-5 minutes none looks longer than a page or does more than one job nada 25 25 50 challenging myself to always learn something new, and to find good, simple solutions to common problems there's too much variety and churn in development systems, languages, tools and methods have read and used your TDD for embedded C book & Michael Feathers Working Effectively with Legacy Code, yet I still have trouble believing I'll ever write tests first before code. I'd like to learn better methods for setting up unit testing frameworks and approaching testing legacy code. I'd like to be more sure and have less pain in future projects. Show
7 14 C Python, C#, C++, assembly, VHDL none Fan of open source. Self-constructed test wrappers. Linux PCs, embedded Linux, bare metal git, make, vi, ssh, llvm/lldb 31-60 seconds POSIX, Linux kernel guidelines, Google, NASA When indentation gets too deep Line-by-line, three or four participants, over audio chat. Alternatively done through GitLab. 40% 20% 40% Automation, getting a task done in an elegant and well-documented way. When requirements are unclear. Dealing with finicky hardware. Very little. I'm interested in making use of existing test frameworks that are more powerful than what I construct by myself from scratch. Show
0 10 C++ C, C#, some Java (but rare). I've messed with Bash scripting, Batch scripting, and Perl but I normally have to google what I want to do. Microsoft Test Manager in Microsoft TFS - very long time ago. I enjoy embedded development very much and am eager to take this course. Also spend my free time learning an instrument (guitar). New to company, they use CPPUnit. Past company we tested per requirements on a hardware rig, then we had a validation/test group that did formal testing, using custom scripting / hardware to exercise the software. It was for aviation related equipment; so we had to have a validation group certify the code and package it up to get sent to the FAA for approval. Lots of custom tools used to test that stuff. ARM Cortex M3 chip. IAR compiler, Cygwin, CppUnit 11-30 seconds Mainly follows MISRA 2012 standard. Based on what ever the coding standard states. If I remember correctly they rather you limit functions to 50 lines. Done using Jira and Bitbucket. 60 20 20 I enjoy thinking logically, and writing software. I believe makes you better at analyzing problems. If you're not proficient with pointers, you're in for some headaches. My last job, the software was large, it took up to 30 minutes to build from scratch. Once built, changes normally took 30 seconds to a minute. The book has a bee on it. You write the testing code before the application code. Firmware group wants everyone to write unit tests. I was hired on, and they said they do this. So now I'm going to learn how to do it. Show