Table Of Contents
- Software Development
- Please Read First
- An Introduction
- Technologies
- General
- Getting Started
- People To Follow
- FAQ
- Learning Materials
- References
Please Read First
An Introduction
By definition, Software Developer is a technical engineering job of creating software applications using some kind of programming language, Operating System and/or Hardware on which program executes.
Software Developer is a term which is loosely interchangable with many designations and roles. Below mentioned roles are all under the umbrella of Software Developer. Although it is also not established in the industry that what is the official or most accurate job role, hence there are no standards for it.
- Software Engineer
- Programmer
- Coder
- Developer
Seniority in any of the role mentioned above outlines more experience and expansion of things to do but underline objective of creating software applications remains same. Sometimes organisations append technology or programming language before the title to emphasize on the requirement of technology. For e.g.: PHP Software Developer or Software Engineer - Java.
Term full-stack engineer / developer is used to identify a professional who can work on all the layers of application. Layers include Front-end, back-end, APIs, Infrastructure, Data layer, etc.
Technologies
Technologies is a broad term to define tools, utilities or anything which is used to develop applications. It includes Operating System, Programming Languages, Frameworks, Architectures, Platforms, APIs, etc, etc. Some of these technolgoies are mentioned below for brevity only.
Programming Languages
- C / C++
- C#
- Java
- PHP
- Perl
- Python
- Ruby
- Go
- Rust
- Objective C
- Swift
- Kotlin
- Javascript
- Lua
- Basic
- R and many others
Frameworks
Frameworks are heavily influenced by programming languages most of the time. Due to the cardinality of them, list of frameworks are grouped for languages
- Java (Struts, Spring, J2EE)
- PHP (Laravel, CodeIgniter, Symfony, Yii, CakePHP, Wordpress)
- C# (.NET Framework, Mono, WPF, WCF, ADO.NET)
- Python (django, Flask, web2py, bottle)
- Javascript (Angular, jQuery, Express.js, Next.js, React, Vue.js)
Operating Systems / Virtualizations
- Android OS
- iOS
- Linux / Unix / Ubuntu
- Windows
- MacOS
- Containers / Docker
- Browser / Web
SESE (Software Engineering Support Environments)
These are the tools or utilites which help in any phase of the lifecycle of software development.
IDE (Integrated Development Environment)
- IntelliJ IDEA
- Eclipse
- PyCharm
- Visual Studio
- Visual Studio Code
- vim
- WebStrom
- XCode
- Android Studio
- NetBeans
- AWS Cloud9
- AppCode
General
Getting Started
People To Follow
FAQ
Learning Materials
Courses
Books To Look Into
Youtube Channels
Testing Software
- Testing In General
- Tutorial from ThoughtWorks on Test Suite Composition: The Practical Test Pyramid. Note: A look into the testing pyramid.
- Post from Simon Stewart at Google on Test Type Definitions: Test Sizes. This is the source of the test sizes (small (aka unit), medium (aka integration), large (aka system)) kind of referenced in the previous link
- Post from Alan Page of Angry Weasel on Integrated/Test-First vs. Silo’ed/Test-Last Schools: Two new…schools?.
- Parable from Alberto Savoia on Test Coverage: What is a reasonable code coverage % for unit tests (and why)
- Test-Driven Development
- Post by David Heinemeier Hansson on what he calls ‘test-first fundamentalism’: TDD is dead. Long live testing. While many developers benefit from test-driven development (TDD) and advocate its practice, this is perspective you might find interesting, particularly regarding things your team may be grappling with as they consider and refine their practice of TDD.
- Discussions between Kent Beck, David Heinemeier Hansson, and Martin Fowler on TDD: Is TDD Dead?.
Agile in General
- Online Specialization on Coursera: Agile Development
- Tutorial on about agile on Alex’s Site: Agile - Just the Basics. This page covers…the basics. It’s a good place to start if you want to understand the general nature of a topic and how it relates to the practice of agile.
- Tutorial on about Using User Stories on Alex’s Site: Your Best Agile User Story. This page covers the user story- how to prepare to write them, how to use them, and how to link them to implementation and testing.
- Bringing Design to Agile
- Tutorial on Alex’s Site: Venture Design. This page provides a comprehensive set of resources. What I would do for a general overview is just read the intro to each of the areas (Personas, Problem Scenarios, etc.).
- Tutorial on Alex’s Site: Venture Design Sprints. This page provides an overview of design sprints and four different focal types for those sprints: Problems, Motivation, Usability, and Architecture.
- Bringing Lean Startup to Agile
- Tutorial on Alex’s Site: Your Lean Startup. This tutorial will allow you to review the fundamentals and a few case studies. It also links to the applicable Venture Design templates.