OrBit Technologies, Inc.
Software related resources I've found useful over the years, I hope some of these will help others.
Books/Sites
Many of these are related to C/C++ but are still useful for other languages, particular if it is uses C/C++ syntax as most do. This is a short list of ones I believe may stand the test of time. Stay updated, the great thing about this profession is there's always something new to learn. Remember to stay results oriented and apply your new found knowledge to better humanity.
- SWEBOK (IEEE Software Engineering Body of Knowledge)
- The C++ Programming Language
- Design Patterns: Elements of Reusable Object-Oriented Software
- Numerical Recipes in C
- The Art of Computer Programming - Extra credit
- Stack Overflow - Excellent resource to answer your questions, it's been around so long you may have to weed through some outdated answers.
Organizations
- IEEE (Institute of Electrical and Electronics Engineers)
- ACM (Association for Computing Machinery)
- SEI (Software Engineering Institute)
- W3C - Web Standards/guidelines including HTML, JavaScript, and Accessibility(WCAG) among others.
- Interactive Design Foundation - UX(User Experience)
- OMG (Object Management Group) - UML and modeling specifications/certifications
Frameworks/Libraries
I've used many others but these stood out from the rest.
- Quantum Leaps HSM (Hierarchical State Machines) - I've used this successfully on several projects, implement UML state charts in code.
- Boost - C++ library
- ACE (Adaptive Communication Environment) - Implements common patterns for distributed real-time systems.
- QT - I don't have extensive experience with this, just debugging and some simple additions to existing projects, but what I've seen it's a nice real-time system with GUI capabilities.
- Bootstrap - CSS components/themes
- React - JS components
- CodeIgniter - PHP Framework
Processes/Methods
I don't advocate any particular process but I do believe it's critical to have a process. Find what works for you, evaluate, adapt.
- Waterfall - I've found it works well on projects where the goals/requirements are well known up front.
- Agile - I'm a strong believer in the four key values. Iterative development works especially well when the requirements are not known or the project needs to adapt to a changing environment.
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
- Pair Programming - This doesn't have to be formal, bounce a problem off an acquaintance or post on an appropriate site.
- Peer Reviews - If done right can be very helpful, requires strong leadership to keep focused.