Did you know Stack Overflow has 50 million visitors each month? It’s a major hub for developers looking for insights and resources, when they’re trying to problem-solve. But one of the most valuable things you can find on Stack Overflow isn’t the Q and A. It’s their developer survey.
The results pull back the curtain and show some insights about developers – how they think, work and what they’re building – worldwide. But it’s not just the metrics that make it fascinating. It shows that Stack Overflow values developers. Because both asking questions and listening are important aspects of having deeper conversations, exchanging ideas, and growing a like-minded community.
Similar to Stack Overflow, Tiny values developers’ knowledge, sharing our expertise and garnering developer insights. Our most public display of those three things (aside from the Blueprint blog) is our annual State of the Rich Text Editor survey (read our 2021 results).
To our knowledge, no other rich text editor (RTE) company has researched the RTE market, or asked developers about their usage habits, development tools and language/framework preferences. Given the impact that WYSIWYG editors have had on computer history, we see it as a great way to better understand the developers, deliver greater value to them, and understand what's important to our product roadmap and innovation cycle.
With that thought in mind, we’ve assembled this ever-updating collection of essential links, resources, trends to watch, and news to read, to keep developers in touch with what’s going on in the development (and specialifically RTE) world.
News, blogs, events, and insights for developers
So who are the main voices in software development you should listen to? And what about news updates and must-attend conferences?
We’ve put together a list that shares the work of these insightful developers and writers. A few of these blogs have been running since the 1990s – with obvious changes in form, as communication platforms have shifted from newsgroups, IRC, forums, and onto social media.
Writers and their blogs
- A List Apart
- Steel Wiki
- The work of Erik Wastl
- Caspar von Wrede’s blog
- Yegor Bugayenko’s blog and book series
- Mike Cohn on Agile practice
- Cult.Honeypot (who also produce the Developer Happiness Index)
- XKCD comics on Software Development, providing an insightful sense of humor
- The Y Combinator owned Hacker News
- Security risks from the consultants at Certitude
- Mozilla Blog (and their Security focused blog)
- GitHub Blog
Thinking of attending a conference?
Conferences, when they have a solid code of conduct, are a great place to share insights. That's why we’ve listed some events to look into, as an offline place to share new ideas with other developers.
“People share a lot of useful information about a specific topic in the questions they ask after the session. The conversations that happen after the session can be vital to the problem you are trying to solve in your workplace[…]The transfer of knowledge during these events can help with the growth of a developer and even their organisation.”
~ Peter-John Welcome, 2019, FreeCodeCamp
BMC puts together a list of the top conferences for different software developers each year. Even though the past two years have completely changed how conferences work, the format is still an essential source for information and gathering developer insights.
- The world’s largest developer conference, Developer Week
- PowerShell and Devops conference
- The Python conference, Pycon
- Linux Conferences in different countries
- Conferences run by the IEEE
- DevOps Enterprise Summit
And a vast range of Meetup groups in cities worldwide.
Problem solving: fundamentals and beyond
We acknowledge that professional developers don’t need fundamental information. Too much information is a distraction. But we also believe in the importance of providing the fundamentals for new developers – whether they’re students or going through a career change.
There are numerous online guides and tutorials that are worth reviewing to stay relevant and up to date.You sometimes also need to keep essential information front of mind when solving day-to-day developer problems – it's all too easy to try and break an acorn with a sledgehammer! And reviewing fundamental content often sparks a startling new insight.
Fundamentals of DevelopmentIf you’re seeking a refresh or a review of the fundamentals of development, one major reference is the Teach Yourself Computer Science collection.
Code theoryYou can also read through our Full Stack Developer Guide to understand why learning new things is so important, and how understanding the theory behind code languages is vital to a developer's work.
Staying relevant as a developerStaying relevant and connected to changes is essential, which is why we have a guide on how to keep abreast of changes.
Adapting to industry changeBeing able to change and shift with a constantly evolving industry is an advantage. Read the essentials guide on adaptation for insights on changing with the changes.
Problem solving beyond fundamentals
We prepared an essential git command guide to highlight some of the most important git commands to use when managing a local repo. We also have our guide on streamlining your CSS. Making a style sheet is an essential developer tool, and this guide provides insight.
Understanding and taking care of Technical DebtTechnical Debt is a reality of large software projects – it’s both a negotiation, and a trade off. Limited time means some elements, like making optimally formatted source code, need to be placed on hold so that priority features can receive attention in the limited timeline.
Introducing a QA ProcessIt’s important to learn the testing policies of your environment. This can vary widely, so define these clearly before you delve into a new QA process for everyone to follow. Each tool in your technology stack also calls for a specific kind of QA testing
Working in a remote first environmentDifferent development teams have information sharing challenges all their own. At Tiny for instance, most of our information is internal, which means we rely on mentoring and pair programming for training.
Taking challenges like learning into account is vital for adapting to development in an increasingly remote environment. Remote work adaptation is an experience we’ve previously documented.
Mentoring and learning from experienceLearning from a mentor can help save time and energy, and provides valuable insights. Experienced developers have shared their insights such as the need to experience from many languages, databases, bundling tools, and server configurations. Another insight is taking the time to understand how database systems can be optimized. Perform some tests with large data sets to ensure database queries run efficiently.
Working with Waterfall and AgileDid you know that Agile and Waterfall can be thought of as a spectrum, with teams falling somewhere between the two practices? Or that some industries still benefit from Waterfall? It’s clear at this point that agile has its advantages,but it’s still important to look at what procedures are involved in agile, and which variation on agile works for your team. We have an Agile breakdown and guide with insights to help with that decision.
Writing and bloggingIf you have a project you want to share and need some information on how to start, check on blog writing guides like the Tiny guide on why developers should start writing blogs. Start by brainstorming a list of topics you want to write about, and then dump your thoughts into a draft. But never try to write and draft at the same time! It’s okay to have a bad first draft, which you can refine later.
Ideas and thoughts on improving developer velocity
Developers don’t work in isolation – connections and speed bumps between other teams makes or breaks development, especially at critical times.
“Poor management can increase software costs more rapidly than any other factor.”
~ Barry Boehm, 1981, Software Engineering Economics
By sharing information on deeper narratives, accounts and reports that explain the smoothing of management speedbumps, we’re aiming to help developers by reducing friction. That approach is linked to a strategy called developer velocity.
As we mentioned in our post on the topic, poor developer velocity impacts costs, time lines and labor estimates. However, when developers are equipped with the right tools, in the right environment and friction points are removed – you can get what you need to done, and help drive business performance.
By sharing problem solving information and insights with the wider developer community – as well as the war stories of how you solved complex puzzles – it contributes to improving everyone’s development speed. And it helps build a stronger,more innovative industry overall.
We’ve documented some our own war stories:
The TinyMCE move towards functional programming – was just one part of a larger refactoring, and improvement strategy and led directly to the transition to TypeScript, which brought about a number of benefits.
How do you adapt to change?
Asking questions out of interest and sharing war stories are useful for supporting development, but what about change? Sharing the results of experiments keeps science moving forward, and the pattern is the same in software development.
Sometimes, taking the time to provide a clear definition and introduction, can be enough to spark curiosity:
TestingOur development team makes use of several best practices at once for our software testing.
CollaborationThe entire RTC project has been through many development stages. We took steps to build collaboration into TinyMCE by working with and evaluating Slate.js.
DevOpsAlignment between software development and Developer Operations (Dev Ops) represents a major goal for a software producing business. But it wasn’t always that way.
Developers had to share insights, and educate operations engineers about the intricacies of producing code. In turn, operations teams shared knowledge of release processes and all the details of the infrastructure the business uses daily. Over time, DevOps emerged from this interaction. We assembled a resource on what DevOps actually is to contribute to the sharing of more insight.
Modular ProgrammingModular Programming is a concept that appeared in the 1960s. Despite its extreme age (in terms of technology development), Modular Programming represents a major method that Tiny’s found very helpful. Modularity means the ability for small, separate units to work on their own, or fit together and form something larger that produces a result.
In our programming, the TinyMCE monorepo contains many different modular components such as Katamari (defines data structures), Sugar (allows HTML DOM control), and Bedrock (the TinyMCE testrunner), to name a few.
Sharing insights to support and improve management
There’s another unexpected benefit of sharing information – helping with harder technical decision making. It can be helpful to read something more than an essential guide or a war story – something that's an in-depth exploration of a topic.
This is especially true for developer team leaders, engineering managers, technical leaders (or whatever your job title is) tasked with calling the engineering shots. Our in-depth guides are here to help navigate management when responsibility and authority become vitally important.
“Any software project must have a technical leader, who is responsible for all technical decisions made by the team and have enough authority to make them. Responsibility and authority are two mandatory components that must be present in order to make it possible to call such a person an architect.”
~ Yegor Bugayenko, 2018, Code Ahead: Volume 1
In short, when you have responsibility and authority in your developer role, an in depth guide can help with the hard decisions.
Like any large scale software project, there’s constant problem solving. One large scale solution we implemented was to use Free Monads to solve a file system problem.
A Free Monad allows you to sequence an operation 'functor' as though it were a monad. This means you can control the operation order and you can pass to subsequent operations any return values from previous operations.
Functional Programming also informs development decisions – for example, we used category theory, to shape the development of the TinyMCE Rich Text Editor.
Metrics for developers represents another essential area for investigation. The numbers have to have some meaning for the specific team or dev culture, otherwise nobody pays attention. We’ve documented some insights into developer metrics, and it’s a subject worth exploring further.
Adapting the agile principles to TinyMCE, represented a major goal. We’ve several insights into our decision making surrounding agile – like applying stand ups across dev and other teams, continuous testing, and using increments.
When responsible for releases, it pays to understand version numbering. Read through the semantic version numbering guide. The shift was a part of a wider engineering adjustment at Tiny, bringing the version patterns closer to the semantic versioning specification.
Sharing relevant, reference information
It always helps to have a reference list linked and easy to look at. How else can you quickly look something up to appear just a bit more knowledgeable?
This practical list of 8 habits for software developers describes exactly what you can start changing in your daily work habits if you need a general reference.
A useful, general information source is the library put together by O’Reily publishing.
Frameworks and tools worth bookmarking
- vanillaJS - http://vanilla-js.com/
- Graphite - https://graphite.dev/
- Learn X in Y minutes cheat sheet collection - https://learnxinyminutes.com/
- Regex information - Regex 101
- Regex cheat sheet - At cheatography
- The Sed quick reference on Grymoire - Sed reference
- Ascii character references tables - ascii-code
- The MDN CSS and HTML reference lists - CSS, and HTML
Books on the agile methodology:
- Running Lean: Iterate from Plan A to a Plan That Works by Ash Maurya
- Scrum: The Art of Doing Twice the Work in Half the Time by Jeff Sutherland
- The Lean Startup by Eric Ries
Browser Support ReferencesA major source of information is checking on the “Can I Use” service, and searching the browser support tables to discover and identify support for specific front-end web technologies on desktop and mobile web browsers. And, if you need any further information or insights, Google “mdn <api name>” and check on the browser compatibility tables.
What else is there to learn?
Sharing information has a broad array of benefits: establishing and reviewing fundamentals allows you to see everyday concepts in new ways; it helps you stay relevant as a developer; it can help solve complex problems, strengthening the industry as a whole; and it provides you with the authority to make decisions in a position of responsibility.
It’s also important to have reference information close by – which is why the previous section on reference information gathers books, cheat sheets, tools, and framework information into one place.
If you’re a developer who’d like to try out TinyMCE and get started, the best option is to check on the TinyMCE repo on GitHub. There you can find our thriving developer community, and find significant developer resources and insights like our discussion space to help you solve whatever rich text editor problem you're working on