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.
- 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)
- 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!
- 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?