SlideShare a Scribd company logo
Tips to Kick-start your
Software Engineering Career
Ferdous Mahmud Shaon
Managing Director
Cefalo Bangladesh Ltd
Background
• I’ve recruited more than 100 software
engineers
– Freshers to 15 years experienced engineers
– Last year: 30 software engineers
– Interviewed more than 500 candidates
• I am going to share some tips based on my
recruitment experience.
Software Engineering Career Options
• Software developer
• Front-end developer
• Software tester
• DevOps
• IT Administrator
• … …
Software Developer Essentials
• Programming Fundamentals
• Problem Solving Skills
• OOP Principles
• Source Control System
• Showcasable Project
• Online Presence
Programming Skill
• Programming is a passion, not only a
profession
• Must have eagerness to solve complex
problems
• Must have thorough understanding of
algorithm and data structure
Learn Data Structures
• Array, List, ArrayList, LinkedList
• Set, HashSet, TreeSet
• Map, HashMap, HashTable
• Stack, Queue
• Tree, Binary Tree, Binary Search Tree
• Graphs, Adjacency Matrix, Adjacency List
Learn Algorithms
• Insertion, Deletion, Traversal,
Searching and Sorting within
Collection
• Sorting: Bubble, Insertion, Merge
• Searching: Linear Search, Binary
Search, BFS, DFS
• Recursion
• String manipulation
• Time and space Complexity, Big-O
notation
Train your Brain
• Solve programming problems as
many as you can
• Learn application of algorithms
and data structures.
• Implement a few.
• Learn to solve problems using pen & paper.
Think before you code.
Solve Programming Problems
• ACM Problems
• uva.onlinejudge.org
• Codeforces - codeforces.com
• Top Coder - topcoder.com
• Hacker Rank - hackerrank.com
Learn OOP
• Enterprise Level Applications are
developed on OOP
• Learn to think in Objects, not in
Procedures
• Learn at least one OOP language well
• Follow SOLID Principal. SOLID is Single
responsibility, Open-closed, Liskov substitution,
Interface segregation and Dependency inversion.
Write Human Readable Code
“Any fool can write code
that a computer can understand.
But Good programmers write code
that humans can understand.”
― Martin Fowler, ThoughtWorks
What is Human Readable Code ?
• Can be easily read and debugged
(reading code is always difficult than writing)
• Can be modified and maintained by a person
who did not originally developed it
• Can be changed with less cost
• Can be improved incrementally
Refactor the Code that Smells
• Unnecessary Comments
– Write less comment, explain only “why”, not “what”
• Uncommunicative Name
– Meaningful naming for variables, methods and classes
• Long Method, Long Class
• Duplicate Code
• Long Parameter List
• Details will be covered in our next session on
‘Software Design Principles and Best Practices’
Source Control System
• Never, ever work without a Source Control.
• Not even when you are working alone.
– Solution of Online Problem Sites
– All university assignments and projects
– Personal pet projects with commit history
• Use a distributed version control such as Git
(GitHub / BitBucket / GitLab)
• Have good understanding of Git
(i.e. push, pull, merge)
Showcasable Project
• Must have one large demoable project
– could be web or mobile app or both
• Tentative project length: at least 01 year
• Preferably solve some real world problem instead of
traditional university projects
• Recommended to use OOP approach
• Recommended architecture: separate application for
back-end (REST API) and front-end (web / mobile)
• Codes must be in source control with commit history
Nice to Have
• Contribute to Open Source Projects
– Mozilla Firefox?
– Java: Apache Commons, Spring, Guava
– Microsoft: Visual Studio Code Editor
– Start with small things, like documentation, fixing bugs
• Contribute to StackOverflow, CodeProject etc.
– Reputation points for asking technical questions & giving answers
– Good for knowledge sharing, plus point to attract employers
• Write Technical Articles, Blog, Online Portfolio
– Can write articles in Medium, CodeProject etc.
– Can also build personal portfolio site on personal domain or github.io
Front-end Web Developer Essentials
• HTML5, Semantic tags
• CSS3 (i.e. position, box-model, flex, animation etc.)
• CSS frameworks (i.e. Bootstrap, Grid Layout)
• CSS Preprocessors (SASS, LESS)
• Vanilla JavaScript, ECMAScript 6
• JS libraries/frameworks: jQuery, React,
Angular, Vue
• Automated build tools (i.e. Gulp, Grunt, Webpack)
Front-end Web Developer Essentials
• Front-end Testing tools (i.e. Mocha,
Jasmine)
• Responsive Design, Mobile First Design
• Cross-browser Compatibility
• Working with RESTful Services
• Web Developer Tools in Browser
• Search Engine Optimization (SEO)
Software Tester Essentials
• Mindset for software testing
• Passion for breaking things and finding loopholes
• Relaxed and calm attitude
• Functional Testing
• Back-box testing, White-box testing
• Regression testing, Re-testing
• Smoke, Sanity and Exploratory Testing
• Test Case Design Techniques
• Equivalence Partitioning, Boundary Value Analysis
• State transition, Decision table
Software Tester Essentials
• Non Functional Testing
• Performance Testing: Load testing, Stress testing
• Security Testing: Cross-Site scripting (XSS), SQL injection
• Mobile App Testing
• mobile app testing vs web app testing
• Database Testing
• writing basic SQL queries
• Testing tools
• Selenium, Appium, JMeter, Postman, REST Assured etc.
• Writing and executing Test Cases
DevOps Essentials
• Sound knowledge of Linux
• Scripting language (i.e. python, shell-script)
• Source control systems (i.e. Git, TFS)
• Deployment automation tools (i.e. Jenkins, Octopus)
• Container tools (i.e. Docker, Kubernetes)
• Application servers (i.e. Apache, Nginx, Tomcat, IIS)
• Configuration management tools (i.e. chef, puppet)
• Monitoring tools (i.e. Nagios)
• Cloud services (i.e. AWS, Azure, Google)
IT Administrator Essentials
• Operating systems (i.e. Linux, Windows, Unix)
• IP addressing and protocols like IPv4 and IPv6
• LAN and Internet connectivity products
(i.e. Switches, Routers)
• Data and network monitoring and security tools,
firewalls
• Database severs management (i.e. MySQL, MsSQL etc.)
• Configure, troubleshoot and upgrade various
hardware and software tools
• Scripting languages (i.e. python, shell-script)
Learn SDLC, Be Agile
LinkedIn Profile
• Should be updated, with proper profile picture
• Use suitable Title
– Full Stack Software Engineer | Competitive Programmer | Interested
in Java based application development
– Software Engineer | Experienced in C#, ASP.NET Web API, REST, EFF
• List of all projects - university projects, personal
projects
– Summary, Tools & Technologies, Repo, Project Link & Demo
• All the relevant presentations
• Achievements, Certifications, Awards
• Recommendation from friends, teachers, advisers
Online Presence
• Online Problem Solving
• Git repository
• StackOverFlow, CodeProject
• Technical blog, Online Portfolio
• Contribution to Open Source Projects
• LinkedIn Profile
Job Application
• Read the Job description & requirements
thoroughly before applying for any job
• Do not apply, if you do not fulfill the most of
the job requirements
• Do not use any informal email address or
name (i.e. cooldude@gmail.com)
Job Application (cont.)
• Email body should not be blank
– Justify in email why you are a good fit for this open position
• Attach your CV and other documents, as per
job requirements
• Attached CV File should be
– PDF format
– Named in a formal manner and must comply job
application requirement
Curriculum Vitae (CV)
• Most important for getting an interview call
– First impression to the Employer
• Ideally 1 page, not more than 2 pages.
– might be compact version of your LinkedIn Profile
• We generally don't spend more than 10
seconds for initial screening
• Online Presence (LinkedIn, GitHub, SOFlow, Tech Blog)
– only relevant links, that adds value
• Use standard fonts (Arial / Times New Roman / Calibri)
DON’Ts in a CV…
• Quantifying your skill level (i.e. Expert in Java or C#)
• Every single buzzword you’ve heard of. (i.e. “big-data”, “AI”,
“machine learning”)
• Any project that you don't know well
• Irrelevant skills (i.e MS-Word, MS-Excel etc.)
• Irrelevant social media links (i.e. FB or Twitter)
• More than three fonts and three font sizes (for
readability)
• Any other format than PDF
– contents must be machine readable, not in image
• Irrelevant personal infatuation
– religion, marital status, parent's name, DOB, blood group etc.
Learn Daily and Adopt Early
You are the ONLY one,
responsible for your own
career, knowledge and personal growth!
• Keep learning: new tools & technology, new standards
and best practices
• Read technical articles & books; Follow technical blogs
• Adopt and learn any new relevant technology as soon
as it is released.
Ain’t we Privileged?
• On an average, more than 1 million students
pass HSC every year
• Out of them, less than 1% students get chance
to study engineering in public universities
• Good part of our educational costs are highly
subsidized.
– Who are paying for these incentive?
• We’re considered as the brightest students in BD
• We’re lucky and privileged to be here!
Are we doing enough?
Be “more” Human
• Be better human first before an engineer.
• Algorithms of becoming human is more
important than software algorithms
– Let go of your Ego and Anger
– Learn to respect different opinions
– Accept responsibility, Stop blaming others
– Learn to find your mistakes and admit it
– Talk less, Listen more
Serve the Country
• Country needs talented and smarter people!
• If you decide to go abroad for higher studies or job,
then at least consider one of the followings:
– Coming back after higher studies or job experience
– Setting up business, create employment
– Solve problems of your country
– Convert ‘brain drain’ to ‘brain gain’
• Serious scarcity in mid-level and top level
management in IT
• We have many problems, but this gives you more
business opportunities
FERDOUS MAHMUD SHAON
• MD, Cefalo Bangladesh Ltd.
• B.Sc. in C.S.E. from BUET
• MBA with major in HRM & Finance
• Veteran Java Developer
• CSM & CSPO as well as Technical
Project Management professional
• 15+ years in the Software Industry
Who am I?
Thank You!
Question & Answers
?

More Related Content

Tips to Kick-start your Software Engineering Career

  • 1. Tips to Kick-start your Software Engineering Career Ferdous Mahmud Shaon Managing Director Cefalo Bangladesh Ltd
  • 2. Background • I’ve recruited more than 100 software engineers – Freshers to 15 years experienced engineers – Last year: 30 software engineers – Interviewed more than 500 candidates • I am going to share some tips based on my recruitment experience.
  • 3. Software Engineering Career Options • Software developer • Front-end developer • Software tester • DevOps • IT Administrator • … …
  • 4. Software Developer Essentials • Programming Fundamentals • Problem Solving Skills • OOP Principles • Source Control System • Showcasable Project • Online Presence
  • 5. Programming Skill • Programming is a passion, not only a profession • Must have eagerness to solve complex problems • Must have thorough understanding of algorithm and data structure
  • 6. Learn Data Structures • Array, List, ArrayList, LinkedList • Set, HashSet, TreeSet • Map, HashMap, HashTable • Stack, Queue • Tree, Binary Tree, Binary Search Tree • Graphs, Adjacency Matrix, Adjacency List
  • 7. Learn Algorithms • Insertion, Deletion, Traversal, Searching and Sorting within Collection • Sorting: Bubble, Insertion, Merge • Searching: Linear Search, Binary Search, BFS, DFS • Recursion • String manipulation • Time and space Complexity, Big-O notation
  • 8. Train your Brain • Solve programming problems as many as you can • Learn application of algorithms and data structures. • Implement a few. • Learn to solve problems using pen & paper. Think before you code.
  • 9. Solve Programming Problems • ACM Problems • uva.onlinejudge.org • Codeforces - codeforces.com • Top Coder - topcoder.com • Hacker Rank - hackerrank.com
  • 10. Learn OOP • Enterprise Level Applications are developed on OOP • Learn to think in Objects, not in Procedures • Learn at least one OOP language well • Follow SOLID Principal. SOLID is Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion.
  • 11. Write Human Readable Code “Any fool can write code that a computer can understand. But Good programmers write code that humans can understand.” ― Martin Fowler, ThoughtWorks
  • 12. What is Human Readable Code ? • Can be easily read and debugged (reading code is always difficult than writing) • Can be modified and maintained by a person who did not originally developed it • Can be changed with less cost • Can be improved incrementally
  • 13. Refactor the Code that Smells • Unnecessary Comments – Write less comment, explain only “why”, not “what” • Uncommunicative Name – Meaningful naming for variables, methods and classes • Long Method, Long Class • Duplicate Code • Long Parameter List • Details will be covered in our next session on ‘Software Design Principles and Best Practices’
  • 14. Source Control System • Never, ever work without a Source Control. • Not even when you are working alone. – Solution of Online Problem Sites – All university assignments and projects – Personal pet projects with commit history • Use a distributed version control such as Git (GitHub / BitBucket / GitLab) • Have good understanding of Git (i.e. push, pull, merge)
  • 15. Showcasable Project • Must have one large demoable project – could be web or mobile app or both • Tentative project length: at least 01 year • Preferably solve some real world problem instead of traditional university projects • Recommended to use OOP approach • Recommended architecture: separate application for back-end (REST API) and front-end (web / mobile) • Codes must be in source control with commit history
  • 16. Nice to Have • Contribute to Open Source Projects – Mozilla Firefox? – Java: Apache Commons, Spring, Guava – Microsoft: Visual Studio Code Editor – Start with small things, like documentation, fixing bugs • Contribute to StackOverflow, CodeProject etc. – Reputation points for asking technical questions & giving answers – Good for knowledge sharing, plus point to attract employers • Write Technical Articles, Blog, Online Portfolio – Can write articles in Medium, CodeProject etc. – Can also build personal portfolio site on personal domain or github.io
  • 17. Front-end Web Developer Essentials • HTML5, Semantic tags • CSS3 (i.e. position, box-model, flex, animation etc.) • CSS frameworks (i.e. Bootstrap, Grid Layout) • CSS Preprocessors (SASS, LESS) • Vanilla JavaScript, ECMAScript 6 • JS libraries/frameworks: jQuery, React, Angular, Vue • Automated build tools (i.e. Gulp, Grunt, Webpack)
  • 18. Front-end Web Developer Essentials • Front-end Testing tools (i.e. Mocha, Jasmine) • Responsive Design, Mobile First Design • Cross-browser Compatibility • Working with RESTful Services • Web Developer Tools in Browser • Search Engine Optimization (SEO)
  • 19. Software Tester Essentials • Mindset for software testing • Passion for breaking things and finding loopholes • Relaxed and calm attitude • Functional Testing • Back-box testing, White-box testing • Regression testing, Re-testing • Smoke, Sanity and Exploratory Testing • Test Case Design Techniques • Equivalence Partitioning, Boundary Value Analysis • State transition, Decision table
  • 20. Software Tester Essentials • Non Functional Testing • Performance Testing: Load testing, Stress testing • Security Testing: Cross-Site scripting (XSS), SQL injection • Mobile App Testing • mobile app testing vs web app testing • Database Testing • writing basic SQL queries • Testing tools • Selenium, Appium, JMeter, Postman, REST Assured etc. • Writing and executing Test Cases
  • 21. DevOps Essentials • Sound knowledge of Linux • Scripting language (i.e. python, shell-script) • Source control systems (i.e. Git, TFS) • Deployment automation tools (i.e. Jenkins, Octopus) • Container tools (i.e. Docker, Kubernetes) • Application servers (i.e. Apache, Nginx, Tomcat, IIS) • Configuration management tools (i.e. chef, puppet) • Monitoring tools (i.e. Nagios) • Cloud services (i.e. AWS, Azure, Google)
  • 22. IT Administrator Essentials • Operating systems (i.e. Linux, Windows, Unix) • IP addressing and protocols like IPv4 and IPv6 • LAN and Internet connectivity products (i.e. Switches, Routers) • Data and network monitoring and security tools, firewalls • Database severs management (i.e. MySQL, MsSQL etc.) • Configure, troubleshoot and upgrade various hardware and software tools • Scripting languages (i.e. python, shell-script)
  • 23. Learn SDLC, Be Agile
  • 24. LinkedIn Profile • Should be updated, with proper profile picture • Use suitable Title – Full Stack Software Engineer | Competitive Programmer | Interested in Java based application development – Software Engineer | Experienced in C#, ASP.NET Web API, REST, EFF • List of all projects - university projects, personal projects – Summary, Tools & Technologies, Repo, Project Link & Demo • All the relevant presentations • Achievements, Certifications, Awards • Recommendation from friends, teachers, advisers
  • 25. Online Presence • Online Problem Solving • Git repository • StackOverFlow, CodeProject • Technical blog, Online Portfolio • Contribution to Open Source Projects • LinkedIn Profile
  • 26. Job Application • Read the Job description & requirements thoroughly before applying for any job • Do not apply, if you do not fulfill the most of the job requirements • Do not use any informal email address or name (i.e. cooldude@gmail.com)
  • 27. Job Application (cont.) • Email body should not be blank – Justify in email why you are a good fit for this open position • Attach your CV and other documents, as per job requirements • Attached CV File should be – PDF format – Named in a formal manner and must comply job application requirement
  • 28. Curriculum Vitae (CV) • Most important for getting an interview call – First impression to the Employer • Ideally 1 page, not more than 2 pages. – might be compact version of your LinkedIn Profile • We generally don't spend more than 10 seconds for initial screening • Online Presence (LinkedIn, GitHub, SOFlow, Tech Blog) – only relevant links, that adds value • Use standard fonts (Arial / Times New Roman / Calibri)
  • 29. DON’Ts in a CV… • Quantifying your skill level (i.e. Expert in Java or C#) • Every single buzzword you’ve heard of. (i.e. “big-data”, “AI”, “machine learning”) • Any project that you don't know well • Irrelevant skills (i.e MS-Word, MS-Excel etc.) • Irrelevant social media links (i.e. FB or Twitter) • More than three fonts and three font sizes (for readability) • Any other format than PDF – contents must be machine readable, not in image • Irrelevant personal infatuation – religion, marital status, parent's name, DOB, blood group etc.
  • 30. Learn Daily and Adopt Early You are the ONLY one, responsible for your own career, knowledge and personal growth! • Keep learning: new tools & technology, new standards and best practices • Read technical articles & books; Follow technical blogs • Adopt and learn any new relevant technology as soon as it is released.
  • 31. Ain’t we Privileged? • On an average, more than 1 million students pass HSC every year • Out of them, less than 1% students get chance to study engineering in public universities • Good part of our educational costs are highly subsidized. – Who are paying for these incentive? • We’re considered as the brightest students in BD • We’re lucky and privileged to be here!
  • 32. Are we doing enough?
  • 33. Be “more” Human • Be better human first before an engineer. • Algorithms of becoming human is more important than software algorithms – Let go of your Ego and Anger – Learn to respect different opinions – Accept responsibility, Stop blaming others – Learn to find your mistakes and admit it – Talk less, Listen more
  • 34. Serve the Country • Country needs talented and smarter people! • If you decide to go abroad for higher studies or job, then at least consider one of the followings: – Coming back after higher studies or job experience – Setting up business, create employment – Solve problems of your country – Convert ‘brain drain’ to ‘brain gain’ • Serious scarcity in mid-level and top level management in IT • We have many problems, but this gives you more business opportunities
  • 35. FERDOUS MAHMUD SHAON • MD, Cefalo Bangladesh Ltd. • B.Sc. in C.S.E. from BUET • MBA with major in HRM & Finance • Veteran Java Developer • CSM & CSPO as well as Technical Project Management professional • 15+ years in the Software Industry Who am I?