This started when we offered free sparring sessions with our experts for anyone (developers, designers, consultants..) in the Reaktor Development Discussion campaign. We quicky got a whopping 255 applications and were obviously not able to meet everyone in person.
We did, however, spot some recurring themes that we hope to be able to help with by simply sharing some insights from our team. For instance, there was a lot of demand for learning specific technological skills or more generally, getting tips for what is worth learning and how to find learning resources. Hence, let me present, an assortment of frequently asked questions, with some answers to most of them!
Huge thanks to all Reaktorians who offered their help!
The whole idea of this campaign was to help people with their careers and skills development and many were wondering what are the possible career paths for developers and more specifically, how to get from developer to architect or consultant.
Only half-jokingly, the traditional career path for developers is to promote the best of them to a managerial position so that they can no longer do what they do best. In a flat-hierarchy technology consultancy like Reaktor, there are many other options though. You can extend your knowledge horizontally to different domains and technologies or vertically almost infinitely deeper into specific topics, or "higher up" to overall architecture or technology strategy.
You can extend your reach also to the business side of things, helping clients not only with technology, but also with improving theirs business. Not to mention taking part in developing your company itself. Then, the borders between design (business, product, user interface, visuals) and technology are made to be crossed too and being able to contribute on a broader spectrum is highly appreciated and also something we help people to achieve. So, starting from a "mere" software developer, there are infinitely many different paths you can take, given you have the motivation to do so.
So, as a developer you can go to all directions (H, J, K and L if you know what I mean), but staying put is not an option, because of obvious reasons. Always keep learning and expanding your skills, and remember to step out of your comfort zone.
So, how to become a software architect? There are many kinds of architects, for sure, but IMO a good software architect is someone who can come up with realistic plans for implementing a larger-scale software system, and actually implement them too with a team. You’ll need deep and wide hands of experience with different technologies, some stories of success and failure. It’s essential to understand that you cannot just draw a diagram in PowerPoint and ask someone to code it. You can only plan your architecture up to a point and have to verify your assumptions at a sufficiently early stage of development to avoid huge mistakes from showing up in a later stage when they are harder to fix. You cannot isolate yourself into the proverbial ivory tower, because need to understand your application domain, your customer and your team. To achieve this you’re actually going to have to talk to people a lot. I wholly agree on system architecture usually reflecting the structure of the organization that’s been working on on it. To make all pieces fit optimally, the people working on them should work together towards the same goal and communicate.
So, to become a good software architect, get diverse hands-on experience in software development, get involved in decision making and ask a lot of questions to understand why certain decisions are made. To be able to pick the best option, you need to understand your success criteria, be aware of a wide range of options and validate your decisions with data.
Methods and working practices
Recommended books about teamwork and self improvement:
- The Anatomy of Peace: Resolving the Heart of Conflict
- Leadership and Self-Deception: Getting Out of the Box
- The Five dysfunctions of a team
- Switch: How to change things when change is hard
- Mindset: The New Psychology of Success
- The Power of Habit: Why We Do What We Do, and How to Change
Many seem to be interested in learning Agile methods and modern working practices for software teams. So, here are some recommendations from our coaches, mostly from @cryptotommi-joentakanen:
- Full map of most things agile: https://www.mindmeister.com/425542788/agile-world?fullscreen=1
- Product Owner TL;DR: https://www.youtube.com/watch?v=502ILHjX9EE
- Kanban: TL;DR https://www.youtube.com/watch?v=R8dYLbJiTUE, Advanced: Eric Brechner – https://www.youtube.com/watch?v=CD0y-aU1sXo
- Jeff Sutherland’s “Scrum” Audiobook: https://www.youtube.com/watch?v=qr8hjVX4GX0
- Craig Larman’s LeSS (Scaling Scrum) book https://www.amazon.com/Large-Scale-Scrum-More-Craig-Larman/dp/0321985710
- Ran Nyman – https://www.youtube.com/watch?v=ZISdTPrtS0o
- Craig Larman – https://www.youtube.com/watch?v=HmdGvq_8rVQ
- Richard Hackman’s Leading Teams (Performance): https://www.amazon.com/Leading-Teams-Setting-Stage-Performances/dp/1578513332/ref=sr_1_1?s=books&ie=UTF8&qid=1544604704&sr=1-1&keywords=leading+teams
- Evolutionary Teal Paradigm (the one we’re currently in)
- Reinventing Organizations
- Could be the next paradigm after Teal:
- Fred George’s Developer Anarchy (Managing Manager‐less Processes) https://www.youtube.com/watch?v=Zop0wTPrbk8 (In use at pioneering tech startups like Parity.io)
- Distributed Teams: https://medium.com/boost-vc/distributed-teams-dont-forget-the-fun-780427fa1cd5
- Remote first: https://www.forbes.com/sites/michalbohanes/2018/10/10/how-to-manage-a-distributed-team-5-best-practices-from-uk-startup-leaders/#4850255c4720
- Nature of the firm 2.0 by Joe Lubin https://www.youtube.com/watch?v=SQbcGhnv4jw
- Systems Thinking:
- Motivation- Pan Pink – https://www.youtube.com/watch?v=u6XAPnuFjJc
- Business Agility -Jim Highsmith – https://www.youtube.com/watch?v=EEj6zVipqq0
- Lean Startup - Eric Ries – https://www.youtube.com/watch?v=fEvKo90qBns
- Blogs of Reaktorians:
Directions for learning
Many asked for directions for learning. Here are some popular questions and some answers from our experts.
How to stay up to date with rapidly evolving technology (popular!)
@cryptotommi-joentakanen: Fix your filter. If you’re interested in a particular technology, find out who the insiders in the scene are and then follow who they follow, eliminate other sources of information -> signal to noise. Only follow them on Twitter and Medium. Read everything they write. Find out what the trusted aggregated sources of news and knowledge are. Every conference later gets listed on Youtube, watch the talks on double speed, skip the first third of the video. Participate in meetups and talk to people. Then, think for yourself. Place bets if you’re brave, skin in the game helps you learn and stay up to date.
Which technologies are worth learning in the long run
@cryptotommi-joentakanen: Nobody can accurately predict exponential growth of technology over a long period of time, especially post-singularity. But if I had to bet, I would place my money on AI in combination with trustless general purpose computation / decentralisation tech (e.g blockchain / crypto)
@raimohanska My tip is to make sure understand the relatively static basics before jumping to any flavor-of-the day bandwagon. See my "skills list" below.
Skills and technologies to learn to get a job! (popular!)
... and relatedly, how to get a job without previous working experience?
@raimohanska To land a job as a coder, make sure you've got your basics covered. Build a portfolio (on Github or similar) of your work. This implies that you need to have done some coding! If you haven't pick something interesting and build it. Then show it off. The deeper and more diverse skills you can demonstrate the better. Always remember to write a README for any repository to point out what this is about, what tecnhologies you're using and why. And how to build and run your application. Write a CV that points our your key skills and achievements and what you actually want do do. Be sure to include language (spoken and written) skills and place of residence!
Here are some basics I'd make sure to cover at some depth, at least.
- Depth and width of skillset: need to have at least 1 domain (preferably more) where you’re ready to go and productive. Could be, for instance, frontend development with React or backend integrations with Scala. The narrower your applicable skillset is, the deeper it has to be.
- Understanding, analysing and writing good and maintainable code
- Refactoring with confidence based on a sufficient set of automatic tests
- Communications, talking about code, understanding other’s code, code reviewing
- Version control best practises and knowhow
- Deploying code with various techniques, understanding the infrastructure your code is running on
- Different levels of abstraction and different type systems. For instance, C vs Java vs JS.
- Paradigms like OOP, FP, imperative vs declarative. For instance, C vs Java vs Typescript vs Haskell
- Memory management, stack, heap, static, GC, borrowing, ref counting. Understanding the different approaches in programming languages, for instance C vs Rust vs Swift vs Python.
- Algorithms, data structures and complexity. What’s wrong with O(n^2)?
- State machines, formal languages, parsers and compilers
More specific skills (too name a few)
- Web and networking fundamentals. HTTP(S), TCP, TLS, REST, HTML, XML, JSON, CORS...
- Cloud infrastructure understanding and automation skills
- Web / mobile frontend skills with different technologies
- Architecture of large-scale distributed systems
- Unix system and command-line skills
- Databases, different flavors including relational, document storage, data warehouses, ACID, consistency models, scalability, replication, sharding...
What kind of workplace should I seek, to learn better
- Seek one that seeks to always lead the way into the future, not just follow.
- Seek one that allows you to manifest your passion
- Seek one that aligns with your values
- Seek one where you’ll be competent but still pushing yourself
- Seek one that embraces diversity of thought
- If you don’t find the qualities above, form your own
@raimohanska Find a place where you can find people with something to teach you. If you want to improve as a developer, join a team of other, more experienced developers. Look for a culture of sharing and working together, with shared ownersip, instead of working alone in silos. If you want to specialize in a certain area or domain, you might be looking for a product development firm. If you want to broaden your spectrum and work on a more varied range of domains and technologies, you're probably looking for a consultancy.
What are the most important skills for a “full-stack developer” (popular!)
What should I learn to diversify my skills
- Game theory
- Mechanism design
- Personal branding
- Social Dynamics
Some were seeking the best resources for learning in general, but this is something we’ll address through our answers to more specific questions below.
Yet, as @cryptotommi-joentakanen said: Can’t beat books, if you had to choose one.
- Value, success, happiness, learning to learn
Core Software Engineering skills
I classified some questions and topics into Core Software Engineering skills, because they are relevant in all kinds of software development, whether it's embedded, web, cloud or mobile.
@raimohanska Here are some books that have influenced me. They are a bit old (as I too) and object oriented but the main principles still hold and are probably still worth a look:
- Clean Code by Uncle Bob
- Pragmatic Programmer
- Design Patterns - Elements of Reusable Object-Oriented Software by the "gang of four"
- Refactoring by Martin Fowler
@raimohanska Then some more functional-programming oriented books:
- SICP, i.e Structure and Interpretation of Computer Programs now freely available online
- Programming in Scala
- Real World Haskell
@auramo points out a couple of "programming philosophy" presentations for the "post-object-oriented" world.
- The Value of Values with Rich Hickey https://www.youtube.com/watch?v=-6BsiVyC1kM
- Simple Made Easy https://www.infoq.com/presentations/Simple-Made-Easy
- ... and also the ever-relevant [Domain Driven Design](Domain Driven Design https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215) by Eric Evans.
- Also Steve Yegge's rants, highly opinionated, have been very influential. For example: https://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html
@eagleflow I’ve read http://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/ multiple times. Everyone who is interested in programming language design should read it. tl;dr: there are costs to introducing additional colors of functions to your codebase. Weight the options carefully.
@Korkkii Test automation is in my opinion crucial for maintainability of a code base, because it allows you to add features, refactor code and fix bugs while ensuring that you most likely did not break existing functionality. When developing a new feature or fixing a bug, make it a habit to add some test cases that check for the cases you noticed to be most relevant. You don’t need to achieve 100% code coverage for whole codebase as long as you achieve a high number for the most critical parts of your code whether that is your business logic, routing logic, or some other must-not-break part of the codebase. In many cases, Pareto principle works so you gain most of the test benefits by building good automated tests for the most critical parts of the codebase.
Good automated tests are usually independent of each other, fast and test expected behaviour instead of internals. The independence of tests guarantees that you can run only the one failing test in isolation in order to find what is broken and fix it. This way you can find the problems faster due less clutter. Second, fast tests provide you short feedback loop that allows less interruptions when concentrating. Your unit tests especially should run fast (seconds, maximum of couple minutes for huge codebase’s all tests) and if they don’t, it pays off to improve the performance of your test suites. Lastly, tests should not break when tested code’s internals change while their functionality stays the same. When writing a test for some behaviour, I suggest comment out the behaviour you are testing and make sure the expected tests fail. This check makes sure that your tests are actually testing what you hope them to be testing. Writing behaviour-based tests is usually the hardest part to do correct and I personally learned it from and liked the way it was taught in Robert Martin’s Clean Code.
For more about good test automation, I suggest reading about software testing anti-patterns which goes through many very typical mishaps about testing and provides good alternatives to try out.
Writing modular code
Developing for maintainability and reliability
@cryptotommi-joentakanen tips for Site Reliability Engineering:
- DropBox – https://www.youtube.com/watch?v=ggizCjUCCqE
- Uber – https://www.youtube.com/watch?v=qJnS-EfIIIE
- Atlassian – https://www.youtube.com/watch?v=LMguiL0a90I
Building systems with good data security
Build tools and pipelines
Assessing different architecture/technological options
@raimohanska Nowadays, you'll often have a baffling number of options to consider when starting to build something new. It's often not an easy choice and you should take time to find the viable alternatives and more importantly, your selection criteria. Things to consider include when picking between, say A and B.
- Getting started - how well your team knows A vs B. Will affect how quickly you'll get started
- Maintainability - how does the long-term game look for the alternatives? Will you be in need of version updates and will those be available in the future? Is the technology open and simple enough for the team to be able to contribute to it themselves instead of reliying on external support
- Costs - is this free software or do you have to pay for it? What are the projected initial and recurring costs. When it comes to hosting services, you're unlikely to have free options.
- External limitations - does your client or IT team have a fixed set of available options that they let you choose from? Are these negotiable? Are they based on the right assumptions?
- Performance - response times, CPU consumption, network bandwidth requirements, memory consumption. All of these often affect both costs and user experience.
- Developer productivity - sometimes it makes more sense to use higher levels of abstraction to sacrifice some raw performance for improved productivity. An extreme example would be the choice between writing something in Assembly or Elm.
- Fun and learning - will the team have fun while working with the selected option? Don't discount this, because a motivated team will be much more productive than a reluctant team that's been forced to use a technology they hate. Developers usually enjoy picking up new, interesting tecnhologies, instead of banging with the same tools from year to year. Yet, everyone's different
When picking your technologies, you might want to involve the whole team in the discussions instead of having an Architect dictate the choices. Better decicisions often get made when those affected by the decision are part of the decision making process.
Also, make sure you have enough information to make your decision and be prepared to take it back. It might make sense to make a list of concerns with a choice, then eliminate the concerns by building a "spike" solution that focuses on them. For instance, if you're concerned about the performance of a system based on a certain technology (you should be!) build the minimal viable performance test setup to find out how things play out.
Understanding web technologies
@raimohanska Here are some beginner-friendly learning resources from my collagues:
- @eagleflo Mozilla - Getting started with the Web https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web
- @raine Web developer roadmap https://github.com/kamranahmedse/developer-roadmap might be a bit intimidating but gives you an idea on what there is to learn. You don't have to know all this stuff to be productive though!
- @kenkku The Helsinki University has a good Fullstack MOOC http://moocfi.github.io/courses/2018/fullstack/
How to select frontend tools
@tknuutin If you're just starting to learn a given area of tech, like frontend, it's probably a good idea to stick to one of the current industry standards. Even if they can be "flavor of the month" and get untrendy in a couple of years, they're probably at least not completely awful and broken and there's likely a lot of help available in various communities. It's also good to select as few as you can get away with. Start with just a couple of tools, then add more once you start to feel the pain, so to speak. The current trendy options would seem be React, Angular, or Vue (I recommend React). @lauripiispanen Since I personally believe that work can be a very good educator, as a beginner it makes sense to study the most common options just to make yourself more "employable". Hence I'd definitely recommend React.
@eagleflo Take time to learn SQL. It’s one of those gifts from the early 70s, and it’s not going anywhere. It doesn’t take that much time to grok how relational databases work, and that skill will come in handy in basically every backend project you ever work on. You don’t have to become a full-fledged DBA in order to be confident in your ability to design sane schemas, migrating insane legacy schemas towards sanity, and writing efficient queries. Also, check this out: https://use-the-index-luke.com/
Developing scalable web services
@kettuniko The Twelve Factor App (https://12factor.net/) gives good practises for building scalable services.
Microservice backed design
@cryptotommi-joentakanen has some suggestions for you!
- Martin Fowler – https://www.youtube.com/watch?v=wgdBVIX9ifA
- Kevin Goldsmith (Spotify) https://www.youtube.com/watch?v=7LGPeBgNFuU
- Ruslan Meshenberg (Netflix) – https://www.youtube.com/watch?v=57UK46qfBLY
- Rodrigue Schaefer (Zalando) – https://www.youtube.com/watch?v=gEeHZwjwehs
- Randy Shoup (Google, eBay) – https://www.youtube.com/watch?v=9vS7TbgirgY
@simoraman Often when people hear serverless they think AWS Lambda. However AWS Fargate is also a form of serverless computing. It removes the server setup and management work without requiring complete paradigm shift regarding how the application is built. Docker technology is not tied to AWS and the software could also be deployed to regular server without docker without the need for a rewrite. It should be noted that in regards of pricing and scalability Fargate is very different from Lambda. @raimohanska For starters, serverless means just that you're running your code on somebody else's servers. I agree with Simo and would like to point out that also easy-to-use PaaS services like Heroku are very much serverless too in the sense that you can easily push your application online and have the service provider take care of setting up servers and scaling out. The main difference to, say, AWS lambda is though that you'll be paying for the resources (instances, dynos whatnow) you've reserved while with Lambda you only pay for the computations that actually occurred. Also, don't confuse the serverless concept with Serverless framework which allegedly make it easy to build serverless applications.
Single Page Application best practices:
@eagleflo make your app “deep linkable”. Store state in the URL, so that each person who clicks a link will see the same content. Seen way too many SPAs which don’t follow that, kind of breaking what it means to be a web app.
Some randomish tips from our experts for web development:
@timorantalaiho Plan and test for performance from the start (
ab https://httpd.apache.org/docs/2.4/programs/ab.html is a good friend of anyone working with REST APIs). Just remember to not optimise prematurely.
@paavohuhtala Invest in developer experience. Hot reload, fast build times, and type hints in your editor of choice can be massive boosts to productivity, even in smaller projects.
Then, some very specific technologies were mentioned quite a few times too, including
@raimohanska One of the go-to tools you’ll want to integrate into your web application toolchain. Comes with create-react-app for instance and is worth understanding properly. In general, you should understand how your application is put together, even though using easy boilerplate tools.
React and related technologies
Relatedly, Redux and other state management solutions for React
@raimohanska I suggest you learn your React first before applying external state management tools. You should, once again, understand the problem first before jumping for solutions.
@tknuutin Like raimohanska said, when you're just learning, focus on just React first. It will help you understand why the external management tools are needed, and sometimes when you can live without them.
Once you get beyond React class components, the approach of having a single large immutable State object and passing that around in one way or another has become the most popular solution for state management. Redux is the most common library. I've also heard good things about MobX but can't say much about it.
My recommendation is to first use just Redux without any other plugins for it, and write something that involves async logic (like fetching from an API) to see the problems that raises. Then try something like Redux-saga or Redux-thunk that build more of a framework around Redux. These are useful tools, but my recommendation is to eventually learn functional-reactive-programming and use Redux-observable. Note that FRP can have a very steep learning curve and it's still more of a niche paradigm, just one that I think works incredibly well for frontend.
@raimohanska Promises are now part of the ES standard and you should master them. The async-await syntax makes their use easier to understand and less error-prone, but make sure you understand how promises work underneath, too.
Cloud and infrastructure skills
Unsurprisingly, many are seeking to get or stay aboard the cloud infrastructure fast train.
Learning cloud architecture skills
@raimohanska The AWS Certified Solutions Architect - Associate online course is a good way to get started with AWS. For me, it's a bit too much geared towards getting certificate, but gives a good overall impression on AWS cloud services. You'll of course need some hands-on experience on top of this but the course definitely gives an overall impression on what's available.
Future of cloud infrastructure; what to learn to stay relevant
@lauripiispanen: Some trends at the time of writing (Dec 2018) are
- increasing abstraction level in cloud services ("cloud native" software)
- "hybrid" clouds which encompass multiple providers and/or on-premises servers.
IMO when dealing with increasing abstraction, it is still always a very good thing to understand what's going under the hood. Things higher in the abstraction spectrum change much more quickly than the underlying things. Therefore when it comes to cloud, it's useful to have a grasp of computer networking (routing, firewalls, VPCs etc.), operating systems (linux or windows if you're using Azure), databases etc. Learning these things will stay relevant much longer and will give you a good base to understand "simpler" higher-level things. When designing software, higher abstraction often gives you possibilities to do more with less work (or offload some of your work to a 3rd party), albeit with the cost of change making your selected solution irrelevant or ineffective faster. You trade speed/cost with flexibility, and this is always a tradeoff when choosing between highly abstract managed services vs. rolling your own - you and only you can know what is important in your particular situation, and you cannot make these decisions without taking your own context into account.
I think @jylitalo's answer to the next question is very relevant when talking about hybrid clouds: there are definite overlaps between cloud providers, and usually the lower you go in the level of abstraction, the more things start to look the same. This, again, highlights that learning the lower level stuff is usually more portable. Application/managed services are what changes the most between different providers and therefore in order to fully leverage hybrid solutions, you need to know what these products are.
Do I need to master multiple cloud platforms or one. Which one?
@jylitalo I recommend mastering one platform first (be it AWS, Azure or GCP) and only after that expanding to other platforms, since the skills needed do overlap quite a bit. Also, of course, you need to master at least one of these properly to get anything done.
Publishing software to the “cloud”
@raimohanska First off, get an overall understanding on the AWS service offering and architecture. Then, familiarize yourself with the concept of Infrastructure as Code and learn to use an automation tool (CloudFormation or Terraform) and build a system using that. Using automation tools you can repeatedly set up and tear down your whole infrastructure and get separate, identical, test and production environments without code duplication.
There are some many ways to do mobile these days, starting with native iOS and Android development and the very promising cross-platform Flutter, not to forget the possibility of writing a PWA (just a web page really) that fit some needs pretty well too. For both of these good starting points are here.
@arimkevi Among our experts, there seems to be a strong consensus here that on Android you should use Kotlin (see resource list). Download Android Studio, fire up an emulator and get started on building something! Official documentations has a good step-by-step on how to do this. It is also beneficial to check out the best practices by Futurice. The best practice guide has a extensive listing of libraries and tooling often used.
If you like to check out some courses first, Google and Udacity provide a very extensive free training program in the Google Developer Training portal. Free courses range from total beginner to advanced and UX and design.
Once you need a backend for your application, it’s good to check out what Firebase has to offer. It’s a quick way to get your crash reporting, analytics, persistence and APIs up and going fast.
To call the API’s you will need to handle the concurrency. Android blocks async requests on the UI thread. For this we love reactive programming and tools like RxJava and bindings for it: RxAndroid, RxKotlin. To make the calls in a reactive manner Retrofit is the tool of choice.
@WickedLynx If you go with iOS, you might want to start with this online course and check out this always updated “mega list” for iOS. Don’t let the number of alternatives stop you from starting to learn though!
Getting started with ML, AI (popular!)
@luotsi To get a practical and pythonesque, but not too superficial overview covering pretty much the essential classical algorithms, strong heads-up for Raschka-Mirjalili Python Machine Learning. Includes a toe-dip in deep learning. We looked at several books to suggest for our Reaktor Dev2DS Academy, and ended up working through this one.
So, to get started, you could
- work through a book like this one
- take the Coursera ML course by Andrew NG https://www.coursera.org/learn/machine-learning
- try the stuff out on simple public competition datasets (Kaggle)
- ... and do not underestimate the math-ish parts ... to quote a dev2ds alumni @maglob , "OMG, It's full of dot products!"
Learning Python seems a popular topic! No wonder, since it’s the go-to language for data scientists and machine learning (I was told). Asking our experts (and beginners) I got a really varied set of stories how people learned Python. Here are some stories and tips:
- @jkseppan My generic advice is "build something [in Python] that interests you and is slightly above your current skill level, repeat until skill level is sufficient". The user interface at https://devdocs.io includes documentation for Python and several interesting libraries, so I recommend keeping it open in a browser and learning how to search effectively.
- @eagleflo When I first started programming Python in early 2000s, I was stunned how easy-to-read and informative the official tutorial is. It remains that way to this date: https://docs.python.org/3/tutorial/index.html.
- @janihell I got a flying start with a hands-on tutorial by Dr. Andrew N. Harrington. The course explains the basics in detail which made the language easy to grasp. https://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/index.html. I’d also recommend Udacity’s free Python courses that are very streamlined and user-friendly. The courses have plenty of small coding puzzles and quizzes that enable you to apply the things you’ve just learned. www.udacity.com
- @hhamalai Python is easy to learn, but the idiomatic, functional-ish way is the only right way. https://github.com/sfermigier/awesome-functional-python
Needed skills in becoming a successful analytics professional
Channels to watch
As an added bonus, we compiled a list of tech-related YouTube-channels that we, Reaktorians, are watching. Enjoy!
- Fun Fun Function: https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q
- Jetbrains tv: https://www.youtube.com/user/JetBrainsTV
- Digital Foundry https://www.youtube.com/channel/UC9PBzalIcEQCsiIkq36PyUA
- The 8-Bit Guy https://www.youtube.com/channel/UC8uT9cgJorJPWu7ITLGo9Ww
- Black Hat conference https://www.youtube.com/channel/UCJ6q9Ie29ajGqKApbLqfBOg
- Tom Scott https://www.youtube.com/user/enyay
- Wendover Productions https://www.youtube.com/user/Wendoverproductions
- Practical Engineering https://www.youtube.com/channel/UCMOqf8ab-42UUQIdVoKwjlQ
- Ashens https://www.youtube.com/channel/UCxt9Pvye-9x_AIcb1UtmF1Q
- Technology Connections https://www.youtube.com/channel/UCy0tKL1T7wFoYcxCe0xjN6Q
- Computerphile https://www.youtube.com/channel/UC9-y-6csu5WGm29I7JiwpnA
- Andreas Spiess https://www.youtube.com/channel/UCu7_D0o48KbfhpEohoP7YSQ
- Strange Parts https://www.youtube.com/channel/UCO8DQrSp5yEP937qNqTooOw
- GreatScott! https://www.youtube.com/user/greatscottlab
- SmarterEveryDay https://www.youtube.com/user/destinws2
- The Coding Train https://www.youtube.com/user/shiffman
- Linus Tech Tips https://www.youtube.com/user/LinusTechTips
- Marques Brownlee https://www.youtube.com/user/marquesbrownlee
- Computer History Museum: https://www.youtube.com/channel/UCHDr4RtxwA1KqKGwxgdK4Vg
- Two Minute Papers: https://www.youtube.com/channel/UCbfYPyITQ-7l4upoX8nvctg