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?
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 Embedded.fm 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: https://barrgroup.com/embedded-systems/books/embedded-c-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 https://fansofless.com . 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 http://bacnet.sourceforge.net/ and https://github.com/skarg 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 embedded.fm 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
4 26 c C, C++, Java, C# AceUnit, CppUnit, Google Test, JUnit Lots of experience in software development. Eager to learn new stuff. Enthusiastic about my work. Automatic unit tests, integration tests and functional tests. Test code mostly in C and C++. Embedded C code on HSM (Hardware Security Module). Focus on security, correct functionality and performance. Visual Studio, IntelliJ IDEA, QT Creator 5-30 minutes Code base is developed over time. Coding standard have some variation througout the code base. If it is hard to see what it does, or it is hard to explain shortly, then it is too long. All code is reviewed by a peer programmer. 40 50 10 Develop a piece of code that has this aura of quality. Maintenance of old code is not as fun as device new functionality. Write test before code. Do small baby steps. Repeat sequence: Make a test, see test fail, write code, see test succeed. A colleague have recomended the course. Show
0.5 6 C C++, Python CppUTest I did the layout/assembly/programming of an alarm clock for a class project that I'm a little too proud of (and I never implemented the actual alarm feature). I'm just starting to use CppUTest and TDD, moving away from the 'Debug later' approach. It has a wide range of peripherals: an LCD, Ethernet, SD card, etc. GCC, GDB, VIM, MPLAB X, Eclipse Under 10 seconds I don't have a specific coding standard. When I get confused by looking at it. I haven't had much experience with code reviews, I've primarily been a solo developer. 40 5 55 Organizing ideas, automation, making something happen on hardware Organizing project files, compiler/linker include management, breaking changes It's based on unit testing, where each function/feature has one or more tests that are run on each build cycle. Focus is placed on writing tests first, then writing only enough production code to make tests pass. I felt that I need to have hardware mocking explained to me, reading the TDD book exposed me to a lot of ideas at once and I need help focusing on what's important. Show
5 6 C++ C Not sure? Keil ULink Pro debug tool? I like coding and music We have a test actor that can work as the sending and receiving end of each code execution. This can be scaled from single events to full features. We leave #ifdef-ed in case we ever need to reverify code that we make changes to. Embedded Atmel microprocessor Keil IDE with the Keil ULink Pro Under 10 seconds Tried to stick closely to the BARR Group Embedded C coding standard Generally when it takes up more than the screen. Our initial code drafts were brought in without much review because of time constraints, we're working on cleaning up now. Anytime we merged new code we used BeyondCompare to see exactly which code has changed. 65% 15% 20% If it breaks or doesn't work I can fix it When code is time dependent so you can't put in breakpoints. Code is broken up into sections that you can independently test? It's one of my employee goals. I want to be more effective at my job and generate easy to read/modular code effectively Show
15 15 C C# none Doing work based on Active Object based OS inspired by Miro Samek's work Progressive debug, usually confirming HW simultaneously as FW, and extending the FW to full feature MCU based RTOS Keil MDK UlinkPro 11-30 seconds In house, consensus styling, but programmatic framework constructs help to reinforce. When it loses semantic clarity within its layer Delta comparison in BeyondCompare with verbal intention walkthrough on each item 30 40 30 Solving problems with powerful tools Library indeterminism It is a formalization of holding both ends of the problem gap together before descending into the implementation My manager made me Show
5 6 C Python None I'm a manager at TTI Functional testing Consumer electronics IAR, Vendor Specific IDEs Under 10 seconds It's based on the Barr coding standard When it doesn't fit on my screen Informal 60 10 30 It's an interesting puzzle Testing Basically the Wikipedia description To learn TDD concepts and determine if it is right for our group Show
1 3 C++ python sometimes CppUTest I'm passionate about aviation and I love coding. I moved from Montreal, Canada to work at Dynon Avionics last year. Using CppUTest Aircraft PFD in C++ running on a raspberry pi VSCode, CMake, Git 1-5 minutes My coding standards are mostly formatting. For example: I prefer snake case, allman formatting. Also, I'm not a fan of the auto keyword. When I notice that I need to search for code I just wrote minutes ago. I put out pull requests when I'm done working on a feature and wait for my coworkers to comment on it. Its the same thing when my other coworkers submit PRs too. 7 1 2 I just love creating and solving problems It's easy to overthink things and spend too much time and energy on something just for the fun of it. - You have to write test for any code that is shipped. - You should write the test first so it fails and then write the code to make it pass. Because my coworkers took it last year when I wasn't an employee yet and they offered me to take it and I said yes. Also, I'm curious to know what this training looks like. Show
0 3 C++ C none Fresh grad, just got my B.S. degree. All programming experience are from HW and projects. Run it and see if it works. linux based eclipse 11-30 seconds Have not established any standards yet. Clean and easy to read? when it does several very different tasks in 1 function Have not done any code reviews yet 30 40 30 Coding it and seeing it work Coding it and seeing it not work and don't know what's wrong. Have to read thousand lines of code without a single comment Test driven development. Pawel says it's a good opportunity, I have no idea what TDD is, and it's for Embedded C/C++ Show
0.1 2 C++ Python Google Test I like artificial intelligence, robotics, working out, and going outdoors I test my code using basic principles of TDD, but I would like to learn more It's a vacuum cleaner robot that runs on an OS based on Linux Yocto Eclipse IDE, Atlassian Stash Under 10 seconds At my company we started the transition to TDD in our new code base When it takes longer than half an hour for someone at the company to understand what that function does We do the code reviews using Atlassian Stash git platform 30 30 40 That there is virtually no limits of what kind of system and functionality can be built It can be tedious to navigate and test large code base, and to also figure out how the code that other people developed works I know that TDD implies writing tests in parallel with the development process. It also encourages cyclic development - that is, write tests for an intended function, write source code for the tests to pass. Then pass the tests and repeat the cycle It's because my manager told me told, and also because I want to learn more about TDD Show
5 34 C C++, Assembly Just custom built solutions Been in Embedded System Development since 1993, but started coding in 7th grade w/ BASIC. Was in Electronics Technology competitions in High School and won state VICA competition as a senior. Undergrad in 1993 from Auburn in Computer Engineering. Mostly functional testing w/ hardware. Occasionally I will write a short test program that will fully exercise inputs of a function, etc. I design Lithium Ion Battery packs for power tools. I also design some tools for use on the packs occasionally. IAR is my preferred compiler and debugger. Also, all the normal EE bench tools, Osc, DMM, etc. Lately been using Parasoft for static analysis. 11-30 seconds We (our EE development department) developed our own coding standard which is a modified version of the one developed by Barr. Our coding standard calls for 100 lines or less. Coding reviews are not "mandated" by our procedures. When we do have them, many times they get caught up in the minute details on a particular portion of code and become less effective. 45 35 20 I like the logical nature of coding. I like coming up with innovative ways to make code smaller and easier to understand/read. It can take a lot of time to develop "good" code. Many times the extra effort taken to make code better is not appreciated by decision makers, etc. Not much. My manager recommended I attend. Probably because he doesn't think I do enough testing. Show
1 25 c python, matlab, vhdl minunit Living near London, worked on industrial and defence projects, mainly on the realisation of Matlab code to embedded c, VHDL on FPGA. Umm.. use a lot of printf, and simulator Most projects on Xilinx ZynqMP SoC, most of them are baremetal, then Linux and VxWorks. gcc, clang, make, Simics, QEMU 11-30 seconds nothing formal, as long as it works.. :< when I cannot read it on my screen (font size: 6) peer review on an ad-hoc basis 20 40 40 when it works as expected, such as LED on and off When it break or need to take ownership of other people's code define test before coding and preform clean up without breaking any test like to learn more and read James' TDD code before Show
3 5 C Python, C++ Unity, xUnit Embedded software engineer for a home appliance company. Fun Fact: Recently spent 6 months on an assignment in China living at our production facility. Purely system testing PIC32 MPLABX 11-30 seconds N/A If it does too many things Completed by a small software team 4 1 5 Building the "brains" of a system. We currently don't implement good software tests Breif introduction through the books "Test Driven Development for Embedded C" and "Dealing with Legacy Code" I believe we don't test our code well enough. I'm looking to learn more about test methods which will increase quality and confidence in our system. Show
3 9 C Python, C++, ASM, XML and JAVA I have made my own and tried Ceedling I always strive to write the best code for everyone unit testing, and run time testing with hardware embedded 32bit ARM and 8 bit IAR, eclipse, notepad++, visual studios 11-30 seconds we took the barr coding standard and modified it for our company It doesn't fit on the screen, we also have a static analysis tool that will not let you go over 100 lines in a function It is currently up to the engineer of a project to start a review. the are starting to become a requirement 40 30 30 being able to create useful things for anything It can be written in such a way that it is unreadable. testing each function to validate that it works. I tend to work like this We want to see if this will be a good learning experience for our group Show
3 10 C C++ None No thanks! Barely Smart meters Eclipse, use, visualstudio 1-5 minutes We have rules Defined in coding standsrd When there is time to 30 5 65 Making devices go alive Crashing and buggy code Coding technique to test first, debug later I like the concept if getting working code quickly and reduce bugs Show
1.5 4 C Python, MATLAB, Java Ctest, mCRL2 I am an Electronics Engineer with a MSc. in Embedded Systems. When I was studying my degree I discovered my passion for programming and I found in Embedded Systems the perfect topic to do what I like without forgeting my background. We do functional tests with Ctest I develop code for both a Renesas RX65 MCU and the ZON M3 and P3, embedded in a smart meter. I also code for PC. CrossStudio for MAXQ30, IAR Embedded Workbench and Visual Studio Code Under 10 seconds The C style guide from the company and MISRA-C rules. When you already forgot the type of a variable by the time you reach the end of the function. We don't have standarized code reviews 40 40 20 I like that you can solve the same problem in several different and creative ways. I don't like it when it gets repetitive. Nothing The company is giving us the chance to do it, and I think it is a great opportunity to learn how to perform robust testing. It can save a lot of time and it can help to gain confidence on the code you write. Show
1 10 C C++, Python, JAVA, PHP, C#, Assembly, JS and others. Cppunit, Google Test I am a person who enjoys understanding every aspect of the technology. I like also sports but as I have very few free time I usually go to the gym. I try to be proactive and I never give up once a problem comes up. Good question... In every company I have worked for, testion is a recurrent word that appears but, because of the tight delivery times the testing has been always avoided. Here, in ACLARA, our team leader is trying to change this. I had the chance to use CPPTEST but not in production. Only about one? Right now the Renesas IC is a bit unknown. I now it is a 32 bits system, its endianess, some aspects of its configuration using its registers, peripherals... But all this, or most of all, is handled using a HAL layer. Here in ACLARA we use IAR compiler for the target and MinGW for the tests using CMAKE to handle the tests and to build each of them. I like to code using vim (using cygwin now, because the use of Windows is mandatory) or VS CODE. 5-30 minutes For testing, it should take just a few minutes (I am not currently using the CMAKE testing environment that is being used) I try to use the cyclomatic complexity as metric. I try to have only one return point if it is possible. Besides, if I think the function is complex I try to break it down just thinking a bit There are not code reviews right now. I have worked before using pair programming method and it worked well. 10 60 30 Everything. I like how developing SW helps you to think in a different way. Finding a solution to a problem or implementing a feature makes me feel good as I see the code working. I like to find the best way to reach to a solution. Sometimes you cannot understand everything. I don't like to have blind points... Because, usually those points turn out into serious problems. Just some theory. I think that is pretty hard to use it, or use it well, with the preassure and tight deadlines we have in our sector. But I am willing to see it being applied just to grant that our code is developed properly. I want to learn how to organize and reach to our goals in a better way. I have been following Barr Group for years and I think I could learn a lot from your trainigs. That is why I recommended Barr Group's trainings to the company. Show
2.8 4 C Java, Matlab/Octave, Python We have used CMAKE with mingw32 for genereting unit test I am very curious, always willing to learn new things that can make me grown, not only as an engineer, but also as a person. I try to make new functionalities as isolated as possible so that we can then make unit testing on them. Thanks to Cmake we are able to launch our libraries and check if new changes in code have broken other modules. We make Smart meters => embedded system IAR embedded, Cmake, mingw 5-30 minutes We have a document describing our coding standard. They can variate a bit between projects but the idea is to have the same in future work When it has many lines and you have to scroll. When you see that some functionalities can be extracted as other functions. I try reviewing every little time what I am coding. Performing unit test helps. 30 20 50 I like "the creation of something". The feeling when you have started from something that was not even existing and then you start seeing how it gets "live". When you get stuck with long/boring repetitive task. (Sometimes you can turn this into an entertaining task, making a program to do those repetitive and boring tasks ;) ) I know little. We had no TDD a year a got and we are in the process of introducing it. As far as I know, it consist of developing using a different approach where you program smaller functions (isolating functionalities) to test them correctly. As I said, we have started with TDD not long time ago. I want to attend it so that we can learn more, see what we are doing wrong, what should we change, new approaches, etc. Show
6 6 C python, perl, ... IAR Under 10 seconds More than 100 lines 2 3 5 Show
2 3 C Python DK/DA I am a telecommunication engineer, working as a junior firmware engineer. At university and in my previous work I used to program FPGAs using VHDL. I have been programming smart meters since I joined this company. PC testing and testing in target device. Renesas microcontroller and ZON P3S IAR EW for Renesas and CrossStudio for MAXQ30 5-30 minutes We have a coding standar defined for all Smart Meters division, based on Barr Group standard. When it has more than one objective. DK/DA 30% 50% 20% I like doing things work properly. Working with slow develpment tools. DK/DA To learn and improve my software developing skills Show
1 21 C Python Bash Shell CTest Home made frameworks I've been programming for 21 years and I love it although nowadays I spend more time helping Junior programmer to grow and to do things in the right way or at least avoiding classical pitfalls. Creating tests on PC. I usually create single unit tests (when possible) and sometimes I create more complex test that involves more than one component and tests complex behaviours (entire module). This forces me to abstract hardware pieces and let me create single components(C modules) that works indendently each other. This also allow me to debug on a PC that is much easer than the embedded system. Actually is a Renesas Chip (Rx651). Its a 32bits CPU at 120Mhz with 1.5MB of internal Flash, 640KB of RAM and 16MB of external Flash. IAR embedded workbench (forced by company policy) VIM as my favorite editor 5-30 minutes We have some rules inherited/copied from some standard (Barr group,I think). Appart from this we have MISRA-C enabled in IAR IDE but we disable lot options. For me a page of code begins to annoy me. We seldom perform code reviews. 3 6 1 It's a funny work!!!, I love create products that works and I love solve technical problems. Work with slow/wrong tools/build systems. Nothing at all appart from what I can deduct from the name Because my boss wants we improve our work quality and I also think it's good for us. Show
One One C Python None I am a junior programmer and predisposed to learn good code practices! :) PC and platform testing. Smart energy meters. Visual Studio Code IAR EW for Renesas 5-30 minutes Aclara's proprietary standard One function should have responsibility over a single part of the functionality provided by the software. dk-da 20% 40% 40% When firmware works properly, it is really rewarding Dealing with frustration when bugs appear Unit testing is one of the strongest pillar when talking about maintainable and good quality code. Once you start working in a business do a good quality job or simply do not do it. I like doing good quality job. Show
1,5 1,5 C C++ None I am a junior programmer and I am ready to learn better coding practices. PC testing and in the hardware directly Electric meters IAR Embedded Workbench IDE Visual Studio Code 5-30 minutes I use the same coding standard as it is used in the code I am programming When it does more than an action I do not know what is this 40% 30% 30% It is very rewarding when the program does what you want It can be a bit frustrating It is more important to desing a good test than to code fast I think it is neccesary to know TDD to be a good programmer Show