Best-Practices-1200x303
Do things differently, and have fun while you’re doing them.

I’ve interviewed nine of the people behind Progress’ DevTools/Telerik/Kendo UI products to learn about the philosophies that guide the development of our software. What guides our work, why are these processes important to us and how can you learn from our own internal best practices?

In Part 1, we looked at understanding the problem you’re trying to solve before you start coding a solution. In Part 2, we learned about the value of listening to your customers. In Part 3, we heard about the role of teamwork. Today, we’re going to find out more about doing things differently and having fun.

Don’t Be Afraid to Do Things Differently

Progress doesn’t necessarily subscribe to any one methodology. We allow for a lot of autonomy between our teams. And we aren’t afraid of failure.

Allow Flexibility so that Teams Can Operate Best

Something I was fascinated to learn about is how each product team gets to decide what roles they hire for and what makes the most sense for its structure.

Genady Sergeev—Director, Software Engineering; Developer Tooling Product Development

Genady-SergeevThe autonomous part of our software development process is the engineering teams. We have determined that each team will be able to choose how they structure.

Some teams don’t have QA roles. They solve testing challenges in other ways that are best for their particular team. Other teams don’t have frontend developers. They have skilled professionals who can code against the whole stack. I believe this is what allows the engineering teams to be most productive, as it takes into account the strengths that each individual in the team can bring, and obviously those are different from team to team. I believe that this level of empowerment is what can guarantee really good output.

Rossitza-Fakalieva

Rossitza Fakalieva—Director, Software Engineering; Developer Tooling Product Development

We are building products and not projects, and I believe this is a very important part of the way we do things. Our teams are separated by products. So every team has different roles as needed to be a single unit building product. That’s why we usually work on iterations weekly or biweekly. We have planning meetings in the beginning of the week and daily meetings also to sync on the progress of the work.

Pavlina Hadzhieva—Senior Manager, Software Engineering; Web Components & Tools

Pavlina HadzhievaIt’s important to have the freedom to adjust the processes according to the respective product or team based on the need. In our division we have mature products, products in active development right now and totally new, innovative products.

With this, the team sizes are different. There are teams with many people in different positions and roles like software and support engineers, frontends, QAs, etc. There are smaller teams with only support, let’s say, and so the processes cannot be equal. We just need to adjust them according to the specific need.

Of course, we have common practices and processes that are followed in the company. The teams are always willing to share good and effective practices, and you can use them if applicable in your context.

You can always suggest an improvement in the existing process or even creating a new one if you have identified such a need. At Progress, everyone can share ideas, can try new things, can improve the existing ones, and can help the team, even the division, to become more successful without being afraid of failure. This is really priceless. As we know, proactive contributions like this are critical for business success.

Find the Methods that Work, and Keep Adapting

Related to the previous post’s advice to always look for opportunities to improve, stay in touch with what’s going on in your industry. Learn new things. Adapt. Everything else is changing, and you have to, too!

Maria Veledinova—Product Manager; Developer Tooling PM & PMK

Maria-VeledinovaWhile we try to be strict and organized, we don’t actually follow a certain framework. You can often hear a team say, for example, we are agile or we are DevOps or we are … anything like that. In terms of how we build product, I think we do try to combine, blend, experiment and see what works for us so that we can build our own framework or our way of doing things.

That’s not just for the software building, but also how we approach product management practices. We are quite flexible in terms of how we do things. We might combine some marketing notions with some well-known engineering practices. Or we might say, “OK, we’re going to combine user persona/buyer personas with some kind of story branding.”

And maybe what’s surprising is that because we’re such a large organization, from the outside people might think we have some limiting beliefs, that big organizations are slow or there has to be a lot of bureaucracy or a lot of a processes to follow. Actually, we are super flexible and each team often acts like its own small startup.

We have the flexibility to choose how to work and what tooling to use, to provide ideas, to be able to contribute with our own ideas and actually implement them. While we are huge in size and number of customers and even portfolio of products, we do keep a kind of startup mindset or flexibility of small companies.

Genady Sergeev—Director, Software Engineering; Developer Tooling Product Development

There isn’t one process we follow. Our industry changes all the time, and we need to change the way we build software with the same pace as the pace of the industry. If we don’t, we will end up using approaches that eventually will get in the way. New tools and practices emerge every few years and others get out of favor. We try to adapt and keep what’s working and discard what doesn’t.

I try to be and to inspire others to be informed about developments that happen in the web context, which is our sphere of interest. I would always rather us be proactive than reactive.

The best advice I can give on the topic is to always learn more about the context. What is the context of the industry? Who are the big players? How is this particular product you’re interested in positioned there? Try to find out what are the major historical developments that happened in recent years that shaped the current state of things. For example, for web, this would be the advent of the single-page applications five years ago. So what was before single-page applications? If you read about those developments, you can really gather knowledge that will help you make educated decisions and guesses on what’s coming next and to position yourself ahead of things, which is always a better thing than being reactive and always late to trends.

Don’t Be Afraid of Failing

As you look for those chances to improve and adapt, do so bravely.

Petya-SotirovaPetya Sotirova—Senior Manager, Technical Support; Developer Tooling Product Development

I would say that at Progress we are not afraid to experiment and to try new things out.

And we’re also fully prepared for failing and are not afraid of it. That’s the way you learn.

Vesko Kolev—VP, Product; Developer Tooling BU

The thing about our culture that I think makes Progress a great place to build whatever you build is that we employ the growth mindset.

Vesko-KolevAbout 20 years ago, a professor of psychology at Stanford University named Carol Dweck defined in her research two types of mindsets—fixed mindset and growth mindset. And the difference in those mindsets is how you look at your abilities. The fixed mindset looks at the abilities as fixed traits, so you are as smart as you are and that’s it—you cannot do anything about it; while the growth mindset says, you are what you are, but you can develop whatever you want as long as you are ready to put in the effort.

And this small difference of perspectives has great implications on things—especially how you view failure. So if you are believer in the fixed mindset, “I fail,” means I am a failure because there is nothing that I can do in order to change that; whereas if you employ the growth mindset, you say, “I failed, so I have something that I can learn from.” And that difference in the perception of failure leads to: what are the things that you try, and what is the responsibility that you take?

If you’re employing the fixed mindset, you do everything that you can in order to not make any mistakes. And everything that’s wrong or has failed is being excused by outside conditions, which is exactly the opposite when you have the growth mindset. When you have the growth mindset, it’s absolutely no problem for you to take responsibility for your life, for everything that happens in you. It’s hard sometimes, but empowering because you are in control. With a growth mindset-type environment, politics go away because the finger-pointing stops.

So what is the Progress way of building software? Our way is to, first of all, be very clear on what is the thing that we want to achieve, not in terms of output, but in terms of outcome. What is it that we want to achieve? It will sound cliché, but I think it’s true: How can we improve the lives of the people in the world around us, significantly, in a way we can be proud of?

This is the second very important thing: We are missionaries, not mercenaries. This is a very big difference for me, and this leads to the next consequence, which is: Our mission is something that we are deeply connected with, and this results in people who are not coming just to get their salaries or bonuses. They’re here to win, and not just to win, but to win big.

Yes, there is a discomfort in failure, but there is also a big value in failure because this is the opportunity to learn. So the way to build software at Progress is to set clear and ambitious goals that have the aspirational part but also the measurable part. And we are striving with our hearts and brains to achieve those fearlessly. Actually, it’s not fearless. It’s like being brave—you might have fear, but being brave means to continue regardless of the fears.

Of course we love technology and we love building products. But I think our primary thing is within the context of the mission. We have clear goals of winning big by impacting the world in a significant way and to love the problems and the blockers that we are unblocking, not the solution.

Pavlina Hadzhieva—Senior Manager, Software Engineering; Web Components & Tools

Sometimes it's difficult. But if you give up, nothing will happen, so you should try and try again. And yeah, you can fail, but try again, and you have the chance to succeed. It’s really important to keep striving and to not give up.

I’ve had situations in which I don’t know what to do, how to deal with it. And I’m like, “I can’t. Really, it’s impossible. There is no way to deal with it.” And once this emotion goes away, you’re like, “OK, let me see, what can I do? What can I try now?” You tried one thing; if doesn’t work, another and another, and at the end you can achieve your goal.

The key is to learn from your mistakes and avoid making the same mistake twice. Then it’s sure that you will become a better version of yourself for the next time.

Have Fun

It’s very clear from speaking with any of these nine individuals that work is something to be enjoyed.

Todor-MitevTodor Mitev—Software Engineer, Principal; Unite UX

Have fun. Have fun all the time. Because if you don’t have fun? I cannot imagine it. This is applicable for any job, I think. If you are a doctor, you should have fun. Of course, there will be difficulties and tough moments, but at the end we should never stop having fun and enjoying all the journey.

Final Wrap-up

I’m going to let Vesko wrap up this series for us. I’m not exaggerating when I tell you that my conversation with him shifted my own course and helped me make some hard decisions. I hope you find opportunities to learn from the people around you, too!

Vesko Kolev—VP, Product; Developer Tooling BU

So the first thing is to employ the growth mindset. The second thing is to have clarity on why it is important to work on whatever you’re working on. And finally, now that you want to achieve this big thing, to have fun while you’re doing that.

That is probably the first thing that I tell everyone, especially in the software industry. There is so much that you can do. You can work on rockets. You can work on self-driving cars. You can work on whatever you want to work on. The whole point is: Be responsible with the only thing that you own, which is your time. That means when you come into work, make sure that you’ve chosen it.

If you have big goals, inevitably it will be hard for those goals to be achieved, right? And if you don’t deeply associate with that mission, then it becomes impossible. So having fun is something I really, really ask for from myself and I’m striving to have such an environment around me to work in.


Mandy-Mowers
About the Author

Mandy Mowers

Mandy Mowers (rhymes with Powers) is the acquisitions editor for the Telerik blogs, which means she gets to work with writers and developers from around the world to provide content to help other developers and readers learn about relevant topics. Reading, writing and editing are some of her passions. Some of her favorite ways to spend time are playing with her dog and playing video games, though she hasn't figured out how to do both at once.

Related Posts

Comments

Comments are disabled in preview mode.