Table Of Contents

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
  • 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.

MISC

References