SlideShare a Scribd company logo
1 of 2
1
Created by Prashant Kumar
GENERAL TIPS {SOFTWARE
ENGINEERS’}
1. The engineer who wrote the code is responsible for QA for one time {Always do the
QA on production/UAT environment after deployment}.
2. No code is finished until the unit testing is finished by you.
3. Good design results from getting something going quickly, followed by lots of quick
iteration.
4. The best architectures evolve for a long time.
5. Code reviews are a regular part of development {do yourself first}.
6. Difficult parts of code are best done by a team of two people working closely
together and discussing before writing the code.
7. If you see a new bug while doing something else, drop everything and jump on the
chance to fix it. It just makes your life easier down the road.
8. It is possible to eliminate all bugs from many subsystems and you should use
techniques that make it possible, exhaustive checking code whenever possible.
9. Complexity is your enemy – the sooner you learn the smell of too much complexity,
the better and try to make it optimized and simpler.
10. Simplicity is your friend. Don’t fall for a really cool fancy algorithm unless you know
you need it.
11. Never write a slow program it should be optimized.
12. Price is only one feature of software. It’s often not the most important. From the
user’s perspective, simple things should be simple and complex things should be
possible.
13. Automate releases.
14. Use source level debuggers.
15. Use IDEs
16. Don’t write; make files unless you already have.
17. Measures then optimize.
18. Always spend at least 10% of your time learning new things and try to implement
them whenever required.
2
Created by Prashant Kumar
19. Use multiple languages, programming environments, operating systems and
programming methodologies until you are comfortable with them and learn to
appreciate the benefits of different approaches.
20. Optimize variable names for maximum clarity, not minimum typing.
21. It’s OK to make mistakes. The only thing that isn’t OK is to not learn from them.
22. Don’t leave code commented out unless it’s clearly explained.
23. Approach each piece of code you write like its final finished code. Don’t leave loose
ends to clean up later because you’ll never have time to clean them up.{even you
are creating the sample application}
24. Never code an algorithm that you know won’t work in the final product either
because it won’t scale, run fast enough, or will have a rare failure case.
25. All successful products have a life longer than you can conceive. Files and processors
will grow by factors of 10,000 – make sure your design can accommodate change
{Think for all possible areas before doing the code}.
26. Don’t code the first algorithm that comes to mind. Try to examine all possible
approaches and choose the best. Best way to get someone to review your approach
before coding {Always discuss your approach with in your team}.
27. Don’t put band aids on bad code, rewrite it. At first is seems hard, but after you’ve
done it a while you’ll find successive rewrites go much faster than you thought.
28. When you work on someone else’s code, don’t leave it in worse shape than it came
to you. Ask the original author to review your change.
29. No bug is impossible to fix.
30. Get to be good friends with a programmer, designer, or writer who’s better than you.
31. Get assumptions verified and do not be afraid to point out gaps in management or
sponsor thinking. Do this tastefully, but do it before trying to implement a failed
plan. We have the sole responsibility for solution quality or relevance. Realize what is
needed is not always exactly what is asked for. Try to return people to pure business
requirements if the document, email or post-it you have is too specific or generally
too confusing to be understood. Be a bother in the short term to be an asset in the
long term.

More Related Content

What's hot

Pair Programming: overview and concepts
Pair Programming: overview and conceptsPair Programming: overview and concepts
Pair Programming: overview and conceptsLior Kirshner-Shalom
 
Pair Programming (2014)
Pair Programming (2014)Pair Programming (2014)
Pair Programming (2014)Peter Kofler
 
TDD, the way to better software | Dan Ursu | CodeWay 2015
TDD, the way to better software | Dan Ursu | CodeWay 2015TDD, the way to better software | Dan Ursu | CodeWay 2015
TDD, the way to better software | Dan Ursu | CodeWay 2015YOPESO
 
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013TEST Huddle
 
Move test planning before implementation
Move test planning before implementationMove test planning before implementation
Move test planning before implementationTed Cheng
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationBoris Dominic
 
Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?Danny van Kasteel
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair ProgrammingSteven Smith
 
Tester developer interaction
Tester developer interactionTester developer interaction
Tester developer interactiongaoliang641
 
5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile Development5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile DevelopmentArin Sime
 
Striving for zero bugs
Striving for zero bugsStriving for zero bugs
Striving for zero bugsTEST Huddle
 
Automation testing: how tools are important?
Automation testing: how tools are important?Automation testing: how tools are important?
Automation testing: how tools are important?MD ISLAM
 
Become Software Tester or Developer
Become Software Tester or DeveloperBecome Software Tester or Developer
Become Software Tester or DeveloperKMS Technology
 
Helping Programmers Write Better Tests
Helping Programmers Write Better TestsHelping Programmers Write Better Tests
Helping Programmers Write Better TestsGeoffrey Dunn
 
Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)Fatkul Amri
 
Test-Driven Development (TDD) in Swift
Test-Driven Development (TDD) in SwiftTest-Driven Development (TDD) in Swift
Test-Driven Development (TDD) in SwiftAmey Tavkar
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Developmentadrianmitev
 

What's hot (20)

Pair Programming: overview and concepts
Pair Programming: overview and conceptsPair Programming: overview and concepts
Pair Programming: overview and concepts
 
Pair Programming (2014)
Pair Programming (2014)Pair Programming (2014)
Pair Programming (2014)
 
TDD, the way to better software | Dan Ursu | CodeWay 2015
TDD, the way to better software | Dan Ursu | CodeWay 2015TDD, the way to better software | Dan Ursu | CodeWay 2015
TDD, the way to better software | Dan Ursu | CodeWay 2015
 
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013
 
Tester vs Developer
Tester vs DeveloperTester vs Developer
Tester vs Developer
 
Treinamento TDD
Treinamento TDDTreinamento TDD
Treinamento TDD
 
Move test planning before implementation
Move test planning before implementationMove test planning before implementation
Move test planning before implementation
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair Programming
 
Tester developer interaction
Tester developer interactionTester developer interaction
Tester developer interaction
 
5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile Development5 reasons you'll love to hate Agile Development
5 reasons you'll love to hate Agile Development
 
Striving for zero bugs
Striving for zero bugsStriving for zero bugs
Striving for zero bugs
 
Automation testing: how tools are important?
Automation testing: how tools are important?Automation testing: how tools are important?
Automation testing: how tools are important?
 
Become Software Tester or Developer
Become Software Tester or DeveloperBecome Software Tester or Developer
Become Software Tester or Developer
 
Helping Programmers Write Better Tests
Helping Programmers Write Better TestsHelping Programmers Write Better Tests
Helping Programmers Write Better Tests
 
Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)
 
Test-Driven Development (TDD) in Swift
Test-Driven Development (TDD) in SwiftTest-Driven Development (TDD) in Swift
Test-Driven Development (TDD) in Swift
 
Tdd in swift
Tdd in swiftTdd in swift
Tdd in swift
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 

Viewers also liked

Viewers also liked (11)

Csit3916
Csit3916Csit3916
Csit3916
 
Nvm
NvmNvm
Nvm
 
Computer forensics vital_for_combating_cyber_crimes
Computer forensics vital_for_combating_cyber_crimesComputer forensics vital_for_combating_cyber_crimes
Computer forensics vital_for_combating_cyber_crimes
 
2004 fron office biblioteca consiglio regionale_
2004 fron office biblioteca consiglio regionale_2004 fron office biblioteca consiglio regionale_
2004 fron office biblioteca consiglio regionale_
 
2004 21 maggio master comunicazione_valletta
2004 21 maggio master comunicazione_valletta2004 21 maggio master comunicazione_valletta
2004 21 maggio master comunicazione_valletta
 
Blessed are the Persecuted
Blessed are the Persecuted Blessed are the Persecuted
Blessed are the Persecuted
 
Бесхвостая лиса
Бесхвостая лисаБесхвостая лиса
Бесхвостая лиса
 
Todd Boedeker Thesis
Todd Boedeker ThesisTodd Boedeker Thesis
Todd Boedeker Thesis
 
the church
the churchthe church
the church
 
the lord's prayer
 the lord's prayer the lord's prayer
the lord's prayer
 
Apresentação ruido
Apresentação ruidoApresentação ruido
Apresentação ruido
 

Similar to General Tips

Random thoughts and dev practices / advices to build a great product
Random thoughts and dev practices / advices to build a great productRandom thoughts and dev practices / advices to build a great product
Random thoughts and dev practices / advices to build a great productGuillaume POTIER
 
Oleksandr Valetskyy - Pragmatic programmer. Theory and practice
Oleksandr Valetskyy - Pragmatic programmer. Theory and practiceOleksandr Valetskyy - Pragmatic programmer. Theory and practice
Oleksandr Valetskyy - Pragmatic programmer. Theory and practiceOleksandr Valetskyy
 
QA Best Practices
QA  Best PracticesQA  Best Practices
QA Best PracticesJames York
 
The art of being an agile programmer
The art of being an agile programmerThe art of being an agile programmer
The art of being an agile programmerClaudia Rosu
 
Dot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarDot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarGiel Tettelaar
 
Linux Commands, C, C++, Java and Python Exercises For Beginners
Linux Commands, C, C++, Java and Python Exercises For BeginnersLinux Commands, C, C++, Java and Python Exercises For Beginners
Linux Commands, C, C++, Java and Python Exercises For BeginnersManjunath.R -
 
Code review guidelines
Code review guidelinesCode review guidelines
Code review guidelinesLalit Kale
 
Test driven development
Test driven developmentTest driven development
Test driven developmentSunil Prasad
 
30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbookGabriel Paunescu 🤖
 
Lect3 conventional vs modern spm
Lect3 conventional vs modern spmLect3 conventional vs modern spm
Lect3 conventional vs modern spmmeena466141
 
C, C++, Java, Python, PHP, JavaScript and Linux For Beginners
C, C++, Java, Python, PHP, JavaScript and Linux For BeginnersC, C++, Java, Python, PHP, JavaScript and Linux For Beginners
C, C++, Java, Python, PHP, JavaScript and Linux For BeginnersManjunath.R -
 
Twelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechTwelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechIIITA
 
Agile and test driven development
Agile and test driven developmentAgile and test driven development
Agile and test driven developmentAhmed El-Deeb
 
Collective ownership in agile teams
Collective ownership in agile teamsCollective ownership in agile teams
Collective ownership in agile teamsJyaasa Technologies
 
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...DevDay.org
 
10 Code Anti-Patterns to Avoid in Software Development.pdf
10 Code Anti-Patterns to Avoid in Software Development.pdf10 Code Anti-Patterns to Avoid in Software Development.pdf
10 Code Anti-Patterns to Avoid in Software Development.pdfAhmed Salama
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsSteven Smith
 

Similar to General Tips (20)

Random thoughts and dev practices / advices to build a great product
Random thoughts and dev practices / advices to build a great productRandom thoughts and dev practices / advices to build a great product
Random thoughts and dev practices / advices to build a great product
 
Oleksandr Valetskyy - Pragmatic programmer. Theory and practice
Oleksandr Valetskyy - Pragmatic programmer. Theory and practiceOleksandr Valetskyy - Pragmatic programmer. Theory and practice
Oleksandr Valetskyy - Pragmatic programmer. Theory and practice
 
What is xp
What is xpWhat is xp
What is xp
 
QA Best Practices
QA  Best PracticesQA  Best Practices
QA Best Practices
 
The art of being an agile programmer
The art of being an agile programmerThe art of being an agile programmer
The art of being an agile programmer
 
Dot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel TettelarDot all 2019 | Testing with Craft | Giel Tettelar
Dot all 2019 | Testing with Craft | Giel Tettelar
 
Linux Commands, C, C++, Java and Python Exercises For Beginners
Linux Commands, C, C++, Java and Python Exercises For BeginnersLinux Commands, C, C++, Java and Python Exercises For Beginners
Linux Commands, C, C++, Java and Python Exercises For Beginners
 
Put to the Test
Put to the TestPut to the Test
Put to the Test
 
Code review guidelines
Code review guidelinesCode review guidelines
Code review guidelines
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook
 
Lect3 conventional vs modern spm
Lect3 conventional vs modern spmLect3 conventional vs modern spm
Lect3 conventional vs modern spm
 
C, C++, Java, Python, PHP, JavaScript and Linux For Beginners
C, C++, Java, Python, PHP, JavaScript and Linux For BeginnersC, C++, Java, Python, PHP, JavaScript and Linux For Beginners
C, C++, Java, Python, PHP, JavaScript and Linux For Beginners
 
Twelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechTwelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btech
 
Agile and test driven development
Agile and test driven developmentAgile and test driven development
Agile and test driven development
 
Collective ownership in agile teams
Collective ownership in agile teamsCollective ownership in agile teams
Collective ownership in agile teams
 
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
10 Code Anti-Patterns to Avoid in Software Development.pdf
10 Code Anti-Patterns to Avoid in Software Development.pdf10 Code Anti-Patterns to Avoid in Software Development.pdf
10 Code Anti-Patterns to Avoid in Software Development.pdf
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
 

General Tips

  • 1. 1 Created by Prashant Kumar GENERAL TIPS {SOFTWARE ENGINEERS’} 1. The engineer who wrote the code is responsible for QA for one time {Always do the QA on production/UAT environment after deployment}. 2. No code is finished until the unit testing is finished by you. 3. Good design results from getting something going quickly, followed by lots of quick iteration. 4. The best architectures evolve for a long time. 5. Code reviews are a regular part of development {do yourself first}. 6. Difficult parts of code are best done by a team of two people working closely together and discussing before writing the code. 7. If you see a new bug while doing something else, drop everything and jump on the chance to fix it. It just makes your life easier down the road. 8. It is possible to eliminate all bugs from many subsystems and you should use techniques that make it possible, exhaustive checking code whenever possible. 9. Complexity is your enemy – the sooner you learn the smell of too much complexity, the better and try to make it optimized and simpler. 10. Simplicity is your friend. Don’t fall for a really cool fancy algorithm unless you know you need it. 11. Never write a slow program it should be optimized. 12. Price is only one feature of software. It’s often not the most important. From the user’s perspective, simple things should be simple and complex things should be possible. 13. Automate releases. 14. Use source level debuggers. 15. Use IDEs 16. Don’t write; make files unless you already have. 17. Measures then optimize. 18. Always spend at least 10% of your time learning new things and try to implement them whenever required.
  • 2. 2 Created by Prashant Kumar 19. Use multiple languages, programming environments, operating systems and programming methodologies until you are comfortable with them and learn to appreciate the benefits of different approaches. 20. Optimize variable names for maximum clarity, not minimum typing. 21. It’s OK to make mistakes. The only thing that isn’t OK is to not learn from them. 22. Don’t leave code commented out unless it’s clearly explained. 23. Approach each piece of code you write like its final finished code. Don’t leave loose ends to clean up later because you’ll never have time to clean them up.{even you are creating the sample application} 24. Never code an algorithm that you know won’t work in the final product either because it won’t scale, run fast enough, or will have a rare failure case. 25. All successful products have a life longer than you can conceive. Files and processors will grow by factors of 10,000 – make sure your design can accommodate change {Think for all possible areas before doing the code}. 26. Don’t code the first algorithm that comes to mind. Try to examine all possible approaches and choose the best. Best way to get someone to review your approach before coding {Always discuss your approach with in your team}. 27. Don’t put band aids on bad code, rewrite it. At first is seems hard, but after you’ve done it a while you’ll find successive rewrites go much faster than you thought. 28. When you work on someone else’s code, don’t leave it in worse shape than it came to you. Ask the original author to review your change. 29. No bug is impossible to fix. 30. Get to be good friends with a programmer, designer, or writer who’s better than you. 31. Get assumptions verified and do not be afraid to point out gaps in management or sponsor thinking. Do this tastefully, but do it before trying to implement a failed plan. We have the sole responsibility for solution quality or relevance. Realize what is needed is not always exactly what is asked for. Try to return people to pure business requirements if the document, email or post-it you have is too specific or generally too confusing to be understood. Be a bother in the short term to be an asset in the long term.