GreatEngineering.net
How To Be A Great Engineer
Home
Contact
Newsletter
Copyright
Terms Of Use
Sitemap
Search
Discipline
All Disciplines
System Engineering
Software Engineering
Electronic Engineering
Biomedical Engineering
Embedded System Engineering
Sitemap
All Disciplines
General Principles
Don't use a Screwdriver as a Hammer
Create Works of Art
Team Work
Mind your Language
Share Your Knowledge
Systems Take On The Attributes of their Designers
Reviews
How to conduct an effective design review
What design reviews are not
Who to involve in a design review
Secondary benefits of design reviews
Design Reviews
Documentation
Avoid "Design Specifications"
Treat Documents as Evolving Entities
Develop an Information Architecture
Types of Documents
Project Management Plans
Verification Protocols
Design Descriptions
Requirement Specifications
Project Management
Forecast your own task durations
Personal Development
Get a Girlfriend
Form a Study Group
Find a Mentor
Get A Life
Develop Your Communication Skills
Patents
Patenting Your Inventions
System Engineering
General Principles
Concurrent Engineering
Essential System Engineering Standards
Scale Your Process To Fit The Project
Introduction To System Engineering
Stakeholder Requirements
Document Your User Needs
Requirements Tracking
Requirements Analysis
Make each Engineer responsible for their Input Requirements
Avoid “Gold Plating”
Collect Downstream Requirements In Design Reviews
Separate Requirements from Design Decisions
Architectural Design
Functional Simulation and Modelling
Functional vs Physical Design
Top-down vs Bottom-up Design
Treat Interfaces Like System Components
Software Engineering
General Principles
Watch Office Space
Study The SWEBOK
Essential Software Engineering Standards
These Tips Are Complementary
Requirements Analysis
Adopt a System Approach to Software Requirements
Architectural Design
Use An Efficient Architecture and Algorithms
Design For Testability
Unit Implementation and Verification
Code for readability
Example: Rounding Errors
How to conduct a code review
Code Reviews
Unit Testing
Do Reviews
Use Assertions Liberally
Integration and Integration Testing
Do Nightly Builds
Automate Your Builds
System Testing
Using Binary Search to find Introduced Bugs
Automate your Verification
Profile Your Application
Routinely Check for Memory Leaks
Learn To Use The Debugger
Regression Testing
Release
Automate Your Release Procedure
Know When To Release
Configuration Management
Be a Team Player
Run the regression tests before each commit
Don't Use the Source Control Tool As a Backup Mechanism
Don't Break The Trunk
Commit One Change At A Time
Avoid copying source files around
Use a decent Source Code Management Tool
Use a best-practice Configuration Management process
Problem Resolution
Use A Defect Tracking System
Electronic Engineering
Implementation
Noise Problems
Separate Your Analog and Digital Power Rails
Prototypes and Feasibility
Biomedical Engineering
General Principles
Quality Management
Essential Standards for Biomedical Engineering
Medical Devices
Design Control Guidance
Medical Device Design Reviews
Regulatory Issues
Follow Good Engineering Practice, Not Just The Regulations
Work with the Regulators, Not against them
Medical Software
Follow The FDA Guidance Documents
Risk Management
Base your Risk Management approach on ISO 14971
Embedded System Engineering
Architectural Design
Avoid Design Choices Requiring Hard Real Time Response
Event Driven vs Polling
Model Your System With State Machines
Choose your CPU architecture based on software development tool support
Verification
Crank Up The Clock
Implementation
Interrupt Race Conditions
Avoid Calls Via Function Pointer
Consider adopting MISRA-C or Embedded C++
Latest Additions
Form a Study Group
Document Your User Needs
Make each Engineer responsible for their Input Requirements
Design Control Guidance
Be a Team Player
Watch Office Space
Don't use a Screwdriver as a Hammer
Mind your Language
Create Works of Art