Are you looking out for career into development or already a developer and want to learn more? If you are, then below is the list of fundamental stuff you can focus on which will help you to explore more about software development. Mostly, college students, fresh graduates or junior developers look out for stuff which can help them to learn more about their field. Also, programming jobs and career into software development/ web development is one of well paid category.
There is no limit on learning stuff, internet is full of valuable resources and all we need to willingness to learn and explore things. For developers, there are many things which should be known and list would be too long if you dig into different technologies and skills. However, article is focused on basic and must learn points for developers, list has top 10 stuff developer should know with one bonus point 😉
Page Contents
Master at least 1 programming language
There is a huge difference in knowing/having an experience in programming language and being a master in it. There is a concept a.k.a being T-shaped, it is denoted by letter ‘T’ as shown in image below. I will relate this point with it, the vertical part is like knowing in deep, explore and deep dive, get high level expertise and the horizontal denotes explore or know breadth of it, get knowledge of things, frameworks, tools, techniques on it, read and build stuff with that.
Know that mastering is possible and easy, if you have desire to do that, if you dedicate yourself for it. You need to sacrifice, yeah, you read it right! You need to sacrifice many things to achieve something and it is applicable here also. Use that language everyday, everywhere, work full-time for it. Know in and out of all available resources, try building your projects on it, read code written by others, study about design concepts of that programming language. Learn to use integration with other systems. Follow all the best practices, contribute to projects, make your own. I’m gonna cover about contribution in upcoming points. Try out frameworks and APIs build in that language. There is no limit to it what you can do with it to master programming language.
There is nice quote, which I can relate:
It is not enough to do your best: you must KNOW what to do, and THEN do your best.
Learn Data structures and algorithms
Why a developer should know about Data structures and Algorithms? As a developer, we play around with data or information in application, how you manage that data and that too efficiently is what can be learned with data structures and algorithms. You can say, that is the right thing to consider while designing a solution or while solving a problem. Data structures can be implemented in any programming language and can help you to solve program with minimal efforts. And more important, organisations do ask now a days at time of evaluation about problem solving skills, efficiency of algorithm etc.
DS&A help a lot in real world problems, look at the dictionary how data is arranged, look at facebook algorithm of search or add as a friend or mutual friends as a concept of graph, how google rank your website, the way we get top trending videos on youtube, all that is with help of data structures and algorithms. There are plenty of resources available to learn about data structures and algorithms.
Testing and debugging
Have thoughts like? You are not a tester or not from a QA team!
Leave it, it is must have skill for a developer. Before handover to QA, code must be tested from your side, use unit testing tools, it’s simple, use dependencies available for testing framework and have scenarios designed for data sets.
Whenever you encounter an issue, you must know how to debug you code or application, now a days there a plenty of tools available which can help you to debug where you code is having issue with. You should know code flow, integration, log file analysis, performance with various scenarios, get to know about toolbox to test at network level if required, database performance, automate you testing with frameworks. Get to know root cause of issues, and that comes with debugging, this will help you in future while coding your solution.
Backend database
If you don’t know about database, you are not a developers. It’s a basic need or key part of any application, it needs storage for data, right? There are many DBMS available in market familiar one like Oracle, MySQL, PostgreSQL etc. Must know, how to integrate and query your data. This is not limited, the former or traditional application were using DBMS and SQL to query it. Now we have NoSql nowadays, used at large scale and for distributed applications. I’ve written article on Redis and basic example, which again is used as different purposes like storage, caching technology.
Storage could be used for small level or a huge enterprise applications with concept of big data. This is vast topic to learn in its own way, not the whole things, but atleast a developer should have basic skills about backend system and must be familiar with query language. Also, trend of big data is evolving, with AI and ML.
Tools
Tools help us to do things in better, faster way, tools help in becoming better at certain things. There are plenty of tools available well suited for different tasks you want to perform, let it be for writing a code, testing, connecting backend, deployment, logging, monitoring. This list was for technical stuff we play with, on that we have to track and log certain things, tools can help with integration of things and have log of each task.
Moreover, with tools it is observed that we work efficiently and there is better productivity. Today, tools even have plugins/add-ons, which makes our task easier, so why not simplify and automate task more with tools. Even organisations ask for tools knowledge at different level, as it makes development straightforward and fast. With the right tools, developers can save time, deliver high-quality apps.
Design principles and techniques
While designing and developing a software, initially, one builds a blueprint of it, to serve as a base for constructing the system based on the requirement. Process involves from requirement gathering till deployment, it’s well known subject, the SDLC part in software engineering. Defining the architecture, components, interfaces and other features of it, this process is must, where one decides many things which we gonna develop based on it. Like, design analysis, choosing a right platform, handling various scenarios on business requirements, it’s scalability, uniformity, integration, reusability, testing, prototyping like there are many factors in this field. And developer must know basics about that, because as you gain experience at senior level, these terms come into picture. Design patterns, the most important and must know for developers.
Infrastructure (Cloud technology)
Sounds creepy? Again, it’s a big topic to explore and share things about. But, cloud technology is everywhere. Developers must know atleast basics for infrastructure, cloud technology has made it easier by providing easy console and service to setup based on requirement. Many vendors have provided their customised platform for infra. They provide easy to use console, services to integrate, hardware and network stuff setup on one go based on application requirement and that too on demand, pay as you use. Isn’t it interesting?
Understanding architecture is helped by knowledge of infrastructure and the whole setup, such as how things are connected and working. In a world of microservices, everything has became scalable and dockerized on cloud. world on kubernetes is evolving.
Open source contribution
Question? Why contribute to open sources? Well, for developers it’s one of the best way to learn, teach, and build experience in about any skill you can imagine. Contribution is not only limited to writing a code for them, you can explore the code, help with issues, help with documentation, peer review, just get into community.
Moreover, it is not limited to just softwares, Github a great platform to contribute is full of different stuff. Just go and check out different stuff.
I’m suggesting this because if you explore there is an ocean and if you take steps to contribute to open source, slowly you would get interest and may start with something you find interesting at software level. Find a project, start with small, understand the system, there are people to guide you, so don’t worry, just contribute! This gonna help you learn and it’s like feeling grateful for dev community, a form of gratification. Even organisations are planning event for open source contribution, like digitalocean organise hacktobefest, it’s a month-long celebration of open source software in partnership with Github. So, start contributing!
Project management
You developed one application, but one need to stay aligned with things, right? What features you are delivering, estimation, defect logs, delivery, releases etc. Developers use the tools required to log features, work on defects, provide estimates, manage deployment, and integration. However, the manager needs to manage these tasks. It actually helps in tracking progress, quality and planning further values for project.
Team work & soft skills
Everyone has unique way of learning and doing things, have different areas and level of expertise. When a team brings this together, it will definitely help the project. It’s deep, working together in a team, you can achieve biggest milestones. Reason organisations focus on team building activities.
Now, soft skills are important for everyone, come on! You must have this no matter which position or field you belong to. Know that, communicating your ideas, your skills is the way you can grow in your field. Will it be worth, if you don’t know how to present what you know? 😀
These were top 10 stuff a developer should know. Time for bonus point 😉
Read, Learn, Practice, Share
Mind my words, this looks like smallest thing but it has a big impact on developers life. Read books, article, read code written by experts in your field. Go through documentation to know more about the particular stuff. Read not only about technical stuff, explore more about other topics that may interest you.
You must learn new things in your field, let it be smallest, get to know things, explore things on your own, make your concepts clear.
People blame if they are stuck somewhere and stop learning. Hell! Internet is open, who is stopping you? We cannot solve the significant problems we face with the same level of thinking that created them.
Learn new stuff, practice it. Practice will help you with perfection.
Practice coding, problem solving, soft skills, practice logic building.
Sharing is caring. Sharing will help you know more, learn more. Teaching others about the stuff you know, will eventually help you. Don’t limit sharing knowledge with other, you never know how things may change after it has got better reach. help everyone. I started writing with motive to share my knowledge and learn more. People share their knowledge on different developer communities, contribute to open source projects, answer queries on Q&A platforms, write articles and tutorials. It’s like working for own developer community. 🙂
There is no limit to things you can learn and achieve. Go, explore more for things you are interested in.
You can also listen on my podcast:
Know more about my podcast Stuff Developer Should Know.
Dear reader, a sincere review from you would encourage me to write even more 😉
Stay tuned. Happy Learning.
[…] If you are working on an application which has more interaction with real-time data and for modern businesses, performance is the key factor. Moreover, with this scenario your data won’t be stored in structured way which was formerly stored with RDBMS part and to make storage flexible and access the unstructured data faster and better way you need the NoSQL storage obviously. This is not the only thing, but many factors are considered while designing modern era of business application where one need to decide the best tools/technology to fit in. What that can be? Yes, Redis can help… Read more »
[…] So, these were points I found you can consider as a reason or benefits of choosing microservice architecture.Most large scale web sites including Netflix, Amazon, Uber, Spotify, eBay and many more have adopted microservices architecture. However, one challenge with using this approach is deciding when it makes sense to use it and there would be different scenarios and circumstances for individuals. That totally depends on software design. Software designing skills are essentials for developers, as mentioned on top 10 stuff developer should know. […]