Your creative journey starts here.
- Unlimited access to every class
- Supportive online creative community
- Learn offline with Ulearna's App
That’s the single best career advice I ever received.
I’ve fallen in love with programming because it can be so elegant. The great programmers can create code that is so clean and readable that you can even call it beautiful. I, for sure, often call it this way.
Some solutions to algorithmic problems blew my mind with the brilliance of their creators. Some codebases were so robust - performant, maintainable, and expendable - that I instantly craved to work with them.
Excellent code is the aspiration of many programmers, and it should be this way. But perfect code isn’t always the best choice. Sometimes, and by sometimes I mean quite often, you don’t need it. Sometimes striving for perfection is simply a waste of time.
It may sound like blasphemy but stay with me.
UNDERSTAND THE PRODUCT
Real-life programming is not the contest for the best code. It’s about solving real problems and creating products. It’s about providing value.
To provide value for your clients, you have to understand their needs. You should know what the product’s business goal is and make decisions based on that.
Is your client a startup that wants to build MVP fast, has a tight budget, and only half a chance of succeeding big? Or maybe it’s a huge bank that needs secure and reliable software for the decades to come? What are the essential features of the app? Is this app to be used by thousands of users in the next few years or just a few hundreds of users at the one-day conference?
You have to know the answers to those questions if you want to offer viable solutions. A considerable part of your job is recommending appropriate solutions to solve client’s problems. Perfect code is rarely the answer - good enough code that does what’s required is.
To become a great developer, you need to resign from code-oriented thinking and embrace solution-oriented thinking.
You need to be wary of the project’s requirements, even if the client isn’t. You are the expert that can and should advise what the possible solutions and problems are. It’s the norm that the tasks aren’t defined because the client doesn’t have the expertise. If they had it, they wouldn’t need you.
Communication with the client in that regard is one of your crucial duties.
You may think that you don’t contact the client. Some seniors do it, you just do what you’re told. Maybe. But your goal is to grow and become an essential part of the team. And that will involve communication with the clients at some stage. So be sure you’ll become good at that.
Understanding the potential client’s priorities makes a difference between getting a project and being rejected. Both managers and clients covet developers aware of business goals and limitations.
Good communication with the clients makes you indispensable as a developer
It doesn’t matter how good your code is.
Or rather it does matter. Providing you understand the requirements and priorities. To provide value, not just code, you have to be productive. Productive, not necessarily busy or hardworking. Productive people do things that really need to be done.
Programmers have their interests and priorities. We waste countless hours on non-essential things. We spend days on improving the performance of code that’s already performant enough. We polish our CSS as long as it’s pixel-perfect at every screen size. That’s great. Of course, if it’s also our client’s priority, not only ours.
Programmers know that our job is all about the tradeoffs. There are lots of them, like speed vs. ease of use, low run-time cost vs. ease of debugging, simplicity vs. control, etc.
But we often forget that building things for clients is also about tradeoffs and priorities. And it’s not our priorities that matter. It’s theirs.
Think about it from the client’s perspective. Imagine your team is responsible for creating the conference app front end — attendees will use it to review speakers and send their feedback. The app will be used only once — for the conference. It’s a simple project with a weak deadline.
Which developer does the client prefer? The one who took four days to write maintainable code responsible for searching the speaker and a single day for other tasks, or the one who talked with the client about the priorities and focused on an intuitive user interface?
You guessed it. The client always chooses his needs and priorities over yours.
DEVELOPERS WHO UNDERSTAND THE BUSINESS GET PROMOTED
Understanding the product will help you to become a better programmer. It’s also a highway to higher positions in your company.
To get promoted, you need to learn what things does your company value.
Think about your employer as you’d think about the client if you were a freelancer. Clients usually aren’t interested in implementation details. They want apps to do what they’re designed for and to do it well. Minor improvements that took you days are irrelevant to them.
Your job is to provide solutions for your employer.
In your work, you should focus on the value you provide to the company. Are you working on essential features or some minor details? You may ask for a transfer to the team working on core business. You want to put yourself in a position where you can influence essential parts of the product.
Take your time to understand what products are essential to your company. Check what technologies are used for these products and try to learn them. Prove to your managers that you’re able and willing to stretch yourself and help in critical projects.
Developers who understand the business get promoted.
Understanding the product will help you get a promotion and also grow your programming skills. Never forget that you’re the problem solver, and you need to identify problems worth your time.
Another path to promotion is learning skills lacking in your company. Maybe your company rejects many projects because they don’t have experts on some framework, data visualization, or anything else. Ask your boss what they feel would be useful. This way, you can show initiative and get guidance on which skills will be rewarded.
Coding is a part of the job. The higher your position, the less time you’ll spend coding.
You can achieve only so much if you focus solely on coding. To be promoted to lead or architect position, you need to understand the product — its current state and direction. You need to plan and be able to prioritize.
Developers who understand business are valuable on every level, but they make the difference between success and failure in top positions. Understand the business, and you will be the one who makes the difference.
Understand the business, and you will be the one who makes the difference.
- your job is to provide value - the value is not your code, but its ability to solve a problem
- you should pick tools depending on the use-case, one size doesn’t !t all
- Find out what’s the most important part of the product and focus on it
- Find out what your employer values and master it - this way you’ll be promoted fast