Tuesday, October 28, 2014

Senior Software Engineer


  1. Git
  2. design patterns
  3. Test driven development
  4. Concurrent programming
  5. Understanding of the web technologies HTTP, JavaScript, AJAX, HTML, DHTML, CS


Autodesk
Apple
NetFilx
Amazon
Expedia

experiment:
box
ServiceNow

Saturday, October 25, 2014

Cloud Computing

Cloud computing encompasses any subscription-based or pay-per-use service that, in real time over the Internet, extends IT's existing capabilities.

Cloud computing comes into focus only when you think about what IT always needs: a way to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software

1. SaaS
delivers a single application through the browser to thousands of customers using a multitenant architecture. On the customer side, it means no upfront investment in servers or software licensing; on the provider side, with just one app to maintain, costs are low compared to conventional hosting. 
Eg: Salesforce

2. PaaS
this form of cloud computing delivers development environments as a service. You build your own applications that run on the provider's infrastructure and are delivered to your users via the Internet from the provider's servers.
Eg: Azure

3. IaaS
Infrastructure as a Service is a provision model in which an organization outsources the equipment used to support operations, including storage, hardware, servers and networking components. The service provider owns the equipment and is responsible for housing, running and maintaining it. The client typically pays on a per-use basis
Eg: Azure

 Web services in the cloud:Closely related to SaaS, Web service providers offer APIs that enable developers to exploit functionality over the Internet, 
eg: APIs offered by Google Maps, ADP payroll processing, the U.S. Postal Service, Bloomberg, and even conventional credit card processing services.

Thursday, October 16, 2014

Testing types


  1. Performance testing
  2. Stress Testing
  3. Localization testing
  4. Compatibility testing
  5. UI Testing
  6. Security testing
  7. Functionality testing

Wednesday, October 15, 2014

OO Principles



  1. Accessor: is a method that is used to ask an object about itself. ( propery get)
  2. Mutator: public method used to modify the state of an object.(property set)
  3. Encapsulation: hiding data implementation by restricting access to accessors and mutators
  4. Abstraction: 
  5. inheritance: is a relationship
  6. polymorphism:  one name many forms.

Interface vs abstract class


Abstract classes are meant to be inherited from, and when one class inherits from another it means that there is a strong relationship between the 2 classes.Abstract class may provide some default implementation code.

With an interface on the other hand, the relationship between the interface itself and the class implementing the interface is not necessarily strong

abstract class would be more appropriate when there is a strong relationship between the abstract class and the classes that will derive from it. This is because an abstract class is very closely linked to inheritance, which implies a strong relationship.
But, with interfaces there need not be a strong relationship between the interface and the classes that implement the interface.

When to use abstract class and interface in Java?
Here are some guidelines on when to use an abstract class and when to use interfaces in Java:
  1. An abstract class is good if you think you will plan on using inheritance since it provides a common base class implementation to derived classes.
  2. An abstract class is also good if you want to be able to declare non-public members. In an interface, all methods must be public.
  3. If you think you will need to add methods in the future, then an abstract class is a better choice. Because if you add new method headings to an interface, then all of the classes that already implement that interface will have to be changed to implement the new methods. That can be quite a hassle.
  4. Interfaces are a good choice when you think that the API will not change for a while.
  5. Interfaces are also good when you want to have something similar to multiple inheritance, since you can implement multiple interfaces.

Thursday, October 9, 2014

Agile

  1. Individuals and interactions over processes and tools 
  2. Working software over comprehensive documentation 
  3. Customer collaboration over contract negotiation 
  4. Responding to change over following a plan 
scrum: set of sprints.
Lean practices:  Eliminate waste.
focus more on next than later
focus more on what is rather than what should be

Agile Thinking:
Speed and flexibility
A way of being best you can while managing change in a transparent cooperative manner.
Scrum:
·         A product owner creates a prioritized wish list called a product backlog.
·         During sprint planning, the team pulls a small chunk from the top of that wish list, a sprint backlog, and decides how to implement those pieces.
·         The team has a certain amount of time — a sprint (usually two to four weeks) — to complete its work, but it meets each day to assess its progress (daily Scrum).
·         Along the way, the ScrumMaster keeps the team focused on its goal.
·         At the end of the sprint, the work should be potentially shippable: ready to hand to a customer, put on a store shelf, or show to a stakeholder.
·         The sprint ends with a sprint review and retrospective.
·         As the next sprint begins, the team chooses another chunk of the product backlog and begins working again.