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?
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
19 19 java C++ JUnit I love both cats and dogs! (Note: Working on incremental enhancements to a "legacy" system and with work that's ramping up - that's why the % of development activities below may seem really skewed). Using a custom embedded unit test harness, after the code is written (I'd like to change that!) Embedded, size constraints Eclipse 1-5 minutes Minimal, coding standard "by example" (supposed to be based on what Uncle Bob suggests in Clean Code?), so nothing enforced in an IDE There are probably several different signs. One is when unit testing, there are several different disparate outputs and output paths - in other words, it doesn't do just one thing. We've been having working meetings over video conferencing SW where the SME goes over the code with those less experienced and also makes changes. Also, we're looking at tools that integrate w/ our ALM tool for more traditional, reviews. 10 80 10 It's exact - given input(s), you get expected output(s). Sometimes (often), work takes more time than anticipated. A good amount - I've used it in the past when I used to develop web applications and desktop applications using Java. I've also taken some informal training on it (non-embedded, non-C++) and it was covered a little bit in a CS graduate course. I want to learn how to do TDD in an embedded setting and bring back the ideas and knowledge to my team. We are currently using a custom harness that's HW-dependent. I also want to learn about TDD for C++. Show
8 16 C C++, Python, Java, C# Custom unit test harness loosely based on junit I started my career doing mostly HDL but have moved now to mostly doing embedded software. I enjoy the faster turn around for software. CI testing using Jenkins. General unit tests for non hardware dependent code. Hardware unit tests running on hardware with PC commanding the tests using python scripts. Integration tests running on hardware as well. Several embedded systems communicating and performing various different functions. It is a high reliability environment. Visual Studio Code, Green Hills Software 11-30 seconds Usual formatting of header and cpp files, naming conventions, etc. Generally, when it is trying to do more than one thing, but there are certainly exceptions. We use Gitflow and require at least one other team member to review and approve pull requests before they are merged into the develop branch. 20 40 40 I like debugging complex issues in embedded systems (race conditions, hardware problems, etc.). I typically like writing drivers. Many devices have poor documentation. I know the principles behind it and have tried it occasionally, but don't use it regularly. I'm curious to know how to better apply tdd to embedded systems. I've run into problems applying tdd to embedded code and I'd like to know if there are some other ways I can apply it to provide value. Show
2 5 c++ c python custom I enjoy being outdoors as much as possible this will vary based on what I am testing, but usually with our test suite. mostly custom Green Hills Vivado 31-60 seconds custom if it does more than one thing and is hard to follow code reviews are typically done with Git pull-requests reviewed by other team members 40 30 30 I enjoy seeing it run after lack of social interaction Write a failing test first and then write the code to make it pass I would like to see how to utilize TDD with embedded software development Show
3 42 Clojure Elixir, Elm, Java (but it's been a few years for Java) Just about everything for any language I've programmed in in the last 20 years :) I'm a professional hypnotist and studying Hollywood level film production I almost (99%) always use XP style TDD sometimes use ATDD (depending on the project and tools available) Mostly web, some XR devices and mobile JetBrains IDEs mostly Under 10 seconds I typically follow the languages idioms and standards but I'm very flexible (having been a consultant for decades) It does more than one thing Pairs > Code Reviews 45 55 0 The pure joy of creation. Solving a problem for a users. Flaky tools and dependencies I started doing TDD in 1999 when XP Explained was published Learn more for LeanDog partnership. Have fun writing C (which I haven't used since the 90s) Show
<1 10 C/C++ Java, Python, Assembly, MATLAB Dont know if i have used any. I am fresh out of school and just started here at Sandia within the last 2 months I am a fresh graduate of the Georgia Institute of Technology with my Masters in Electrical and Computer Engineering.I have been programming since i was in high school where i learned Java, but i have spent the majority of my coding carrerr working in C/C++ languages (which frankly i enjoy more anyways). I know how my code should react given a certain input so i simply input the causes i already know the answer to and verify that the outputs received are what i expect I typically deal with low power and resource embedded systems So far i just use and IDE to assist with coding styles but other than that i do not use any other tools. (Compiling and other tools are used by senior members of my team.) 1-5 minutes I typically follow a very academic coding standard with commented documentation. Being new to professional development i as still learning how professional may be different than what is expected of students For me it depends on the system we are developing for. Embedded systems have very limited resources often times so function call overhead cannot be too large so functions can be quite long. the opposite is true for less resource restricted systems. I haven't been a part of an official code review yet in my position. Any code reviews I did in school were more focused on getting code working than making it more efficient or better overall. 50 20 30 The challenge that comes along with using a rudimentary set of tools to accomplish complex tasks, its like using simple machines to create complex machines to accomplish a task. The number of hoops it seems we have to jump through just to develop code. It could be compilers or debugging software there are just too many additional things needed to even run basic code (outside of Linux) Nothing this is the first time im hearing the term I am new to professional programming and want to learn as much as i can so i can be as useful to my team as i can be Show
1 40 C++ C, Ada, perl, a little Python, java home grown, Jenkins previously worked on real time embedded systems for defense avionics current project has continuous testing; previously with unit test, integration, verification, validation; incremental development and integration Zynq based with no OS and with Linux Green Hills, Linux, Xilinx SDK, git, Jenkins, Visual Studio Code, Tera Term, Beyond Compare, PuTTY 1-5 minutes develop software similar to existing software when it doesn't make sense or tries to do more than one thing; should not be longer than 20-30 lines; I know the answer is supposed to be no more than 4 lines informally review code before integrating into development branch; formal reviews later 30 30 10 It's creative and therapeutic. It's fun to solve problems, make things work and help others meet their goals. paperwork, schedule crunches, sometimes poor communication some from watching the clean code videos; write a test that fails before writing the code; our team is incorporating tdd I like the concept, I like to learn new approaches and would like to learn to do TDD effectively Show
0 20 C C++ Homemade, havent used external tools Software Engineer C/C++ homegrown unit tests NA Visual Studio 11-30 seconds NA When it starts doing more then one thing, length doesnt matter Peer reviews conducting via tool capture 5 5 1 Building something from nothing and hopefully never touching again The contant tool changing Think have been doing it naturally over the years. Never had name for it, seems more like common sense? Get better ideas on testing Show
10+ 14 C/C++ for work Rust whenever I can CppUTest, built-in Rust harness I enjoy reverse-engineering and troubleshooting With CppUtest, automatically run on compile and every pull request. Bare-metal ARM, Embedded Linux on ARM, x86_64 Linux desktop-class Vim, CMake, CppUTest, Jenkins, Bitbucket, Fisheye/Crucible, VSCode Under 10 seconds It's documented, but not automated. When I have to scroll pages to see it all Uses Crucible or a Bitbucket PR, usually goes on for too long, or no activity 30 40 30 Solving problems, learning new concepts, getting to the hardware. Rust People's opinions that they way they did it 20 years ago is the only way to do it or that their experience is automatically more valuable and more correct than a younger developer. Also the C/C++ development ecosystem w/r/t dependency management Read the TDD for Embedded C/C++ book, employed a form of it on a project. Easier to understand the theory than putting it into practice. Enjoyed the book, think there's value in the approach and opportunity to have a better understanding to share with others. Also need more continuous learning points this fiscal year. Show
<1 3 java python, C#, little HTML/CSS N/A i like to play/watch basketball by doing my own little small tests, pass and fail tests. N/A Momentics IDE Eclipse IDE BitBucket Github 31-60 seconds My coding standard is when a issue is solved with the most efficient code. if there is a lot of repetition in a function, then i believe it can be cut down and simplified. i have participated in one code review session. it was as a group with 6 or 7 people. good discussions happened on how/ or why a piece of code was done 65 20 15 i like developing software, because something that i made to help solve a problem or issue a customer was facing. its very collaborative as well, asking questions how things should be done,, sharing ideas to solve an issue Developing software can be stressful, if you don't how implement a function or method, or if you don't know what the cause of a particular error is. I am aware that there is a particular cycle you have to follow to do TDD part of training for work Show
19 20+ java c/c++, some asm, some vhdl/ada, some python Junit mostly, some gtest, a little bit of unity and cpputest at one point. In my day job got caught up in a role that is more project management or technical oversight early on and feel like I have not had a lot of hands on coding day to day to build the kind of skills I think I should have, so I feel a bit rusty. I try and do embedded system project on my own time to get a chance to do more embedded development. Outside of work I try to use a unit test framework and I try and employ TDD. I have done the most TDD with Java and Junit, but try to use it when I can. Professionally I try to encourage our org to move in that direction more when possible but I am not directly coding very much as all there. Professionally our organization see's a wide variety of targets from enterprise servers to low level micro controllers of various types. Outside work: various microcontrollers from 8-bit atmels to 32bit arm and regular x86 architecture, Cortex-M0 tend towards lighter weight tools and command line, IDE wise I have used various including eclipse but trying vscode these days, jtag tools and compilers variants depending on specific controllers, mostly gcc based. 1-5 minutes Professionally it can vary since varied projects that come form outside sources we don't always control, sometimes misra based. Outside work I don't adhere as well as I could but often look at google's C++. Have not used more formal metric based methods, more intuition based on having function purpose and input/outputs focused. Professionally it can vary by project, generally a developer reviews offline with guidance on hat to review, some tooling such as bitbucket and to make them more tool based. ideally trying to apply more continuous integration based. 40 40 20 Problem solving, making embedded hardware do something, enjoy low level register In day job the work is bogged down by organizational red tape, but that not specific to software in general. Basic concepts and why it makes sense for me, but less practice on the specific technical approaches for embedded and related unit test strategies, no formal training/experience. Want to see if this class would be useful for our organization as I try and inject more TDD mindset, also figure I can pick things from a more formal class that I did not get from self research, etc. Show
15 25 C++ Python, C Python unit test framework Like hiking in the mountains and baking Unit test, integration tests, system tests, stress tests ARM 9 GreenHills Under 10 seconds not overly strict, but should conform to overall standard when it's hard to get a sense of what it's trying to do by the time you get to the end of it code reviews on pull request 45 45 10 Imagining a capability, figuring out how to make it work, and then implementing it in code Working around hardware issues 1) It's a great idea to do since the focus is on testing which is always a good thing. 2) It's not as straightforward for embedded programming as regular software programming. To learn strategies for doing embedded TDD and embedded testing in general. Show
1 35 C C++, Java CppUTest Past experience included embedded software for large devices like routers as well as IOT with the IOT devices being my introduction to CppUTest. CppUTest is also used at my current job. Since I started this year I am spending more time writing code and less time debugging code on existing projects than usual. I start debugging and testing by loading the code on the hardware, running it with CLI commands or instrumented code that exercises the new features. After that we use CppUTest for unit test and also lint the code. The unit tests and lint are run automatically when a feature branch is pushed to the git server. Typically a fairly small MCU ranging from an 8051 to single core ARM with integrated peripherals as well as external SPI or IC2 devices. IAR, Kiel, GNU toolchains. RTOS varies from bare metal to Yocto Linux with small or no RTOS being more common. Under 10 seconds A combination of Barr and MISRA rules enforced by Lint. When I lose track of what the function is doing part way through it. It is hard to assign a LOC number since that depends on coding standards and how the function is structured. Two approvals are required before code can be merged. The reviews are typically very through. 50 20 30 Solving problems and challenges due to the complex nature of the task itself or hardware limitations. Figuring out why a piece of code is not behaving as expected. Time consuming and rigid procedures and processes. I have used unit test both at my current and previous job. Typically as a way to thoroughly test code once it has been debugged or to make sure it is not broken in the future, not as a way to debug it. While I have used and am using unit test I feel I am not taking advantage of all it can do. The other developers here have taken this class and I want to make sure I am on the same page. Show
1 35 C C++, Java CppUTest Past experience included embedded software for large devices like routers as well as IOT with the IOT devices being my introduction to CppUTest. CppUTest is also used at my current job. Since I started this year I am spending more time writing code and less time debugging code on existing projects than usual. I start debugging and testing by loading the code on the hardware, running it with CLI commands or instrumented code that exercises the new features. After that we use CppUTest for unit test and also lint the code. The unit tests and lint are run automatically when a feature branch is pushed to the git server. Typically a fairly small MCU ranging from an 8051 to single core ARM with integrated peripherals as well as external SPI or IC2 devices. IAR, Kiel, GNU toolchains. RTOS varies from bare metal to Yocto Linux with small or no RTOS being more common. 11-30 seconds A combination of Barr and MISRA rules enforced by Lint. When I lose track of what the function is doing part way through it. It is hard to assign a LOC number since that depends on coding standards and how the function is structured. Two approvals are required before code can be merged. The reviews are typically very through. 50 20 30 Solving problems and challenges due to the complex nature of the task itself or hardware limitations. Figuring out why a piece of code is not behaving as expected. Time consuming and rigid procedures and processes. I have used unit test both at my current and previous job. Typically as a way to thoroughly test code once it has been debugged or to make sure it is not broken in the future, not as a way to debug it. While I have used and am using unit test I feel I am not taking advantage of all it can do. The other developers here have taken this class and I want to make sure I am on the same page. Show
1 35 C C++, Java CppUTest Past experience included embedded software for large devices like routers as well as IOT with the IOT devices being my introduction to CppUTest. Neptune also uses CppUTest. Since I started at Neptune this year I am spending more time writing code and less time debugging code on existing projects than usual. Typically I start debugging and testing by loading the code on the hardware, running it with CLI commands or instrumented code that exercises the new features. After that we use CppUTest for unit test and also lint the code. The unit tests and lint are run automatically when a feature branch is pushed to the git server. Typically a fairly small MCU ranging from an 8051 to single core ARM with integrated peripherals as well as external SPI or IC2 devices. IAR, Kiel, GNU toolchains. RTOS varies from bare metal to Yocto Linux with small or no RTOS being more common. 11-30 seconds A combination of Barr and MISRA rules enforced by Lint. When I lose track of what the function is doing part way through it. It is hard to assign a LOC number since that depends on coding standards and how the function is structured. Two approvals are required before code can be merged. The reviews are typically very through. 50 20 30 Solving problems and challenges due to the complex nature of the task itself or hardware limitations. Figuring out why a piece of code is not behaving as expected. Time consuming and rigid procedures and processes. I have used unit test both at my current and previous job. Typically as a way to thoroughly test code once it has been debugged or to make sure it is not broken in the future, not as a way to debug it. While I have used and am using unit test I feel I am not taking advantage of all it can do. Also, the other developers have taken this class and I want to make sure I am on the same page as they are. Show
0 5 C/C++ Python Not sure My current job is my first job out of college. I have done several co-ops in the past mostly related to hardware testing. During the first couple of years of college, I was initially more interested in hardware (PCB design, schematic design, etc) but found that working with software is much more interesting to me. This current job is my first job that is primary firmware/software work. Run unit tests and acceptance tests. My main target systems are mobile printers. VMare Player, PyCharm, QNX Momentics, Notepad++, TortoiseSVN 1-5 minutes I haven't been shown specific coding standards but I usually follow the style currently in the code I work on. When it starts to perform functions that is outside of its intended scope. I haven't done much code reviews yet. My projects either have not been code intensive or have been developed in a pair programming manner that did not require a code review. 10% 20% 80% I like the creative part of developing software. There are a billion ways to write the code that achieves the same goal. The fun part is figuring out the best approach. I dislike dealing with confusing/broken development tools that slow down actual development. I don't know too much about test driven development. I have covered it briefly in my software engineering class in college but that was about it. I know a little about unit and acceptance tests. I was required to attend this training class for work. Show
1 5 C JavaScript and Python Jest I have been working as an embedded software developer for almost one year, using Node.js and C. In my previous job, I designed PCBs and developed firmware for microcontrollers using C. Since my last job, I was looking for implementing agile in hardware projects; that's why I got interest on this training. Using Jest to perform unit testing Embedded devices running Linux for streaming applications, commonly using C/C++ Visual Studio Code, Bitbucket, Node.js, Jira, Azure IoT Hub 1-5 minutes In my last job I started to use SEI CERT C Coding Standard When it is performing a lot of tasks not related directly to the intended functionality. Also when I see that I'm mocking a lot of dependencies to test the function. First I pull the code and try to compile it. If the compilation finished successfully, I review the implementation and look for border cases. 70% 20% 10% That I'm doing something useful to make people's life more comfortable When I spend a lot of time fixing bugs on production environment, which could be avoided with proper tests Developers do not only know about technical details, but also business requirements. By doing so, developers create first the tests cases according to business requirements. To improve my professional career by having more insight on how to develop applications faster and more reliable, particularly in hardware projects Show
15 25 C C++ JAVA VHDL SystemVerilog Python none I am mainly an FPGA / ASIC / SOC and embedded systems design and verification engineer using system and module level Testbenches Communication systems, Wireless comms, Video and image processing, Cybersecurity Vivado, Quartus, Keil, Visual studio, Workbench, ARM and TI tools as and when needed. 5-30 minutes adhoc or to company standards such as IEEE more than one side of A4 between 30 minutes to and hour. 50 20 30 It can be a very creative and interesting activity. Always interesting to be able to learn new languages and techniques. To much adhoc techniques involved and guesswork as per how long things take. Testing can be tedious ! just read James book ! To gain a much deeper understanding of why how and when to use TDD. Show
11 18 C C++, Python, Javascript - I am an Embedded software Engineer started with TCP/IP stack in real time operating systems, then Wireless systems on microcontrollers. Last 10+ years working on SetTopBox software development in Linux OS with Mips and ARM architectures. My interests are Operating Systems, Networking, Security and Virtualisation. My dat-to-day role involves software integration, I depend on integration tests. But I would like to learn Unit testing and I think that is the right way to do. Linux based System on Chip. Our development is in Userspace Middleware. GCC Python Behave Gherkin tests 30-60 minutes - - We use gerrit 15 10 75 - - For my previous project - we used BDD. I really like the way we wrote the test first and then realise the feature by passing the test. - I really want to learn Unit testing and make it like my second nature regarless of the language that I use to program. Show
3 months 3 years C/C++ Python/Matlab - Relatively new into programing, trying to learn the good habits and techniques We are using google test for unit testing and a proprietary system for integration testing Set-top-box I'm personally using VSCode 5-30 minutes We are following Google C++ style guide for the current project - We use gerrit 30 30 40 The satisfaction when your logic works as expected. Can be frustrating sometimes when you don't have all the knowledge about certain tool, system, library, etc. First write the tests and then write the code that accomplish these objectives To fully understand what TDD is. To learn the good habits and techniques and to be able to apply them in our current project Show
2 1/2 2 1/2 C/C++ Python Cpputest Googletest This is my first job outside of university where I studied Physics with Astrophysics. unittesting using Cpputest/googletest and DMS testing which tests the whole code base. Linux embedded system built on Set Top Boxes Visual Studio 1-5 minutes New current project we are sticking as close as possible to the google coding standards. Old/main project we have some outdated standards ~10years old. When there is too much logic the the function and it can be easily separated. Code review using gerrit. 20 60 20 Creative, build something that has an end functionality. Testing can be tedious and maintainablity of tests is sometimes difficult. Write the tests before implementation. Never tried TDD, we are starting a new project (~2months old) it would be the perfect time to learn and implement a more efficent method of developing. Show
0 3 c Python None. Besides work I typically enjoy programming quad-copters and designing control systems. Currently I use several test tracks There are several different targets depending on the region and Visual studio code, putty, build server. 5-30 minutes MMT coding standard. Typically if a function is larger than 100 lines of code or the function has become too complex with more than a single exit. Our code reviews are done via gerrit 30 30 40 Programming is always a challange and continuous stream of problem solving. The development enviroment may not always be ideal(particularly for c) which can result in a lot of complexity and difficutly to acheive a very simple task. TDD is a short development cycle where test cases are written first and the code is improved to pass the tests. I wish to improve my workflow and be able to create more reliable code. Show
9 10 C C++ google test, custom C component tests I am a software developer. Most of my experience has been working on embedded C and very recently C++. Have worked for companies that develop middleware for set top boxes like Sky in Europe (similar to Comcast in US). Have spent a few years in-between as a fullstack integrator. Recently spending a lot time in interface designing type activities with the architects. unit tests, integration tests and some times fullstack Set top box We use a whole lot of custom tools mostly lunix based. Git for version control, gerrit for review, jenkins for dev-ops Under 10 seconds Mostly follow google coding standards with a few exceptions It depends on the use. If its something like a thread function which is handling 20 messages it will be long yet difficult to shrink. On the other hand there could be one thats only 10 lines and 5 lines are repeated in 10 other places, thats long use gerrit 30 50 20 Visualising how things work, writing code make it work writing tests unfortunately Not much, just the name Test Driven Development Want to know more than just the name. Its recommended by a lot of colleagues, want to understand how it can help me and my team Show
0 6 c/c++ Python, Haskell CUnit Finished MSc in Computer Science at Chalmers last year, been working as an embedded software engineer. I like playing video games and breaking them ;) Test at module/component/multi-component levels. Embedded linux Coverity static analysis Vim Neoclide/coc (clang completion) vim ccls 1-5 minutes Permissive to allow for code readability yet there is a structure to follow when concered with certain things. If it performs too many computations which could be defined externally. We use gerrit - code from a team member is viewed by all, but only 1 person is required for sign-off. A bot also performs checks on the change. 10 55 35 The feeling I get when I get to implement a design, and also the feeling I get when I find a illusive bug. idk :| test-driven-development: writing tests to define acceptance criteria before hand. I came across your website a year ago when I was working at a different company where testing was all done manually, ugh months and months of filling in test steps and results in a excel sheet. Show
1 1 C++ Python and JavaScript 0 Scrum Master coming in from a Lean health administration background N/a N/a N/a 1-5 minutes N/a N/a N/a N/a N/a N/a Problem Solving learning curve blurs the lines of QA and development Want to learn TDD Show
1 10 C Python CppUTest Haven't done much programming the last few years. Starting to get more involved in it. I have just started to unit test. Very new. Previously manual. Embedded processors CppUTest, IAR 11-30 seconds Internal When there is repetition and not targeted Mostly line by line, peer review. 30 30 40 When it works Debugging someone else's code Just started working with it Starting to get more involved in firmware development. TDD seems like it will save time and catch edge cases hard to implement on target. Show
3 10 c python none Ten years developing firmware. Five years developing hardware. I've spent the last five years as an engineering manager. I haven't spent much time programming over the last ten years. Evaluating this course for my team. functional tests Gas detectors using STM-ARM cores and SiLabs 8051s Eclipse based or IAR 31-60 seconds Our coding standard is based heavily on Michael Barr's coding standard: Serves more than one purpose. Every member of the team reviews code and makes comments on compliance with the standard and business logic. 30 30 40 Seeing something come to life. Constant feature creep. I understand the concept. To gain deeper understanding of TDD which allow me to justify sending the rest of my team to training. Show
3 7 Ruby,Java Go, React, Python PHP, Flutter go_test, rspec, pytest, php_unit junit, flutter_test cucumebr, cypress, selenium I teach XP practices to client. ATDD, TDD, Exploring manual test. web app, ios-app jet brain IDEs. Under 10 seconds make it work, make it right, make it fast. static analyze see the code quality viewer face2face every 1 hour 50 40 10 fun no value software one of working style of developing. including test and design. I usually work by TDD. then I'd like to know how to apply embedded software. example learn good mocking practice. Show
3 15 C C++ & Python None Debug later Embedded C running either bare metal or FreeRTOS on an MSP430 IAR and CCS 11-30 seconds No formalized or documented standard. Programmer has freedom to write the code as they see fit using some best practices. When it starts to do more than a small, well-defined task. Peer review 30 30 40 Working though the logic of creating and designing a system and seeing it perform as intended. Finding hidden bugs and edge cases. It's a process to build code through automated tests. The tests check each path of a decision tree, verify memory allocation, as well as force the writer to think through the function's external interface. It also keeps the functions targeted. I heard about TDD from a co-worker whose been using it on his own developments. I see the benefits to it and want to learn more. Show
5 3 C/C++ Python cpputest I am originally a hardware engineer, turned software engineer to accomplish work tasks. Starting to use cpputest, but sometimes difficult. Our main way of testing is flashing to the target unit and running automated tests with real stimulus. It takes tens of minutes to hours to complete a test. ST Micro, low power, arm IAR 1-5 minutes Starting to use industry standards, such as MISRA C/C++, but not widely accepted I don't None 3 2 5 I like developing new software and testing software to its limits. Being stuck with legacy code with a bug I can't find. I know it can help get debug time down from 50% and possible push that towards testing and developing time. It will also allow me to modify legacy code with more confidence as test case can be developed around them. I want to write better software. Show
15 12 C C++, Matlab Vector Software, Custom I enjoy the mountains of NM through mountain biking and skiing and my family (wife and 2 kids) keeps me busy. Jenkins Continuous Integration, bench top and functionality testing STM32L4+ microcontroller with various communications interfaces and SAM4L microcontroller RF system IAR Embedded Workbench 1-5 minutes Ad-hoc When it does more than one thing and the actions are unrelated Informal 50 25 25 The feeling of accomplishment when you start with just ideas and slowly implement functionality to make a whole system work. I also like how you get to create distinct functions and then put them together. When I have to fight the development environment, debugger, etc. I also don't like when I have a vague requirement on what I'm being told to do and have to guess at what the customer or product owner want Not much, I've heard it's a paradigm shift in that you think/write the tests first before writing the software I have an interest in this and it's corporate provided training which makes it easy to take and pay for. I also like the Agile methodology and am interested in seeing how TDD fits with that. Show
4 11 C Python, C++, Java, etc - wide not deep. None I enjoy running, board games, and watching big 12 sports. On the fly, how it seems appropriate at the time. (hoping to improve this :) ) Low power custom embedded board (variety of ARM Cortex-M micro controllers) IAR EW, Ozone 11-30 seconds Flexible - quick turn prototyping group, some efforts made in recent years to introduce a coding standard, generally run through lint and correct egregious errors only. Can't view it (100% zoom...) all at once. Fairly informal, conference room, go function by function. 30 30 40 I like using the simple set of tools a language provides to slowly plan out and solve a larger problem. The errors I inject. Some embedded debugging tools can be a pain to get actually working - but they are also needed due to errors I inject. It stands for test driven development. To change my current quick and dirty (probably ineffective) testing habits, replacing them with a methodical system. Show
4 4 c Python None I am searching for the meaning of life. We build test in python and run the in Jenkins. Hard to cover all corner cases when building the test. Our CI systems is something like this: get code from repo, compile code, lint code, flash hardware with new code, run test then email results to developers. I would rather not say. IAR,QP, Git, and Vault 1-5 minutes We use PC Lint which we run on Jenkins. When we are trying to do more than the original intent of the function. When software gets to a point we feel at a good state, we schedule a code review and invite our peers. We try to give people plenty of time review. We highlight pieces of code that we might have questions about ourselves so that others can help. 25 50 25 It's fun. You are creating something! Pointers and having to debug. lol Not much. I want to learn about TDD and how it can help me improve the software I deliver. Show
2 8 C++, C Python, C#, Java CppUTest, Ceedling Originally from New Jersey. Collection of unit test cases, tested on development boards. ARM Cortex M3/4 microcontrollers, low-power environments, baremetal software GCC, Cygwin, Eclipse, IAR 31-60 seconds Very similar to the Barr Group Embedded C standard, with some updates to better work with our team. When it's single purpose isn't clear, or can't be read without scrolling. Code reviews aren't often used, getting started using Gitlab's review feature. 30% 30% 40% Solving unique problems on systems that impact the real world. Setting up development environments. TDD provides a better software development methodology to develop testable code for high reliability environments. TDD seems like it will make me and the team better software developers. TDD is a positive trend for the software development community. Show
3 15 C sometimes assembly, Python, C# only heard about Unity and Google Test but have not used them; Unity seems like a good fit since it does not appear to require C++ but not clear why not simply to use our usual Design-by-Contract constructs (e.g. ASSERT) to create unit tests n/a end-to-end testing using CI embedded C for micro-controllers only, cannot use C++ due to project restrictions (not even for unit testing) IDE 31-60 seconds different ones, including Barr only read about different approaches on the internet but don't have a clear criteria that I apply consistently GitLab Merge Requests or Fagan depending on project type 60 10 30 problem solving and seeing things "work" on the target hardware debugging intermittent/hard-to-reproduce problems that only show up after firmware runs for days on target platform read a few articles and watched videos; don't understand how to assess when there are "enough" unit tests since probably not all code variations can be covered (heard about Modified Condition/Decision Coverage but don't know how to apply properly) learn TDD for C-only projects; understand how to apply TDD to firmware that needs to run on hardware (e.g. TDD for DMA SPI driver that only has problems after the MPU comes out of a low-power state) Show
4 10 python, c/c++ java, gradle, matlab, python unittest, cpputest I like programming and learning using continuous integration mcu gcc, make, iar, 5-30 minutes N/A if I have to scroll down to read the whole function what are those? 60 20 20 seeing it work in action documenting it. I read the book and have written unittest in python Improve delivering quality software Show
1 8 C++ Python I perform without the aid of a harness or safety net. I still can't find my normal toilet paper. I write some short functional tests and try to capture the different use cases. n/a IAR, Eclipse. 31-60 seconds Just get it done. Refactor later. Structurally, the function is too long when there are 3 or more nested conditionals or loops. However, another way to think of it may be that it takes more than a few seconds to look at it and understand what's going on. n/a 50 25 25 I enjoy the end result when a device works as intended. I wish customers always knew exactly what they wanted and what is within reason. Changing requirements/priorities and the entire area of customer management is the worst. tdd is short for test driven development. Don't you know what's going on outside? Show
2 30 lolcode c/c++, python, bash, xjtag this space intentionally left blank in production i have different targets vi 1-5 minutes do we have one? i put everything in main does it compile? 1 1 98 getting something working when it never does work at first nothing i was "encouraged" to Show
17 15 C C#, Matlab, Python Starting to work with Ceedling enyoy playing ice hockey breakpoint debugging instrumentation test gpio Watch windows Memory windows Cypress PSoC 5LP, PSoC 6, Microchip PIC18s, dsPics, SAME family, other processors over the years. IDEs, Programmer/Debuggers, Logic Analyzers 1-5 minutes team defined, based off of Barr Group's published coding standard when i have to rotate my monitor 90 degrees! seldom, working to incorporate into new designs 20 30 50 Solving technical challenges tough question, pass! just scratching the surface, reading through TDD for Embedded C, applying an iterative test process early on, preferably automated. Thought not quite there! Improved software development velocity, decrease expensive debugging sessions. Reduce the reliance on breakpoint debugging. Show
0.5 3 C Matlab, LabView, Python. I've been trying out Ceedling. I'm an early career EE. I have done a fair amount of circuit design and hands-on lab work. My new position is almost entirely embedded software focused. I definitely have a lot to learn, and would like to be able to work faster. Before ceedling I'd often test code using print statements or toggle pins if testing on hardware. For timing critical testing I might throw test data into an array and print it all at the end. But that took a bit of extra work and system overhead. I really like Notepad++ 11-30 seconds My team uses a modified version of the Barr group's Embedded C Coding Standard. We kept most of the rules with technical rational and modified the more subjective stuff. I try to build functions that do only one thing. But, that is easier said than done, and pinning down what "one thing" really means can be tricky. My team only just formed and hammered out our code standard. We haven't had any code reviews yet, but plan to. 40% 40% 20% I like using logic to solve complex problems. I also really like the results, getting hardware to perform tasks and/or automate processes. It's time consuming and can be somewhat tedious. I've been watching Bob Martin's Clean Code videos and have started using it with Ceedling. It seems like a good practice and I'd like to develop a proficiency using it. As my software team has just formed we decided since we are just starting out we might as well try to establish good habits from the start. Show
6 14 C C++/Bash/Python VHDL/Verilog QSPY I also have experience doing FPGA and linux kernel module development. Testing scripts which attach to the target via debug UART. These use python and Q_SPY Cortex M0/M3/M4 and Xilinx Zynq IAR/GCC SEGGER JTrace/Ozone for tracing 11-30 seconds A coding standard exists, but it's loosely adhered to. When it spans longer than the length of my portrait monitor or is littered with really long switch statements Depending on the speed of the project, code reviews and architecture meetings are held with varying frequency. 20 30 50 Watching my code cause a desired effect on the target hardware. Hunting down really obscure (rare) memory corruption bugs. Co-Workers I have a lighter project load during this apocalypse. Show
23 30 C/C++ Python Custom, QUTest, Rational Test Realtime I like mechanical keyboards Unit test, system-level test ARM Cortex M4/A5/A9, TI MSP430, TI DSP IAR, gcc 1-5 minutes Internal lots of mouse wheel scrolling Sparse ? ? ? It's fun to build something that helps someone / solves their problem Tight schedules / rush resulting in product with questionable quality / reliability Test cases are written before code Lots of new developers in my department. Want them to do software engineering not just programming and create better products in less time. Show
8 40 C++ C, Matlab, C#, F# I write what I need. I started out doing embedded code in C and assembler. I do lots of analysis code in Matlab and desktop apps in C#. I'm now getting back into doing embedded code. Most important is to design code as separate testable modules. I can then write a test program that pumps data through the modules and checks the outputs. ARM processor, battery powered, lots of sensors, radio communications. IAR (maybe Green Hills also) 1-5 minutes I strive for correctness, test-ability, and readability. I try to use best practices for each language. When there is excessive scrolling to figure out what it's doing. It's not necessarily dependent on the number of lines. Project dependent. Some have none. Others have full up reviews in TeamForge + Gerrit. 70w/design 20 10 It's both creative and logical. It produces tools that increase our productivity and quality of our work. I work in science and engineering software, so I don't have anything to complain about. If I had to work on web sites, then that would be another story. Tests are written first, then code modules to pass the tests. Our group is trying to do things better. Show
8 17 C Python, C++, sh/bash None-- create by hand I have a collection of items from Pea Soup Andersen's restaurants/gift shops Manual unit tests; full unit testing over time, sometimes with the aid of continuous integration with the embedded systems in the loop Various custom boards with mostly various ARM Cortex-M3/M4-based microcontrollers; FreeRTOS, bare metal, or QP, depending on project; mostly C, but sometimes C++ IAR or GCC 11-30 seconds We have one, but it does not seem universally followed; Different projects/leads in our group place different levels of importance on the coding standard Contains multiple unrelated functionality or too repetitive Usually small sections get reviewed line-by-line 10% 60% 30% Sense of accomplishment and creating something new Tool issues, differing coding style (beyond just what standards cover), dealing with legacy code Tests/testing are developed along with the actual code TDD seemed like something, since already offered, I should at least be exposed to, since at least in theory, it seems like a good idea. I will decide whether it is something I actually want to integrate into my development process. Show
5 15 Java Python, c++ pytest, mocha, gtest, junit I like gardening. unit tests, functional tests, performance tests c++, python xcode, visual studio, pycharm etc. 31-60 seconds Standards followed by programming language More than 25 - 30 lines. Each code change is reviewed by reviewers of that code area. 70 15 15 Code can help users perform some tasks/activities and make their life easier. NA I have taken some trainings on TDD long time back (5+ years). To learn more/refresh about TDD. Show
3 25 C++ C#, JavaScript, HTML, and (a tiny bit of) Python uTest (barely), nTest (but it's been years) I like to cook. Italian cuisine is my favorite but I've been experimenting with French and Thai a bit. I write tons of runtime asserts, step through the code, then manual verification. This is followed up with black box testing. It's a cross platform (Windows, Mac, iOS, and Android) video editor. I work on the Win and Mac UI and a library that's shared across all platforms. Visual Studio, Xcode 1-5 minutes It's mostly about how to name variables and functions. Not a lot about logical structure. When it takes an average programmer more than ten minutes to understand how it does its thing. When it does a bunch of disparate things. We use browser-based tool called Code Collaborator. It's not a good tool, and is downright hostile for reviews that end up having multiple revisions to any file. 40 30 30 Making beautiful new things is great. Solving real problems that real people face. Coming at old problems from new angles. Balancing multiple competing factors. Performance optimization. Changing requirements. Creating documentation. Most meetings. Poorly written code. Diagnosing bugs, especially in unfamiliar and poorly written code. Not much beyond you're meant to write tests before writing the code to be tested. Several people I know are quite enthusiastic about it being The One True Way. The boss is making me do it :) Show
1 20 Java C++, kotlin JUnit i am an android developer working in Java but have worked in C++ bit while ago. I am doing some C++ work now for the last 3-6 months. manual app testing, Unit Testing Rush Android application Android Studio, Perforce, gradle 5-30 minutes using internal guidelines, fairly good lines of code, number of things it is doing inside the body, logical name vs functionality our reviews are fairly good 30 10 60 develop new possibilities long cycles for small change writing tests for requirements before implementing functionality suggested by management Show
13 35 c/c++ python not much, looked at UMock and scripting recently I have been a developer all these years. blackbox Win/Mac VisualStudio, XCode 1-5 minutes I follow whatever the coding style the team prefer. when it tries to achieve more than one logical task it's required 60 10 30 write code, debug code testing read about it, team tried about it briefly, but no one really like it organization push development adopting TDD Show
21 26 Objective-C C++, C, Swift, Lua, Ruby Ruby's "RSpec" (but not extensively). Prior to working here, I worked at a small Design of Experiments training company, writing statistical software. Most testing is done by walkthroughs of the actual app (no formal testing infrastructure). Since my work has a strong focus on custom UI implementation, and less focus on data models or computational engines, unit tests have less immediate relevance, and I haven't yet seen a UI testing framework that was worth the hassle. iOS 12 and 13, both compact and regular layout. I work on a cross platform app team (Mac/Win/Android/iOS); my work is almost exclusively in iOS, though I do deal with much code that is shared between the platforms. Xcode, Perforce (soon to be git), macOS command line. Python scripts which generate the Xcode projects. Collaborator by SmartBear for code reviews. 1-5 minutes Don't understand the question. When I can't clearly describe what it does in a sentence. All submission are reviewed by at least one other person, using Collaborator (by SmartBear). Check in comments must include the review URL. 30 10 60 Opportunity for creativity in designing object responsibilities and interactions. Optimizing for performance. Debugging semi-reproducible (or not reproducible) bugs. If I can consistently reproduce the bug, I'm 90% of the way to fixing it. I've dabbled with it, and enjoy what little training I got on it (in Ruby), but I don't believe our current work environment (C++ very large code base) is as amenable to it as a small scripting project. Was asked by management. Not my first preference. My opinion: the company needs to increase the resourcing/infrastructure for automated testing before asking developers to just "write more tests". Show
19 19 C Assembly J-links and St-link for debug Embedded designer for lighting and now working on motorizes shade controls mainly use target PCBA build and use with debug interface based on product features target is product PCBA with debug interface SWD IRA and SEGGER STUDIO 11-30 seconds Follow company SOP as coding standard if it move out side one full screen shot Bitbucket code review with Pull request 30% 40% 30% kind and enjoyable as you can confirm results by myself quickly and make changes if there is need. Doing same functions for many products without reusing it over and over again so that reduce test/debug time nothing much To learn on what are the test methods and process use by others witch and standards in the firmware industry. Show
3 15 Java Decades ago: Pascal, FORTRAN, C, Ada, 68000 assembler, 80286 assembler, Python, bash JUnit Friend of Bas and Craig. Rusty at coding. Established . n/a n/a I used to use emacs, ant, Eclipse. I started learning IntelliJ. 11-30 seconds n/a When I can't understand it after a few minutes -- typically a page, though I prefer shorter. n/a 0 0 0 Back when I did it, it was fun to see something working and be able to change it. I enjoyed seeing it go live. I always seem to struggle with getting third party libraries and tools to work. I'm also not crazy about bad code. Some experience doing it in Java. Often it was not pure TDD. I'm feeling kind of useless as a Scrum trainer and wondering if it's too late for me to go back to a normal programming job. Show
5 8 C N/A N/A From Syracuse, NY. Avoiding snow by living in San Diego. Functional testing. Write a bunch of code to do something, then test all the code as a whole. Nordic nRF52 platforms ST platforms Atmel platforms Sensors, switches, relays 802.15.4 (BLE and 6Lo) VS Code, IAR, Sublime 31-60 seconds Legrand coding standards When I get to the bottom and forget what happens up top Peer reviews in Bitbucket 60 20 20 Developing unique ways to solve problems. Making LEDs blink. Invisible problems. Hard faults. Memory allocation. Test (sometimes). Communication protocols. Nothing :( I want to write more robust code! Show
20 15 C Python None I live in San Diego Regression/Unit Contiki based firmware running on Nordic NRF52 built using Gcc for Commercial Lighting Control applications IAR Visual Studio Segger Embedded Studio Segger j-link 1-2 hours In-house When my fingers get tired. Peer Review though BitBucket Pull Requests requiring at least 2-3 sign-off depending on the code base 33 33 34 Creating solutions to problems that are new Having to re-write code Not much, writing units tests is (currently) not a requirement. I would like to help myself (and team) get better at creating sustainable code. Show
1 5 C++ C, python embUnit, robot framework for black box testing. (a little bit of Catch2) I worked 4 years on the embedded software for a stm32f4. Right now I am working for 6 months on a nrf52 based sensor platform. I have a degree in micro electronics engineering. We manual test the code with gdb and evaluate the quality of the data. For logic we use small catch2 based tests that only run on development laptops so not on the target. A build pipeline checks if the code compiles It's a nrf52 with no uart clang-format, gcc, sonarcloud (for static code analysis), vim, jlink, gdb, cppcheck 31-60 seconds It depends on the person who reviews/writes the code. clang format needs to be executed. Before pushing you should do a small 1 min recording with a new configuration to check if the chain works. In theory sonarcloud tells us that but for now it's disabled because there are too many errors/warnings At least one person should have a look at the code and mark it as ready for merge in github. 2 3 5 the challenge to create/adopt abstraction that can be used in a clean way in the rest of the code. GDB debugging (in c it was fine but in c++ it's tedious) I saw most of Robert C. Martin clean code videos and read Test-Driven Development with Python and read the first chapters of TDD for embedded C - To better understand what are 'good concepts'/'way of working' to create testable/tested embedded code. - What environment is needed for good (unit)tests (Do they need to run on target? With(out) the RTOS? Show
6 7 C C++ from time to time and I'm starting to use python. Ceedling, started to use pytest for python. In the team the hardware/firmware guy so I also design the schematic and PCB. So coding is only one part of my work. Before reading your book I was writing code, building the code, pushing the code on the target and verifying in debug mode that the code I just wrote was working as intended. After reading your book I started to use ceedling to unit test my code. So now I'm coding and testing my code on the computer and when a bunch of module are ready to work together I to the same as previously but with less step by step debugging and more global verification like verifying the outputs with oscilloscope or logic analyser. I'm currently using STM32F3 and F4 microcontroller families. Eclipse + gcc for arm + openocd. 11-30 seconds I'm using coding style based on the Linux Kernel coding style with some modification to better fit embedded world. When making unit test for a function is too hard I try to reduce the size of the function. We don't have code review as we are a small team. 50 10 40 Adding new functionalities and seeing them working as expected. Debbuging hard to reproduce event which are reported with only few information by tester / customer. The goal is to write test before the functional code. Every code functionality should be requested by test. This allow to find errors at the moment they are introduced and ease their correction. I'm not happy with how many errors I introduce to my code at the moment. I started coding in a TDD way but I'm too slow at it. So when deadlines approached I skip TDD and more errors are found latter. So my goals are: better and faster. Show
2 10 C++ C, python CppUTest, Visual Studio unit test, VectorCast, Parasoft, Quantum leaps QUTest I have mostly worked in safety-critical medical device embedded software. My current project is mostly C++. Before this I was at Illumina, using C. I have an MS in CS from UCSD. My undergrad degree is in Bio-engineering however my first job inspired me to transition to SW development. Quantum leaps QUTest, custom framework for automating on target tests, VectorCast and remaining adhoc/manual tests on legacy code My team develops FW for medical feeding pumps - the project I work on has 2 embedded Stm32L4 MCUs IAR, Visual Studio, Surround SCM/Helix for version control and requirement management, Jira/Confluence for planning/tracking, Quantum Leaps QM for state-machine modeling 1-5 minutes The coding standard was created before I joined: C++. No go-tos/exceptions. Some specifics on naming - Nouns/objects Verbs/functions. We do not use Hungarian notation. Specifics on braces/spacing. If it is trying to do more than 1 thing. Required. We do them every "story" - present company has a longer turn around than I am used to. 80 10 10 I like how collaborative it is. I like the quick turn-around time from creation to test compared to other engineering disciplines. Working with remote teams can make communication challenging. Maintaining legacy code can be challenging when there are no automated tests set up. I have read and use your "TDD for embedded systems" book as a reference. However in practice, only one of my projects followed TDD and that was because it was primarily algorithm implementation (pre-determined golden references for all inputs). My team is not happy with the unit testing approach on other projects. We are trying something new on this one. I want to make sure we are on the right track and get ideas for improvement. Show
0 5 C C++, pyh None EE degree, I am generalist (no specialization). I bounce around between tasks, so I am not writing firmware all time. Code reviews, system testing, pre- deployment testing (code then test) ARM-M, MSP430 IAR 31-60 seconds I have customized the Barr’s Group coding standard. When I have to scroll back up to look something up. The are painful, long, and don’t catch the bugs that matter the most. 20 10 70 I like the problem solving and making electronics due usefully things. debugging close to a deadline. Nothing. I want to develop firmware fast, reduce debugging time, be lest paranoid that a fatal bug is going to make it to deployment. Show
12 15 C I've used C++, python Google test I enjoy collecting vinyl records and I belong to an Olympic weightlifting club. A large part of our code is tested manually as part or a larger system. We're starting to adapt unit testing and a small portion of our code is unit tested. Embedded systems. Gcc, PC simulators, VS code. 1-5 minutes The coding standard is a little hard to follow and seemed to be setup before modern IDEs were available. A function is considered too long when it does one more than one thing. Code reviews are done before every patch is submitted. A developer isn't allowed to review their own patches. 30 30 40 I liked seeing the code/projects I work on end up on devices that are used by customers around the world. I enjoy digging into bugs and trying to solve the issues for our customers. The manual testing process and vague bug reports that are hard to track down to root causes. I know TDD means developing tests first and that more time is spent up front so that less time is spent tracking down issues in the field. We've started to adopt unit testing. I'm interesting in learning new strategies to help with this. Show
2 7 C C#, Python Gtest Recent graduate from software engineering, looking to develop my technical skills in the workplace. We mainly use manual system level testing. We've recently started developing automated unit tests using the Google test suite. Fitness devices. vscode, jenkins 31-60 seconds C standard If a function is performing more than one important action, then it is too long. A function's name should explain what it does, and that is difficult when it does multiple unrelated things. Each commit is reviewed by the team before it can be pushed to any remote branch. 4 2 4 I like the ability to be able to build new things from scratch and the speed at which things can be developed. The time required to debug nested issues. I have only heard from others experiences of TDD, however have never done it myself. I believe a great benefit of TDD is that it forces you to think more about your code design before writing the code, as you need to think of how the tests will run. I want to learn TDD as our company begins to ramp up our testing frameworks. I believe that having a strong understanding of TDD can not only improve our team's testing abilities, but also improve my own coding skills. Show
13 32 C python ctest (Chuck Allison), Unity Test API Wrote open source libraries and Contributor to Wireshark Using CTest and CI via github, bitbucket, travis, gitlab. Manual validation. Typically ARM microcontrollers, Atmel AVR, PIC Microship, and others, usually bare metal, sometimes with RTOS. Some target systems are Linux or embedded Linux. Some target systems are Windows PC. GCC, Make, IAR, Rowley Crossworks, Segger Embedded Studio, Atmel Studio, STM32 Cube IDE, MPLab X, and others. 1-5 minutes Wrote it based on Westinghouse, Barr Group, Ganssle, Robert Martin Clean Code, and Wireshark. Follow Ganssle Naming Convention. Follow Clean Code principles. When it is beyond my screen height. Pull request or merge request online via bitbucket (or gitlab or github). Typically check for adhering to coding standard, and adhering to high-cohesion low-couple architecture for code placement. 50 25 25 Creative outlet, helping others, calming and enjoyable to write code. Managing changing API for releases in public open source software/firmware I started using TDD for embedded firmware 2000 after reading an article by Chuck Allison. Learn methods of applying TDD to legacy code, particularly separating GUI and other views from the process and presenter. I usually end up re-writing large amounts of code to add TDD. Show
10 20 C C, C++, Python, Cpputest I wrote my first embedded application on a basic stamp module when I was 14. 24 years later I'm still at it! Manual testing mostly. Most target systems are embedded STM32 based devices although it varies from project to project. Mostly Arm Cortex-M processors. A wide range. IAR, KEIL, STM32CubeIDE as the primary toolchains. 31-60 seconds mostly follow Misra-C. Also have a personal style guide designed to make code easy to read and follow format wise. I use a cyclomatic complexity metric tool. I typically keep it to 10 or less but occasionally an 11 or 12 is ok depending on the function. It varies project to project based on the client I am working with. I often have a colleague review code that I write if possible. Many times I'm reviewing client and other developers code. 75 10 15 Design and architecture development. Debugging. Just what I have read in the book. To learn how to improve the way that I test code. Show
3 3 c++ c unity, cpputest I had a TRS-80 and an apple IIe as a kid. Designed/programmed a medical claims entry system using the PCjr. Wrote a children's animated ABCs for the C64. All that was decades ago. Gave up programming to become a mechanical engineer, which I enjoy. 3 years ago I stepped back, part time, into the programming role. I don't. ARM & AVR uCs sublime, GCC, AVRDude, 1-5 minutes Self imposed, following google's style guide for c++ If it takes more than a 'page' of code, or if it takes more than a few minutes to understand what it does. Weekly, peers outside the company, using zoom. 20 30 50 Bringing an idea to life. When things get non-deterministic. I don't mind a good challenge, I hate looking at the same line of code until I realize that the previous programmer forgot to use one more set of parenthesis. I read your book, twice. Did the exercises a few times. Tried to go further but most to the information I found on the web isn't for embedded TDD. I hate debugging code, especially my own. Show
1 8 C/C++ Python, MATLAB GoogleTest, UnitCPP I work with autonomous underwater vehicles to support oceanographic science. combination of printf(...), and running on target and seeing if things break. Some 32-bit micros, a QNX 4.25 based RTOS system, and hopefully soon, a more modern custom linux image. Micro development in NXP Studio (Eclipse-based, uses gcc). QNX development with VS Code IDE, and on-board Watcom 10.6 C/C++ compiler/debugger. 1-5 minutes To my choosing, which is to say my organization doesn't have one. Smell, and if I need to put too many fprintf's inside during development. Boss and I do high-level structure overview, and then go through more thoroughly as we deem necessary. 60 5 35 Creating new deterministic, or provably-stable systems (I do some state estimation & algorithm work). Setting up tool chains, build environments, etc. Easy in theory, harder in practice. Heard about you from Elecia White (I did a show with her and Chris a while back). Learned more about TDD, decided it was a good idea. Show
6 35 Python C++, Java, C#. Very occasionally C. None in C. I've used Catch with C++. I don't really consider myself a C programmer. My first curly-brace language was C++, which I programmed in for many years. I've never needed to build a system in C from scratch, and usually reach for C++ if that's an option. Unit tests where possible, running off target. I've tried using drivers, and test doubles, but found it difficult in C. I'm not normally doing embedded outside of hobby projects. Most of the embedded programming I've done is AVR ATMega based using the gcc-avr toolchain. I've tinkered a bit with STM32. In this context, gcc CLion, CMake. 31-60 seconds n/a When it fulfils more than one purpose without delegating to other functions. Ad hoc. 50 30 20 I enjoy solving difficult problems. Occasionally I'm good at it. Hard to reproduce bugs. Red, green, refactor! I practice TDD when I'm uncertain about the direction I want to take. To learn about how to deliver training over the Internet, with strong curiosity about how the pros do embedded programming. Show
0.5 25 C C++ Java Gtest XUnit Junit I have been a mainframe programmer for a long time before my current job, so I'm used to working with a tool chain that is a couple of decades less "modern" than what most developers are used to. I'm also used to having to spend a substantial amount of time, making very different systems talk to each other. When working from a spec, often there is an official test vector set that can be used for validation. Sometimes there is an alternative implementation for a different piece of hardware that can be used for reference. If neither is the case, Various hardware security modules (HSM's) programmed in C or C++. We develop code in MSVS, but each target has its own proprietary C compiler, usually building in a Linux Docker image. Compiled binaries are then hand-loaded onto the target platform. MSVS IntelliJ 1-5 minutes We have internal coding standard that focuses on correctness and security of our software. I have been part of organizations that spent a lot of time on natural language, but in my opinion that has mostly been a waste, so I much prefer readable code. When I can't see the whole thing in a standard text window, or when the list of parameters contains multiple optionals controlling multiple code paths inside the function. In my opinion, code review is more about sharing knowledge than anything else. You can have great discussions about architecture and style, but it is uncommon for bugs to be found in the review process. 30 50 20 I like the art of imagining something inside my mind, and eventually prove it is logically consistent. I dislike working overtime trying to finish multiple projects with the same deadline. Especially when there is never time to consolidate/refactor an old codebase, but always time patch systems that have not been properly maintained. My experience has been that it works great when using the most modern/mainstream toolchains. When using older tools, it's much more of a chore, and so requires much more discipline to do. I'm new to the team, and some of the other team members have recommended the class. Also, some of the coding standards and development processes adopted by the team are inspired by the course - so it makes sence for me to adopt as well. Show
6 21 C++ C, Ruby, C# CppUnitTest for testing embedded C code.... 10 years Doing embedded SW in a real world with users, step motors, mechanics and other things, which imposes a lot of challenges. I Live North of Copenhagen in small village with my wife and two kids (8,10). Rides mountainbike and is chairman of Trailbuilding group Apllication code: Simple intergration test, but nothing automated. In the present team we are 3 embedded developers and 4 PC application developers. Two testers, one manager, a PO and a SW project manager Platform code: cppunit test of some parts of the code base Embedded system for Food analysis NXP LPC4357 with multiple modules internal CAN communication 480*800 touch display SQLite database Data upload to a Foss Cloud solution Green Hills Multi 7.1.6 compiler and debugger Visaul Studio 2017 as IDE and simulator Ues "Rant" for building 5-30 minutes what???? Nothing formalized and no static check besides the compiler When it is hard to understand and the function uses global/external data. All code is reviewed, since last summer. The current project has run since late 2017 :-/ We use Azure Devops and I am quite happy with the this 30 40 30 Solving problems in a real world with many different and complex inputs Finding bugs, repeating coding erros, finding errors made by others I have read "The Book" (and lost it) Heard several of the podcasts, where you particiate I hate making erros and hate event more finding erros mad by others. I want to spend my time being productive while trying to ship fewer errors. I want like some kind of defensive measure, which helps me in find my own errors early. Show
3 5 C/C++ Python None I have been involved with the algorithm team in my company and I hope someday that I will be competent enough not only to develop software, but to be involved in the algorithm development too. Manual Mostly ARM ATMEL Studio, Keil, MATLAB and Simulink 31-60 seconds NONE. But I'm currently working to adopt the ISO standard for C++ When it does more than one thing The design is reviewed with the software architect. I use sonarCube to verify the code 3/10 2/10 5/10 I like when Software are developed to be SOFT. Easy to change and reusable in different hardware. It takes to much to debug the code. Especially when there is no hardware available to test on. Testing and Development grow together. Write the test first, then write the production code. I have been having a difficulties with testing in general when developing embedded software. It takes so much time to test. Show
2 3 C c, python, c++ Automated tests Looking for improving my software skills. Manually updating impute values for a function and compare the output values with the expected ones. Confidential Eclipse, Keil, IAR 1-5 minutes coding standard of the company when it contains many lines Code review by senior developers 40 20 40 I like learning new software development strategies When the code is too long and not optimized helps to save a lot of time in the testing phase To learn more how to develop a good software. Show
1 30 C/C++ VHDL,PERL,TCL,K-shell,awk haven't - usually build my own I've been doing electronics for 38 years and I have three degrees in EE I incrementally add functionality to the target code base, then submit customer programming to the code under development Printers big and small momentics and GNU compiler chain 1-5 minutes * Use camelcase for variables * name the code module the same as the class described inside * re-use code as much as/whenever possible When it takes up more than a screen or two They're fair but until one has been through a couple it's really hard to do much more than try to write code like everyone else wrote something similar 20 20 60 Seeing stuff work wrangling side effects from tough-to-completely-understand APIs nothing formal my boss asked me to sign up and take it; other folks said it was pretty good. Show
19 >25 C C++ C# Java gtest cpputest aceunit junit We write code both for embedded systems as well as code for communicating with these systems. The code integrates with headers/libraries, and is build using the compiler and toolchain supplied/endorsed by the vendor. The architecture of the code is usually composed of an abstraction layer covering the differences between the various platforms and an application layer that is (should be) neutral to the platform. The tests are partly unit tests and partly functional tests. Unit tests are run off-target. Functional tests on target. Test of algorithmic code and code integrating with the libraries offered by the vendor is tested on target. This approach has been chosen to ensure that differences in endianness, size of basic data types etc are sufficiently covered by tests. The target systems are based on a number of different architectures. In general, debugging support is lacking - commonly reduced to output only when execution of the code returns 'nicely'. Mainly Microsoft Visual Studio, gcc & IntelliJ 5-30 minutes Not formally. We try to avoid pointer arithmetic by writing functions encapsulating that kind of operations. Then we 'only' have to test those function to avoid many of the common pointer & overflow pitfalls. Do I have enough fingers to count the statements? ;-) -more seriously, all statements in a function should be at the same abstraction level and the function should so simple that a) no unit tests are needed or b) unit tests should be simple to write Code is reviewed by a colleague - sometimes by the colleague sole - othertimes as show-and-tell seances. 3/10 3/10 2/10 Making stuff work. Debugging and Maintaining documentation Some prior knowledge - Have tried practicing TDD and have read (parts of) your book "Test-Driven Development for Embedded C" * To get a common language regarding test and code in our team * To get a common understanding on good/bad tests in our team * To refresh on TDD habits Show
10 16 C Java, C++, C# CppUtest, googletest, aceunit I love to make things easier, more efficient and more fun. I like sharing my skills and knowledge and seeing people improve in all areas of life. * TDD unit testing for small well defined functionality. * Using a software implementation of the hardware abstraction layer. Hardware Security Modules of various brands and different CPU architectures with down to 1MB RAM. The same code has to work on all platforms, therefore all code is written in C. Visual Studio, IntelliJ IDEA 5-30 minutes We are in the process of developing some common code guidelines. Before, the primary focus has been on making readable code that clearly signals what is going on. In addition some unwritten rules about how to program defensively. When it is hard to give it a concise name that describes exactly what it does and nothing more. Code reviews should make sure: * The intended task has been done and that nothing is missing * Relevant tests are present * The code is: - Secure and follows guidelines - Easy to understand - In the right place - Better than it was before 70% 20% 10% Solving problems "automatically" or more efficient. Seeing new functionality work, seeing something run faster. That I can make working with something feel good/better. Sometimes you are forced to create solutions that you are not proud of. I did the TDD online course some years ago and have been teaching the rest of the team some of the principles. To refresh my knowledge on TDD and because I want the team to have a common understanding of the principles and values of TDD. Show