You are on page 1of 3

20SubjectsEverySoftwareEngineer

ShouldKnow
byCagdasBasaraner Jul.02,12AgileZone

Like(3) Comment(2) Save Tweet

LearnmoreabouthowDevOpsteamsmustadoptamoreagiledevelopmentprocess,working
inparallelinsteadofwaitingonotherteamstofinishtheircomponentsorforresourcesto
becomeavailable,broughttoyouinpartnershipwithCATechnologies.

Herearethemostimportantsubjectsforsoftwareengineering,withbriefexplanations:

1.Objectorientedanalysis&design: For better maintainability, reusability and faster


development,themostwellacceptedapproach,shortlyOOADanditsSOLIDprincipalsare
veryimportantforsoftwareengineering.

2.Software quality factors: Software engineering depends on some very


importantqualityfactors.Understandingandapplyingthemiscrucial.

3.Datastructures&algorithms:Basicdatastructures like array, list, stack, tree, map,


set etc. and useful algorithms are vital for software development. T heir logical structure
shouldbeknown.

4. BigO notation: BigO notation indicates the performance of an algorithm/code


section.Understandingitisveryimportantforcomparingperformances.

5.UML notation: UML is the universal and complete language for software design &
analysis.IfthereislackofUMLinadevelopmentprocess,itfeelsthereisnoengineering.

6.Software processes and metrics: Software enginnering is not a random process. It


requires a high level of systematic and some numbers to monitor those techniques.
So,processesandmetricsareessential.
7.Designpatterns:Designpatternsarestandardandmosteffectivesolutionsforspecific
problems.Ifyoudon'twanttoreinventthewheel,youshouldlearnthem.

8.Operating systems basics: Learning OS basics is very important because all


applications runs on it. By learning it, we can have better vision, viewpoints and
performanceforourapplications.

9.Computerorganizationbasics:AllapplicationsincludingOSrequiresahardwarefor
physical interaction. So, learningcomputer organization basics is vital again for
bettervision,viewpointsandperformance.

10.Network basics: Network is related with computer organization, OS and the whole
informationtransferprocess.Inanycasewewillfaceitwhilesoftwaredevelopment.So,itis
importanttolearnnetworkbasics.

11.Requirementanalysis:Requirementanalysisisthestartingpointandoneofthemost
important parts of software engineering. Performing it correctly and practically needs
experiencebutitisveryessential.

12.Software testing: Testing is another important part of software engineering. Unit


testing, its best practices and techniques like black box, white box, mocking, TDD,
integrationtestingetc.aresubjectswhichmustbeknown.

13.Dependencymanagement:Library(JAR,DLLetc.)management,andwidelyknown
tools(Maven,Ant,Ivyetc.)areessentialforlargeprojects.Otherwise,antipatternslikeJar
Hellareinevitable.

14.Continuousintegration:Continuousintegrationbringseasinessandautomaticityfor
testing large modules, components and also performs autoversioning. Its aim and tools
(likeHudsonetc.)shouldbeknown.

15.ORM (Object relational mapping): ORM and its widely known implementation
Hibernateframeworkisanimportanttechniqueformappingobjectsintodatabasetables.It
reducescodelengthandmaintenancetime.
16.DI (Dependency Injection): DI or IoC (Inversion of Control) and its widely known
implementation Spring framework makes life easy for object creation and lifetime
managementonbigenterpriseapplications.

17.Versioncontrollingsystems:VCStools(SVN,TFS,CVSetc.)areveryimportantby
saving so much time for collaborative works and versioning. Their logical viewpoint and
standardcammandsshouldbeknown.

18.Internationalization(i18n): i18n by extracting strings into external files is the best


wayofsupportingmultiplelanguagesinourapplications.ItspracticesondifferentIDEsand
technologiesmustbeknown.

19.Architectural patterns: Understanding architectural design patterns (like MVC,


MVP,MVVMetc.)isessentialforproducingamaintainable,clean,extendableandtestable
sourcecode.

20.Writing clean code: Working code is not enough, it must be readable and
maintainable also. So, code formatting and readable code development techniques are
neededtobeknownandapplied.
DiscoverthewarningsignsofDevOpsDysfunctionandlearnhowtogetbackontheright
track,broughttoyouinpartnershipwithCATechnologies.