Version control systems like Git allow developers to work collaboratively by tracking changes to source code over time. Automated testing is important and comes in many forms like unit, integration, and acceptance testing. Code quality tools enforce standards, measure test coverage, and help find bugs. Developers should try various programming languages and integrated development environments to expand their skills and perspectives. Cloud hosting, containers using Docker, and continuous integration/deployment pipelines are important architectures and concepts in today's IT industry. Personal projects allow experimenting with new technologies outside of work.
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
The essentials of the IT industry or What I wish I was taught about at University
1. Core Tools and Concepts of
Today's IT Industry
Or what you should look into before getting your first IT job, if you don't want to
spend your first 6 months dealing with a very steep learning curve
2. A little about me
● Samuel Durand
○ French, developer, hiker and food lover
● Graduated in Software Engineering at the University of Belfort (France) in 2014
● 5 years of experience in software engineering
○ 4 years at Cake Solutions (acquired by Disney in 2017)
○ 1½ year at Equal Experts
● Contributed to a large variety of projects
○ Moneysupermarket / Disney / Co-op / HMRC / Very ...
○ Java / Scala / JS / Typescript / Python, C# ...
○ Variety of roles: developer / devops* / qa* / full-stack consultant
3. What we will talk about
Software development tools
● Version control systems
● Testing and TDD
● Code metrics & checking tools
● Coding languages worth trying
● Development environments
Architecture and key notions
● Cloud hosting
● Docker and Containers
● CI/CD
● Personal projects
4.
5. Version control systems
Designed to keep track of any and all changes done to the source code
● Essential to any project based on programming code
● Allows team members to work on several features at once without hidden risk of interference
● Supports both local and remote repository
6. GIT: the swiss knife
of version control
● The most popular by far
● Rich in features (10% only used everyday)
● Uses branches (especially useful for large teams)
● Widely supported
● Changes recorded locally and remotely at once
● 90% of open source projects use it
7. Automated Testing
● Never deploy to prod without writing tests
○ Find bugs before production
○ Maintainability
○ Confidence when changing things
● Multiple type of tests
○ Unit tests
○ Integration tests
○ Acceptance/Functional tests
○ End to End testing
○ Architecture deployment tests
● There is no "one-size-fits-all" strategy
● TDD: Test Driven Development
8. Code metrics
Code style checkers
● Enforce a coding standard
● Avoid some type of bugs
● Keep the code clean
● Teaches you good practices
Code coverage
● Percentage of code covered by tests
● Helps to find missing tests
● Possible to get a visual overview
9. Programming languages
Try as many languages as you can:
● Compilable, transpilable, translatable...
● Typeful or typeless
● Object oriented or functional
● Each have some unique particularities
● Different approaches and perspectives
Here is a good list to start with:
● Java: OO and widely used
● Scala: OO + FP and typesafe
● JS: total freedom (too much ?)
● Kotlin: the rising star
● C#: Microsoft .NET
● Python: data processing
● Clojure: prefix syntax (the new Lisp)
● Go: the new C
● Bash: still not dead… a must for Linux
10. IDEs: Integrated Development Environments
VS Code
● Still young but promising
● Wealth of plugins
● Entirely free
Visual Studio
● Preferred choice for C#, F#, .NET
● Powerful shortcuts
● Very stable and reliable tools
Intellij
● Currently the best for Java/Scala
● Variants exists for other languages
● Free community version
11.
12. Cloud hosting
It's probably what that devops guy was talking about this morning, with foreign words and acronyms...
Many options, all similar, all worth exploring…. and it's free ! (maybe even get a certification ?)
13. Docker: The very popular blue whale
● The most popular alternative to virtual machines
● Manages app wrappers called containers
● Used in almost every company, in one form or another
● Great tool both for development and production
15. Personal projects
Not every jobs will give you the chance to learn a lot of new tech, or experiment.
The solution ? Create some personal projects !
● Gives you the chance to experiment
● Can be made valuable on a CV if you build something that is used by people
● Most paid tools are free to use for personal development (including online deployment)
● Should be as far as possible from what you do on a daily basis
○ Forces your brain to stretch in different directions
○ If based on a concrete goal can be financially rewarding
○ If not, then it will provide some relaxation and satisfaction
16. ● You need a single core programming language, from there you can learn anything
● Books about coding or frameworks are a waste of money, focus instead on patterns and techniques
● Staying in the same company in the same position for more than 4 years is bad (in most cases)
● If you are given the chance to work on something you are uncomfortable with, take it !
● Choose a small set of techs and keep up to date with its latest news and updates
My personal opinion on some stuff
17. You don't need to know
everything !
The essential is to know that something is possible, be able to name the concept,
and then have the skills required to search for it in any given tech
What to take away from this talk...