Training Preparation -- All Questions

Years with company Years programming Primary programming language Other programming languages Unit test harnesses Something else Test practice now Target system Dev tools Build time Coding standard Function too long Code reviews Code time Test time Debug time Favorite thing about dev Least favorite thing about dev Tdd knowledge Why attending?
1 18 C C#, Python NUnit, MSTest I started my own business half a year ago and work as an independent contractor for various clients and projects Manually 8051, MSP430, Aurix, ARM Cortex-M4, dsPIC33, STM32 Atmel Studio, AURIX Development Studio, uVision, Eclipse, MPLAB, Visual Studio, Resharper 31-60 seconds MISRA, Clean Code Too many lines of code (does not fit into the screen) or to many nesting levels of if-else statemants. Mixing up integration code with operational parts. Fisheye with Crucible 60 20 20 You are never done. There is always something to improve. You are never done. There is always something to improve. Write a red test before developing a function. Make the test green. Change the test according to new requirements (red again) and adapt the function until beeing green. Want to learn to remove the dependencies to hardware and peripherals on embedded systems (mocking) Show
6 6 C/C++ Python, Java NA I have recently become hooked on playing The Legend of Zelda: Breath of the Wild. Build UI and manual test Embedded control unit w/UI Eclipse IDE 30-60 minutes Fairly straight-forward and not too rigid, but based on common practices for C++ When it is out of scope Fairly straight-forward, via Fisheye-Crucible 80 10 10 The art and form of it, plus solving uniwue problems with real-world consequnce The ambiguity behind certain frameworks and processes A little Seems like a good opportunity to learn. Show
3 5 C++ Python,Java,Bash,Javascript None Currently pursing a masters in Georgia Tech Manually MOCU is the UI that interfaces with a Robot DevTools for Javacript, GDB, Valgrind 11-30 seconds CamalCase for functions. Keep it evenly spaced When it exceeds 1000 lines of code or when there is a certain block code being repeatedly used 3 or more times We have designated peer review process 5 3 2 I like that it gives me the opportunity to solve challenging problems and can really make me think updating the documentation None It was offered by my training coordinator and was curious what it was Show
1 22 C# JavaScript, Python, Java, C, C++ XUnit, NUnit, JUnit I like to learn new things. I like to improve my skills and find better ways of doing things. Still rely a lot on compiling the whole application and then testing the changed functionality by hand. We have some unit tests, but not enough to exercise all of the functionality. Split between web apps and cross platform (Windows/Linux) desktop applications that process SAE J1939/J1708 vehicle diagnostic messages. Visual Studio Code (Linux and Windows), Notepad++, Git/BitBucket, Jira 1-5 minutes No real coding standard in place. Attempts have been made to create one but there is often disagreement on what requirements should be in the standard. It's probably too long when it exceeds about 100 lines or the control structures are nested more than 3 or 4 levels in. Code reviews are required. They tend to be done individually by reviewers using BitBucket pull request functionality. Sometimes I think too little time is spent and issues get missed. 70 10 20 Challenging and satisfying (when things work!) Creative outlet. Don't need a lot of physical space and tools. It automates repetitive and mundane tasks in a repeatable way. Tendency for everyone to want to test software as a whole application instead of building confidence through testing parts and integrating. We don't do this when we build cars (and for good reasons). Why software? Basic knowledge from reading on the topic. "Write tests before writing code." I know about unit tests and I think I know what TDD is all about but I'd like a more formal introduction. I don't like that most testing is focused on application level testing only. Show
14 17 C++ JavaScript, Bash GoogleTest, Catch2 Relatively new to team (8 months) Full system-level tests; Developing unit tests Ubuntu, Intel Core i5 dual core @ 2.60GHz, 8GB RAM GCC, CMake, Visual Studio Code, Docker, Bitbucket, Jira, Jenkins, SonarQube 31-60 seconds Code is automatically scanned using several static code analyzers via Jenkins pipeline build, results checked against quality profile rules via SonarQube, all issues to be resolved by fixing code or updating rules It has more than one job or produces multiple outputs Pull request for most changes, typically 1-2 reviewers within our dev team; Static code analysis via Jenkins pipeline for all automated builds, reports pushed to SonarQube for issue tracking and resolution 40? 30? 30? Solving problems and delivering a high quality product that performs as good or better than expected Legacy and 3rd party code that hinders new features, maintenance, and product quality High-level concept To write better code and unit tests Show
1 20 clojure Java Ruby Python C Speclj JUnit google test I'm a pilot yes cleancoders.com and client software IntelliJ / IDAE editors Mac Under 10 seconds Clean Code when it does more than one thing pair programming 50 50 5 creative outlet immediate feedback utility sitting in one place all day long lots James invited me and I'm curious Show
1 5 c# python C++ N/A Picked up programming in college and have since highly enjoyed it. Play hockey on the side and enjoy spending time on the local lakes. Currently, all human testing. linux robot VS Code/Studio, Atlassian suite 11-30 seconds Currently using the standard language style guide for the specific language When it has more than one function to it Review code on bitbucket before merging 30 30 40 Being able to solve a problem that may be impossible, or otherwise improbable, without a computer The unknowns you can run into can throw your time estimates off. The testing begins when the requirements begin, so every new code is designed to be tested, and will be tested throughout the life-cycle. To learn about TDD Show
11 10 JavaScript Python, C++, bash Karma/Jasmine, Google Test, Isolator++ I love playing almost any sport. Depends - some manual integration/system test, some unit test. UI for small unmanned ground robot control/status (called MOCU for MTRS Inc II system). Visual Studio Code, Node Webkit dev tools, gdb Under 10 seconds For C++ it exists and is pretty basic and not sure it's really considered too much when coding, but for JavaScript we have a Visual Studio Code plugin for StandardJS (semistandard version) which auto detects various non-conformance issues. When you have to scroll the page more than twice. We use Bitbucket PR feature (or Visual Studio Code) to review diffs, then build if needed, and verify with test steps in a JIRA issue. 80 10 10 It requires detail yet allows flexibility, it's chill, and normally you don't destroy hardware if you make a mistake. System testing (running through our test procedure - manual process). I understand it to be where you write the tests to fail before you write code, then you write code to make the tests pass. I was asked if I could attend, and I need continuous learning points, but it does sound like an enjoyable class and I am always up for learning more to improve my software development skills - I am confident I will learn new things. Show
0 15 Rust/C Python, Perl, VHDL, Verilog, VectorCast, CUnit, cargo-test I enjoy mushroom hunting, Jazz/Folk/Blues guitar, and baking. using Rust's built-in unit-test framework combined with hardware-in-loop test. STM32 micro-controller Vim Under 10 seconds Conforms to Rust standards and practices. If it's not obvious at a glance what the function does, it can probably be written better. Done with Mob Programming, and it's awesome. I highly suggest it. 20 50 30 I enjoy discovering solutions to problems, building circuits which address these problems, and developing control algorithms to make the thing do the thing. The tediously slow process of performing code reviews over e-mail. 1.) Identify the thing. write a robust test. test that the test fails as expected. 2.) Do the Thing. 3.) test it. 4.) if it fails, see step 2. 5.) if it passes, see step 1. 1.) My boss paid for it. 2.) I'm actually really excited to have a boss willing to pay for this kind of training instead of just telling me to google it real quick and then implement it. Show
6 29 C++ Java, C, Perl, Python JUnit back in the day I am primarily a lead Architect on most of my projects. The old fashioned way by brute force and VIM or notepad. CentOS, Ubuntu, Windows, Debian, RedHat, Yocto MS Code, Visual Studio, Eclipse, QT, GCC, G++ 5-30 minutes We mostly Google. When the logic becomes more complicated. General Pull requests in Bitbucket while using Jira and Confluence. 30 15 55 I like learning new tools and creating solutions to requirements. The unnecessary stress and pressure from over zealous managers and stakeholders. When reuse gets more complicated than necessary. I know that TDD can make things easier for troubleshooting and debugging. It also can help minimize issues earlier. It can also help with documentation and technical debt. I wanted to learn a new tool set and perhaps have an opportunity to improve our approach to development tasks. Show
3 22 C LabVIEW, RUST Cargo I work on relatively small embedded systems, electro-chemical sensor devices that measure different properties in liquids. Our team is currently switching over to RUST. Manually. I write tests in LabVIEW. My test software communicates with the target device serially, mainly RS-232 and RS-485. We are currently designing a new line of smarter sensors. Target system will use ARM Cortex-M microcontroller from STM. We will use a BLE module to support iOS and Android mobile applications to configure and monitor our device. Old tools include Code Composer Studio from TI and MCUXpresso from NXP. We will use RUST and Cargo with VS Code as our IDE. I also use mixed signal oscilloscope regularly. 1-5 minutes We have a very loose coding standard for C/C++. RUST has more defined style standards. If it takes up more than a page when printed. In our old projects, code reviews are done in bulk. We have tried Mob programming recently to have continuous code reviews. 50 25 25 I like working on products that sell. It is fulfilling to know someone is using a product that you worked on. I hate documentation. It is a necessary evil, however. Make it fail. Make it work. Make it right. Make it fast. Think of how to test it first. Boss says so. Show
0 14 C C++ Python Rust C# Java CppUnit Google Test ROS I want to become an expert in embedded safety and reliability. I want to have a sound understanding of how development practices affect safety/reliability outcomes. I also wish to become a part of the growing embedded Rust community, and learn how the language can be used as a tool for functional safety in complex embedded systems. Unit testing. On my (Agile) team, adding tests for all new code was encouraged but not required by policy, and there was a large legacy codebase without coverage, so we didn't see the full benefit of testing. Tests were run every commit by CI but not automatically on a dev workstation. I learned about TDD but never got the chance to put it into practice. Previously I have targeted STM32 as well as other ARM platforms, either on top of Linux, RTOS, or bare-metal. I'm most comfortable in vim but I can usually tune an IDE enough to be happy, when needed. I usually use a GCC or clang toolchain. 31-60 seconds We based our C++ standard on Google's, focusing more on code style consistency than higher-level issues. - Whenever it's not obvious how to isolate for testing. - Whenever it feels like it does more than one logical "thing" (I guess this is subjective). - Whenever I have to start counting arguments in the signature to call it. Organized with GitLab using Merge Requests. Reviews required two approvals from team members as well as a successful CI build/test. 40% 30% 30% Problem solving, architecting, implementing new things. Making hardware do things! Sometimes I like debugging, especially when the problem is interesting without being too frustrating. Most of the time I hate debugging. I initially hated writing tests but I've come to enjoy the way they force me to reexamine my code structure -- otherwise I tend to go down an implementation rabbit hole and end up wasting effort. I have read TDD for Embedded C, though it was a few years ago. I read Kent Beck's book years earlier, and I found it useful, but I couldn't quite grok how to apply it to the embedded work I was doing at the time until I read yours. My work signed me up for it! But I'm excited about it because since learning about TDD I've wanted to put it into practice, but haven't been able to get team adoption. Jumping in with a whole team and learning from an expert is the way to go! Show
1.5 35 C++ Python Bash Google Test, Catch2, doctest, Boost Test, Boost.ext.ut, CppUTest I love testing and refactoring! Mainly with doctest and ApprovalTests macOS, mainly CLion, mainly 31-60 seconds It's automated When it does more than one thing None - always pair-program instead 45 50 5 Helping users solve problems When working in environments where release cycles are slow due to lots of manual testing Lots... I really enjoy it. I don't have any experience of working on embedded code, and I've been asked several times for suggestions on how to test there - so I'm really looking forward to hearing what James has to say. Show
4 5 C Python CppUnitest I am a Firmware Engineer. I am very much interested in how to get quality code using TDD. We have a CppUnitest framework, but I don't have deep knowledge of it. ARM Cortex Segger JLink Visual Studio Visual GDB Visual Studio Code Make 11-30 seconds I have our own. It is a combination of some of the Standards which are already out there. I look if anything in that function can be modularise and can that module be used by some other functions. I look for structure, is it following code standards, code make sure there is nothing malicious. I also try to make sure the application code is hardware agnostic. Then I build it myself, load it and make sure the target is happy. 60% 20% 20% Coding Sometimes, build system I am not sure if I know much about it. So, that I can start implementing TDD for the future projects and see if I can apply it to the current projects Show
5 spotty 15 matlab ruby, C, java, vhdl, labview only custom vhdl testbenches, a long time ago I'm an electrical engineer, so I generally hand off my hardware after designing it to our embedded folks. I have programmed my own hardware in C in the past and want to get back to bringing up my own boards. The programming I do now is more scripting to analyze data and so it is generally running right in front of me and I am the consumer of the output, so my eyes are the test. Various embedded MCU's. TI's Code Composer Studio, Altium, matlab 1-5 minutes N/A N/A N/A 1 1 1 The quick development cycle. I don't have to send a design out to get fabricated, I just have to compile it. Its intangibility My understanding is that it's defining the successful outputs of a function before the function is written. And that this approach would lend itself to simpler software architecture and collaboration between contributors. I want to get more familiar with our product's code base and start bringing up my own boards, or at least refresh my skillset for doing so. Show
2 7 embedded C++ python C# Matlab (In the past) a proprietary, eclipse based framework for embedded C++ (I guess derived from JUnit). Microsoft Visual Studio build in Unit Testing Framework. Software development is my passion. In the past, I brought up serial codes for commercial products within an international development environment. Nowadays I am working together with many external partners. We try to set up different stages: 1. Unit tests (e.g. Microsoft Visual Studio Unit testing - but not all projects are covered, yet) 2. Integration tests - right now executed manually we distinguish between stress tests, fault injection, boundary value, and error guessing. Jenkins CI is planned here in the future. 3. Acceptance tests - Finally we have a test report which we can hand (together with the system) to uninvolved people (e.g. Product managers) Depends on the project - most likely a 32 bit ARM Cortex Mx processor. Microsoft Visual Studio Microsoft Visual Studio Code Eclipse based environment Keil uVision 31-60 seconds We are about to integrate the MISRA coding standards, checked by PC-lint (an ongoing process). It does not fit on one screen. (Use a commercially available screen resolution ;)) The external partners have a 4 eye principle. We applied a rule to our DevOps environment. For critical features, there is an additional review. 20 40 40 To see the physical interaction between the real world and our system at the end of the day. The tingle when a new release goes into serial production - bear in mind that software is always faulty. To be honest - not that much yet. I guess I heard about that in theory - but I've never seen a project developed under tdd in practice. The development lead from our daughter division asked me to participate in the course. But I am really happy and keen to learn more about tdd. Show
9 30 C/C++ Perl, Python None I like hiking and camping in the California desert. Run manual tests after implementing a feature. An embedded system to control a conductivity sensor. Eclipse IDE supplied by chip manufacturer. 1-5 minutes No company coding standard. I try to following recommendations by Steve McConnell in "Code Complete" and follow the MISRA recommendations. When it exceeds about 100 lines. Infrequent and incomplete. Performed to satisfy checkbox in a company process. 40 25 35 I like designing an elegant and maintainable solution to a problem. I dislike having to fix other people's poorly written and poorly documented code. Had an introduction to TDD by watch the Clean Coder videos. My engineering director mandated that we take the class. Show
10 18 C Python Matlab none Controls engineer primarily Mostly final testing of functionality and code reviews see Eric Renger's answer. Code Composer ST's IDE 5-30 minutes rules for variable naming, returns, globals, etc. Avoid div by 0s, infinite loops. When I can't easily trace a variable's progression through the function. We review for coding standards as well as for functionality and efficiency, though much of our functionality is tested in system tests. 20 50 30 I like the problem solving aspect of trying to get a robot to do what you want it to do with logical statements. Choosing the right data structure or approach to a problem. Mark gave our team a summary a few years ago after he attended this class. I have read some information, but have not implemented a test system. Relying on system level testing and how a device feels just isn't sufficient. We spend too much time checking for things manually that should be done automatically, and I don't want to have to do those manual checks anymore. Show
1 36 C++ Rust (moving to this as primary) Clojure (for hobby projects, web/react stuff) Lua Google Test Catch / Catch2 CPPUnit Busted clojure.test test.check (Clojure version of QuickCheck -- limited) Rust Test (part of the language) an in-house embedded unit test framework in C++ lots of others along the way I'm the R&D Director and have been doing high-reliability embedded systems since the early 1990s. I joined the company 15 months ago and have been encouraging the team to shift into modern development practices, including TDD, Clean Code, CI/CD, etc... I've been using XP since 1999 (added Kanban at some point, moved from pairs to mobs recently.) I gave a talk at Software Craftsmanship North America 2017. We are using Lua Test to do acceptance testing of one legacy project. Using Rust Test on a starting out green-field project. We make sensors and controllers for sensing properties in water. New systems are built on small ARM M-type processors, many older systems on MSP430. Lots of bare-metal, starting to use a small RTOS. CLion, VSCode rustc, cargo, clippy, etc... 11-30 seconds Rust has an opinionated style checker built in, so we use that. (Team had no standard for its previous C coding.) If it is more than 5 lines long. My preference is to use Mob Programming and code review as you go. 5 5 1 Everything. That I don't do it enough now that I'm in management. I've been using TDD since 1999 (XP Immersion III). This is almost exclusively in embedded systems and is layered with automated acceptance tests. I've read Kent Beck, Mike Feathers and Gerard Meszaros, plus GOOS and a few others along the way. Want my team better exposed and I'm looking forward to getting some insights along the way. (And I'm getting to play SW Engineer for a while, instead of the management gig.) Show
11 28 C python, matlab, php none robotics and embedded software are very interesting, but I also like to get outside, away from desks and computers capture and analyze communication between devices, run system in normal use pattern, run system in unusual use patterns embedded system, robotics, medical device, multiple embedded processors, multiple communication buses TI Code Composer Studio, Keil uVision, STM32 Cube IDE 11-30 seconds list of do's and don'ts for writing C code. usually addressed during code reviews when it becomes difficult to understand what is going on all code is reviewed by multiple software developers, reviewers then meet to go over their comments and questions 60 20 20 I like the process of writing code to solve problems and make complicated systems work in a clear, uncomplicated implementation maintaining and fixing messy code not very much our system needs more automated testing. We are starting a new software development project, so this seems like the perfect time to implement TDD. Show
25 30 C# Java C C++ Python R none Never give up using debugger and printf Xilinx Visual Studio, Eclipse 11-30 seconds whatever works More than one screen page Peer reviews 50 25 25 creativity bugs when it does not work Nothing To gain knowledge Show
20 30 java c, go, objective c, javascript, swift junit, gtest, Golangs standard test system Just another one of the code monkeys at the keyboard. junit, gtest an embedded arm system vs-code, xcode 31-60 seconds Basic standard based on SOLID and googles standard Primarily when it is doing many things and or when it is longer than a page. If its longer than a page it is probably doing multiple things I just can't see it. combination of bitbucket and live (virtual) reviews.i 40 30 20 solving problems, learning new things solving problems Write test, fail test, write code, pass test rinse and repeat Learn new techniques for doing TDD with c. My current setup with docker/gtest/cmake is a bit clunky Show
2 25 c# .net javascript/jquery, angular, ember, c language, c++, jasmine & Karma I have masters degree in Software Engineering back in 1998. My passion in programming leads me along the way, and that is why I have stayed for many years as a Software Developer working in a team environment. Most of the time, by simulating as a user, what are the possibilities. I also utilize the use of Fiddler and SQL Query Analyzer. I know there are built in unit test in Visual Studio like Assert, and in Angular, I could utilize and use Jasmine & Karma. my target system or framework is MVVM architecture. VS Core and Visual Studio 2015 11-30 seconds I have used STIG (Security Technical Implementation Guide) in the past. I like it to be short, portable and table driven. I like writing classes, arrays and have fundamental knowledge in dependency injection, delegates and events. when it is covering the whole screen, and have to use the scroll button to navigate. it needs to be analyzed and see how to enhance it. I pay attention on using access modifiers and data types, and on how memories are being consumed. I like the code when it is readable by other developers not just me. 30 50 20 I like it when we all know what we are doing, why we are doing it, and how we plan on doing it, and setting up goals and meet deadlines, and meet customer demands an high standards. I prefer Agile development, and Scrum methodologies. Waterfall development is tedious. The use of third party tool can be cumbersome when there licensing is involve. Test driven development. Not very much. I would like to learn TDD, and all its ups and downs, and thinking how to apply it with our current technologies. Show
2 10+ C C++, Python, Java JUnit In the past have developed for Telecom switches and Data server Unit test cases IntelPOC UT69000R GCC 5-30 minutes Internally developed C/C++ standard When it goes over screen length Web-based diff/Collaborative review tool 30 60 10 Learning new technologies reading undocumented code Testing as code is being developed To learn TDD practices in C/C++ Show
1 12 Embedded C C#, Batch scripting, Powershell scripting None for SW dev. All Windows based - very little Linux experience. System Testing post releases... RTUs (Embedded Systems): - ARM uCs(Atmel & Siliconlabs) Sub GHz, - Small flash & ram - OpenRTOS & FatFS - GNU ARM compiler (arm-none-eabi-gcc) - Ethernet, serial, usb, zigbee interfaces - Dig In & Out, An In & Out, RTD - RTC, GPS - Simply Studio (Silabs), Atmel Studio & Visual Studio. - JLINK - Wireshark - Putty (telnet) - HxD - Git & SVN 11-30 seconds Consistency and commenting is most important. Treat all internal components in a similar manner. Treat all global components in a similar manner. Provide context in names of components. When it serves more than its original purpose - a function should have a purpose and do little more than that. In general though when it is hard to navigate through the components of a function - it is probably too long. There is usually no time for code reviews. 40 20 40 The ability to design, implement and visualize solutions for various protocols and interfaces in complex systems. - Having to go back and fix issues in code that was written by myself or someone else after a long period. Very little. To learn about the principles of TDD in order to ease and speed up design and development of SW & FW. Show
5 months 4 C++ Java, C none Having only just graduated and started working afterwards left me inexperienced. I am considered new to C++ overall however I can manage to work with it. I am completely new to C and embedded systems as well. I do not. No specific target system. QT for c++ 1-5 minutes functions have conventional names, easy to read. When it performs a lot of actions. A function should be short. we trace the parts we are interested in. 70% 0% 30% I like coding, it gives me a challenge. not figuring out the solution of something, and debugging. A colleague. What I think is that I feel like it's necessary to learn about TDD as it may help finding future bugs, and it helps deliver the software early. Show
1 5 java, c++ python, c, none i love learning new things and code and go to the gym i dont . Qt 11-30 seconds the code must be clean so i try to get my code as clean as possible if it do many things and not a single thing mayeb to trace the code all over 70 0 30 To see my program running perfectly and without bugs is so satisfying errors time saving, and can accelerate your productivity so much so that sometimes you need some hardware for the test but with TDD it is much easier to improve my testing in code and save a lot of time Show
5 30 C Python. Have used Javascript, HTML, CSS, C++, Perl, Assembler and PHP in the past. Python unit testing. Into Scifi and currently enjoying season 2 of the Mandalorian. Bespoke Python test harness over the serial port to exercise and validate the running code via a shell. Manual testing by an experience field engineer. Embedded real-time control system for Oil/Gas sampling system. Keil uVision. Linux 5-30 minutes There is no official coding standard, but I try to keep to Misra 2004. When it is too long and you are unable to understand the functionality. Usually aim for around 50 lines max. There is usually only myself working on the code. 50 20 30 Problem solving. Picking up someone elses poorly written/structured code in order to fix a bug. Test driven development, not that much. To learn something and so I can make my code more reliable. Show
0 5 Python Mostly C and Java, however I have also done a little C++. I have some minor exposure to CppUTest through my internship. In addition I have some minor experience with the python unittest framework through my internship. I am a recently graduated computer engineer. In addition to my interest in embedded systems, I am also very interested in machine learning and artificial intelligence. Outside of engineering I love playing sports, and the outdoors. For most of my personal projects I do not employee any unit testing currently. I do not have a specific target system. I use visual studio code for all python programming. I use gcc from the command line and visual studio code for c programming. 31-60 seconds I do not use a specific coding standard for personal projects. But I do use autopep8 for consistent indentation in python projects. In addition I use CamelCase for larger projects. Generally I would say a function is too long if it does more than a single thing. So maybe we are writing a function to do something numerical, and part of that is matrix multiplication. There should be a function that does ONLY matrix multiplication During my internship there was a CI/CD pipeline on our gitbucket server. Each time a push was made it would run all the tests and then you could review any code changes. The whole team reviewed all pushes to the repository at the end of each day. 6 1 3 I like software engineering because I think there is a creative aspect to it. I enjoy STEM topics and I am also pretty creative so I like how sometimes software engineering can combine those two aspects. I do not like the fact that sometimes programming involves spending incredibly large amounts of time debugging code. My understanding is that tdd shifts the process from starting with writing a function and then writing a test; to writing the test first and then writing the corresponding functionality. Using some tdd made finding errors easier during my internship I am attending the training class because it was offered to me, and I am interested in the subject matter. I found the tdd method useful for team programming efficiency during my internship and I would like to learn more about the methodology. Show
0 30 Swift Started on FORTRAN did C for a while, did just a touch of C++ then years of Java with all types of scripting Perl/shell/html etc. lately Swift and iOS. JUnit, touched Nunit; now focusing on Apples XCT Xcode test. I’m a sailor, a dog person, I’m married to Tracy we have no kids and hope to retire soon. Experimentation constantly Much of the last iOS app I wrote was 90% UI and so it was constantly running in simulator. IOS and Mac. Maybe Mac servers. Cloud servers. Xcode What Unix tools I can remember Xcode simulator and instruments tool Under 10 seconds Hmm, I guess it’s following along the lines of a C based std. but way more wordy than the old days. Heck I just had to fix some misspelled words that broke the Apple compiler so bad it gave the wrong error messages When I’ve got to scroll the screen. I’m currently a team of one. Except on a side project. Pair programming with Lance Kind and TDD.Academy. 80 18 2 Building things. That feeling of dopamine when it all comes togeather on a screen. Trying to remember one thousand details that are only needed for this one little bit of code that will be forgotten as soon as I can get it to work right. Kent beck and others invented it to make my life with code so much easier. If only I’d use it -ALL the time. I’m interested in how an expert teaches TDD and all the extras of a hard domain today. Show
24 46 C++ C, Matlab,bash script (in the past I used FORTRAN, Assembler, Pascal, BASIC) None I studied electronic engineering first and then I got a PhD on robotics. So my education is not on software development. I studied FORTRAN, Assembler and Pascal during my master at the University. Then I studied by self-taught C and C++ and perfected it. Because of this history my C++ skills are not "canonical". My expertize area is on scientific programming and, in particular, in optimization of the code. Optimization is obtained choosing the fastest mathematical algorithms and parallelizing and vectorizing the code. Because of bad experiences in the past I have decided to take this course. I am now mostly working on a 1.8 Mb long code: and I just discovered TDD. I have to implement a testing for this code and learn how to use TDD when I will start to work an a new code. I just test the lines of code I write (trying to do the more exhaustive possible set of conditions) and then I keep the code. I realize this produces, especially on a large software, a code that fails easily and it is difficult to maintain. x86_64 Linux. Code I develop normally needs at least 4 cores to run in real-time (lot of calculations). gcc, cmake and eclipse for C++ (now) 11-30 seconds I don't understand the question. I try to implement a single mathematical algorithm or a single initialization in a routine. But I do not have a criteria. I just know that I do not like to reduce to much the routine length since I found "minced code" difficult to understand. I don't understand the question. Maybe the what follow answers: usually the result of my code are data processing or model software whose results are used on our experiment and/or presented at a conference. I do not have a formal reviewing process. 40 40 20 I like to get a problem from a scientist and solve it with an optimized software. I often get a matlab or a C++ routine and make it run very fast, possibly with more accurate algorithm and results. Re-working many times on the same code (for big changes). This often break the code (now developed without TDD) and the bugs can appear in the worst moments. I only read the googletest tutorial. During an esperimental cruise I got a nasty bugs due to new addition to a code that caused ALL the algorithms, which was running well beforehand, have problems. After asking him, my new software development boss told me about TDD. Show
7 20+ C/C++ C# None N/A Run testcases as a whole project FreeRTOS and Linux Simplicity Studio Atmel Studio Visual Studio 11-30 seconds N/A more than 100 lines N/A 50 30 20 n/a n/a n/a n/a Show
3 15 C++ 11 Typescript; Java; gtest; junit; FitNesse; I am currently working as a Scrum Master with some focus on technical excellence. I like practising TDD. Every now and then I try ATDD as well. Unfortunately I am not writing much code at the moment. But I try to do my best to get the teams running with TDD and unit testing. At the moment our target system are several micro services within an internal IT department. Mostly IntelliJ for writing Code. GitLab for building and deploying the artefacts. 1-5 minutes We try to stick to four rules of simple design. Some clean code principles like only 5 lines per method. Only two parameters. Intentionally naming of variables, methods, classes and so forth. 5 Lines of Code should be enough. We always try to keep our functions only 5 lines long. We mostly try to do Pair-Programming 20 20 60 I like learning new things. With things I mean e.g. patterns, principles and so on. Last week we did a Kata and tried to only write code based on principles like balanced abstraction, step down rule and so on. I like refactoring of code. I don't like to convince people about TDD. I have read some books about it. "Test driven devlopment by example" - "Acceptance driven development by example". And I try to do my best to practice TDD as much as possible. I would like to see, hear and practice how TDD works from an expert. So not only from the books and self educated. One of my first jobs was about writing code for cashless payment systems. I would so embedded C/C++. So a perfect match. Show
1 2-3 C++ C, Python, Perl None I am a recent graduate of UMBC, University of Maryland, Baltimore County We have a suite of apps that can be deployed for simulation purposes on a Desktop PC as well as on our target system. We develop radar detection systems fighter jet and test against that Visual Studio, UltraEdit, BeyondCompare, MULTI 1-5 minutes Honestly, I'm not very familiar with our coding standard as it hasn't been stressed very much in my time here When I have to constantly refer back to previous sections of the function to determine the flow of the function We don't have a consistent for of code review. Sometimes a senior member of our team will review my code, but usually all of our team contributes their changes to a collective baseline and the baseline is tested overall. 15 20 65 I like the challege of breaking down code to figure out what its doing and I appreciate the ability to create code to serve as a solution to some problem. I don't like the opaqueness of testing, where it can become increasingly difficult to accurately determine where things are going wrong. Not very much I'm interested in hearing about another approach to software development, I also hope to increase my knowledge and develop my expertise in software development processes Show
10+ 10+ C/C++ Java Script None I Have more than 15 years of programming experience but I use the traditional method of debugging. Its mainly functional testing by putting the executable directly in the target board and use printf statements for debugging. Its X86 board with stripped version of Linux ( Ubuntu 10.04). The Kernel is 2.29.6. It has the peripherals ( IOs), LAN Port, Zigbee port Ubuntu 10.04 Eclipse (LUNA) for development For Microcontroller Keil5 and for ARM IAR 1-5 minutes Basic Coding standard 1. When you have to scroll the page 2. More than 100 lines Peer to peer code review is done. Another developer does the code review and put comments in an excel sheet. Modification is done based on that and proper comments are placed in the same excel sheet. 40 30 30 1. Seeing the transformation of idea/requirement to a real life solution 2. My idea controlling something real 3. Taking inputs from real world and giving some out put 1. Hectic schedule/Long hours of work 2. Unrealistic requirement 3. Stress Nothing. It is complete new to me. As I said I follow traditional method of debugging. With the older approach, some scenarios are left undetected in lab testing but appear in field scenario. Want to minimize that so that such situation can be avoided. Reproducing/debugging an issue reported from field is quite difficult. Show
2 4 C++ Python, C, JavaScript, Haskell pytest I enjoy programming and especially in the embedded context. It seems to me quite special to be able to program instruments and small devices. I am new to embedded programing and despite its initial challenges, what I have found most difficult is to organize a decent method of working within this domain. Hardware Prototype in loop, trial and error. 8 bit and 32 bit low end Microcontroller based Instrument Control Systems. These in some cases work in tandem with an Embedded Linux based HMI written in C++/Qt. STM32Cube, Viusal Studio Code, Visual Studio, Qt Creator, Vim Under 10 seconds C++ coding standard guidelines If a function does more than one thing, or if it mixes pure computation and IO, I try to separate them. No review process in place. Static analysis tools - not in embedded. 10 30 60 Building Abstractions that lift the semantics of the code closer to the domain of the project. As project size increases, new requirements are brought in - things can start becoming quite complex due to the hidden dependencies they have on each other. I understand its (immense) usefulness and do depend on tests to have confidence in the code I have written. However, I do no know of testing outside of Unit tests. I had a really bad experience on the previous project. I don't want to be in such a position again where my code is so fragile. Needing hardware in loop when programming embedded systems - I would like get out of this. Show
2 5 C++ Python gtest Frustrated about bugs in my code, eager to learn about TDD paradigm. use gtest and gmock Windows Visual Studio 11-30 seconds Write code that is readable and fast When it is hard to follow. Having discussions with several peers. Check in when all agree with the change 40 10 50 Deriving methods to solve problems When code doesn't work, debugging Come up with test first, then code to let the test pass To reduce careless mistakes in my code, reduce time spent on debugging Show
3 10 C/C++ C#,Powershell Google Test I love writing code, I love Operating systems and system level programming. I'm very curios person and I like to understand everything is details. yes Windows Low Level System Programming, Device Driver and System level code C/C++,git,tc, Visual Studio 1-5 minutes I like to use modern C++, use the STL as much as possible. If I have to scroll to see the full function It it is doing more than 1 thing. Code review needs to be reviewed and approved by 2 people. 50 25 25 That I can design and implement something from scratch. Getting the computer to do exactly what you want is awesome. I love solving problems. Having to deal with old legacy systems that I do not fully understand. It helps developing software in small increments and it shortens the time to between writing a bug and finding/fixing the bug. Because I want to learn more about TDD Show
2.5 10 C and C++ Pyhton (novice), Shell scripting gtest - Have programmed for embedded, driver and middleware components for Android/Linux, Symbian and Windows platform primarily in C and C++. - Have written some unit tests using gtest along with custom mocks/gmock, component tests and system tests. - Like to improve testing skills to find better bugs and vulnerabilities - Unit test using gtest (most of new code, some legacy) - Component tests e.g. client/server, COM client/component - Automated system tests using proprietary automation framework. Mostly regression, updated when a new feature changes some system aspect - Manual testing. Uncover more feature specific end-to-end test - Performance and stress testing using industry standard tests for enterprise e.g. LoginVSI for single server scalability Windows on X86 Microsoft visual studio (MSVC++), Trace tools (based on windows event trace logging system), build scripts using power shell, Windows debugger(WinDbg), Wireshark, git 1-5 minutes Mostly uses standard C/C++ coding conventions - Function seems to do much more than stated purpose - Is too big (lines of code) - Has too much nesting (cyclomatic complexity) Code reviews are done using review tools (Atlassian bitbucket), requiring at least two human approvals one of which is generally required from SME. An additional bot "reviews" for build success and automated smoke/sanity tests's success 35 30 35 - Great to design systems - Great to implement systems - Satisfying to make code do expected - Learn new technologies and ways - Understand systems how they work and solve issues (sort of puzzle solving) - Delivering value to customers - Legacy code and maintenance - When new to a complex system in place it is difficult to balance between requirements and efficiency and understand big picture (however it feels good to overcome these and understand the system) - Effort estimation Very little - Name, and that it is different approach where tests are developed early based on requirement unlike traditional approach. These tests are used as sort of specification to ensure code meets the requirement. - Want to see if there are better and more efficient ways of doing tests - TDD sounds fascinating and curious how we can develop tests so early Show
1 4 C++ Python, C - - 1.Using the Gtest framework to write unit tests 2.Automation tests using python and the RobotFramework. - VSCode, Linux based debugging (gdb). 30-60 minutes - 1. The easiest metric to use is the number of lines 2. If the function is performing multiple actions (changing the state of multiple variables, performing multiple calculations, etc.) - 50 30 20 - - That you write a test for the first and then develop the software To gain a better understanding of TDD so I can learn how to write better, more secure code. Show
1 4 C++ Python, C - I am a new graduate hire. This is my first full time job as a software developer. 1.Using the Gtest framework to write unit tests 2.Automation tests using python and the RobotFramework. - VSCode, Linux based debugging (gdb). 30-60 minutes - 1. The easiest metric to use is the number of lines 2. If the function is performing multiple actions (changing the state of multiple variables, performing multiple calculations, etc.) - 50 30 20 - - That you write a test for the first and then develop the software To gain a better understanding of TDD so I can learn how to write better, more secure code. Show
4 20 C++ Java, Kotlin, Ruby, JavaScript Google Test, CppUTest, JUnit I see a trend that most mainstream programming languages are adopting functional programming features into their languages. I'm in the process of trying to learn more about functional programming and think it might be good to use in combination with TDD. I spend most of my time testing by writing unit tests to verify the code under test is doing what I expect. Next I test the code in production to verify it's working as expected when integrated with the rest of the system. Currently writing software that runs on multiple platforms. We have to make sure we can write as much cross platform code as possible so that the same code can be reused on all platforms. Visual Studio, Visual Studio Code, Android Studio, Clang, CMake, Git, Windows Terminal, Docker, Windows Subsystem for Linux 11-30 seconds We try to keep our tools up to date with the latest standards and use C++17. We encourage our developers to use the modern features of the language to improve code clarity, such as using smart pointers instead of manually managing memory. I feel like a good way to tell if a function is too long is if it violates the Single Responsibility Principle. Everyone on our domain team gets added to the code review and is free to comment any suggestions. Two developers need to approve the code review before it gets submitted into main branch. 40 20 40 I like that programming gives us the ability to create so many great things and all you need is your computer. Trying to figure out the root cause of a software bug that is intermittent can be frustrating. TDD is a test first approach to writing software. You write the unit test first before any production code is created. This has the advantage of never having to submit production code without tests and also improves the design of the code. I've taken this TDD class, but many years ago. I think taking this class again will remind me of the all concepts I learned in the past and give me extra insight to apply them better. Show
9 14 c/c++ c#, python, java script, groovy, powershell, java googletest mocha, chai, Jasmine . We have unit tests, component tests and system test. Recently there are more emphasis on unit tests and we have been adding more unit tests. Unit tests runs as part of our CI/CD steps in jenkins during the build. Build is not successful if any one of the UT fails. Windows, Linux, MacOS, HTML5/WebAssembly VS, VSCode with various plugin. Windbg. Under 10 seconds . when I have to scroll to see full function. . 40 20 15 . . . . Show
4 6 C++ C gtest and gmock I am fairly new to Object oriented programming and part of a team which is tightly coupled with MS subsystem. I am part of protocol team as well which is predominantly client-server architecture both on the same machine as well as over the network with multiple components (named pipes, network socket, COM etc) Wherever possible and wherever there's an ROI, for all new code, we write unit tests and legacy code predominantly gets tested at system level Target system is Windows 10 or 2016 VDA connecting with a client (windows, mac etc) and running along with multiple components in the middle interacting with each other at various times. Visual Studio, Sublime 30-60 minutes Beginner with clear and readable code. Keeping code as simple and efficient as possible. Write a lot of comments where ever possible. When multiple independent operations are clubbed together Looking at working as well as readability of code along with avoiding static analysis errors. 5 3 2 Amount of learning involved and how designs and concepts are so beautiful. Gives the jitter on anything new that I take up. Best thing is, we can work from anywhere :) I love the variety of things that can be done. sitting in front of the computer all day :) Writing code with testability in mind, not just writing tests before writing code To learn and adapt wherever possible and wherever it makes sense to invest Show
12 since 2005 C C++, little bit of python and C# googletest I prefer to follow a pragmatic approach to software engineering and development, exploration and experimentation. mix of automation, unit test, component test and manually. depends...it could be linux or windows, simple or complex deployment VS Code, Visual studio, git bitbucket 5-30 minutes short functions, no global variables, simple solutions and code obvious to understand nested control structures, duplicate code, unnecessary overhead, having multiple responsibilities, depends... Understand what problem this code change addressing and how. Flow of the code and data. Avoid or minimize use of global, local variables. Error handling, resource cleanup, return values and parameters to functions, their time etc. 40 20 40 Problem solving, to be able to synthesize thought/idea to real world code. too much context switching Write failing test case and let it fail, then write the (production) code that makes it pass. I am convinced with the value and importance of Test driven development. To consciously develop the mindset needed to apply TDD skills in every day operations. Show
2 19 C++ Python, Go, C Unity, GoogleTest Wes Montgomery is my favourite guitarist. GoogleTest - I have unit tests integrated in some parts of some projects, but an uphill battle to incorporate it int Mostly XMOS MCUs or embedded Linux targets. gcc, vim, CMake 1-5 minutes Working towards adopting and formalising one More than two screens. Many of them are too long anyway. Upsource - we have a language-agnostic set of acceptance criteria 30 30 40 Working through obscurity and indecision to develop a working, well-crafted system is really satisfying. Gumption traps are acutely painful. In principle, it structures development activity as a short feedback loop within a rigid and supportive mental model. In practice, it tends to encourage implementing programs as assemblies of implementations-with-interfaces. When I've been able to use it (i.e. in C++), it's been a really satisfying workflow. I want to discover good ways to introduce it into C-based development, and to gather ideas for adapting legacy code so that tests can be added. Show
4 20 C++ C, XC (for XMOS), Python, bash, Groovy Googletest Probably the thing about me most pertinent to this training is that I largely work with what Michael Feathers refers to as a large legacy codebase. There are a number of ways and it varies. New code is generally developed along with unit tests - these run as part of the build on the CI system. The unit tests either run the code natively on Windows/macOS or use a simulator for hardware specific functionality. There is an automated test harness using real hardware for end-to-end/integration tests. We have some great QA engineers who do manual testing and who develop automated tests. I do some manual testing while developing the code. I work with a legacy codebase and some of these testing methods have been relatively recently adopted - a lot of code is not under test... USB, XMOS processor, audio, real-time. VSCode, git, XMOS toolchain (including XGDB), xTag debugger, GoogleTest, lots of bash, Beagle USB analyser, Jenkins, Artifactory, YouTrack, make, cmake 31-60 seconds We're currently discussing coding standard across the company - there isn't one currently in place. I feel like I could look this up and give you a technically correct answer. In practice, a function is too long when I can't keep all the context in my head, or when it does more than one thing, or maybe more than 50 lines. It varies. Code reviews vary from meetings to discuss the approach taken to fix a particular issue to using UpSource or using merge requests in GitLab. They vary from project to project and the availability of appropriate reviewers. 20% 20% 50% Building things, getting things done, problem solving, helping people. Feeling there is not enough time / resourcing. I have heard about it on podcasts, I have read a couple of books, I used it in a project (which went well) and I enjoyed the rhythm of TDD. I first heard you (James Grenning) on the 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