Lecture thirteen - Software development in XXI century
Knowing how to create an optimal algorithms.
Creating desktop applications with IDEs like Visual Studio, Delphi, or Oracle Forms.
If you needed some missing functionality, then you had to develop it on your own.
Relying on your skills and the books on your shelf.
You had to be wise in the ways of mathematics.
Modern software development is about knowing the landscape of tools and libraries as well as using them.
Software development moved from desktop applications to web applications.
Single developer don't possess the knowledge needed to complete the project - Stack Overflow does.
Knowing how to work with big data and parallel computations.
Important to understand existing code and reducing self-written code to the absolute minimum.
Software developer takes functional specification and delivers the code required within tight parameters, essentially completing the task in isolation, without understanding or oversight of the project as a whole.
Software engineer is someone who thinks about the design, goes back to the business with questions and suggestions, and thinks about the impact on the business and the end user.
Back end development refers to the server side of an application and everything that communicates between the database and the user.
This type of web development usually consists of three parts: a server, an application, and a database.
Back end languages include Java, PHP, Ruby on Rails, Python, and .Net.
Front end development manages everything that users visually see first in their browser or application. It might be the website, the web app or a mobile app.
Front end developers are responsible for the look and feel of a site.
Front end languages include HTML, CSS, and Javascript. The two main front end JavaScript frameworks in the market today are AngularJS by Google and ReactJS by Facebook.
Mobile developers are a type of software developer.
They specialise in mobile technology such as building apps for Google’s Android, Apple’s iOS and Microsoft’s Windows Phone platforms.
Mobile developers learn the programming languages and software development environment for their chosen platform.
Languages of mobile developers are: Java or Kotlin for Android, Objective-C or Swift for iOS and C# for Windows Phone.
More than 60% of web traffic now comes from mobile devices, and 25% of Americans use only mobile devices to access the internet.
UI (User Interface) and UX (User Experience).
UX designer focus on the user’s usability while UI designer focuses on user’s graphic impression.
UI Responsibilities: look and feel, responsiveness and interactive image,
UX Responsibilities: strategy and content, designing flow and prototyping, execution and analytics,
UX tools are prototyping software (Appcooker, Sketch), user testing apps , HTML5, CSS, JavaScript, Jquery.
UI should know graphic programs, basics of HTML5, CSS, JavaScript.
Originally DevOps was a philosophy that promotes cooperation between software developers and operations managers.
DevOps has its roots in Agile, but it is relevant for applications developed in all methodologies.
DevOps is a system administrators participating in an agile development process.
DevOp role is to design and improve automated tools for systems management and monitoring, deploy releases and maintain services.
QA (Quality Assurance) or QE (Quality Engineering) engineer,
The QA role involves the tasks such as understanding of the software product features & domain knowledge, writing test plans, writing test specifications, manual execution of tests and interpreting results.
Also automated tests, automated execution and generation of final results summary for release level regression testing.
Need average coding skills in programming languages such as, Java, C++, Python, SQL, and XML.
Machine learning - programmers who develop machines and systems that can learn and apply knowledge without specific direction. Needed: Sci-kit Learn, Tensorflow, MXnet.
Big data specialist - management, administration and enhancements to systems based on big data architecture. Needed: Hadoop, Spark, MapReduce, ETL tools.
Other: Distributed Systems Engineer, Data Scientists, Research and Development, System architect.
Full Stack Developer is someone with familiarity in each layer of technology stack.
That means Front-end Development + Back-end Development + DevOps + Design..
Popularize by Facebook in terms of PHP developers.
"Jack of All Trades but a Master of None".
Technology stack composite the layers of components or services that are used to provide a software solution or application.
A stack is created when one layer of application is built atop the other, with the help of codes and hardware modules ranging from generic to specific.
PHP: Facebook Python: Instagram, Pinterest, Reddit Ruby: 500px, Groupon, Airbnb Java: Ebay, Amazon, Alibaba C#: Guru, Stack Overflow, Bank of America JS: LinkedIn, Walmart, PayPal
PHP is used for simple and medium-level projects and it contains a lot of boxed solutions. PHP is rather an inexpensive technology with a broad global developer community.
Python is a modern language that provides fast and quality programming. It's mainly used on medium-level and large projects. However, Python developers are not that many and are quite expensive.
Ruby is a fast modern language that's mainly used on simple and medium-level projects and that's so much favorited by startups. Developer community is scarce and cost of development is high.
Java is a hardcore language that's very expensive and slow in development. It's mainly used on projects with some very specific and sophisticated requirements.
C# is close to Java and is used on complex projects such as FinTech.
JavaScript (JS) is the latest trend in software programming. It's used extensively on all types of projects including game development.
Software development process is the process of dividing software development work into distinct phases to improve design, product management, and project management.
Agile Development Processes:
Scrum - Cyclic and iterative, rather than phase-oriented — planning and implementation are concurrent, so while the team is busy building, they’re also planning for the future.XP, Lean
Plan-Driven Methodologies:
Waterfall - The waterfall model is a sequential development approach, in which development is seen as flowing steadily downwards (like a waterfall) through several phases,PRINCE, RUP
Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: Requirements are turned into very specific test cases, then the software is improved to pass the new tests, only. This is opposed to software development that allows software to be added that is not proven to meet requirements.
Python is:
The Symbol "?:" represents in C/C++ :
In given example @xxx
define:
@xxx
def foo(x):
print("Hi, foo has been called with " + str(x))
What is the output of this program?
#include <iostream>
using namespace std;
int main ()
{
int a, b;
a = 10;
b = 4;
a = b;
b = 7;
cout << "a:";
cout << a;
cout << " b:";
cout << b;
return 0;
}
What is the output of this program?
#include <iostream>
using namespace std;
int main()
{
int a = 0;
int b = 10;
if ( a && b )
{
cout << "true"<< endl ;
}
else
{
cout << "false"<< endl ;
}
return 0;
}
What is the output of this program?
#include <iostream>
using namespace std;
int main()
{
int i, j;
j = 10;
i = (j++, j + 100, 999 + j);
cout << i;
return 0;
}
https://www.siliconrepublic.com/advice/software-developer-software-engineer-liberty-it
https://www.coursereport.com/blog/front-end-development-vs-back-end-development-where-to-start
https://www.rainerhahnekamp.com/en/modern-software-development/
https://www.upwork.com/hiring/development/choosing-the-right-software-stack-for-your-website/
http://ddi-dev.com/blog/programming/how-choose-technology-stack-web-application-development/
https://www.cprime.com/2012/09/project-management-agile-methodologies/