Hey there! Welcome to my new blog website. For my first start here, I'd like to introduce you to the key points which I think are the most important for a developer in their daily job!
Just a quick reminder: the opinions expressed here are stricly my own. They do not represent the opinions or views of my current employer nor any of my previous ones.
I sometimes see young developers jump right into programming their application without even according themself a moment to think about it. Of course, it will work for little easy programs with a few features. But as soon as it comes to building an entire application with different complex layers, it is mandatory to spend your time to take notes, analyze, draw schemas and make researches before writing anything.
A lot of applications are somehow unmaintenable due to poor or lack of analysis. And trust me, I have seen many projects falling apart because of that. Beware, fellow developers! You always want the best for your work.
Everything you build for your client should be the result of a need. To identify the best way to create the product they want, you should get to know your client. Learn what they do, how they do it and ask them questions on how they feel about it. If you want to make your client happy, you first need to know what can make them happy! 😉
It's true that you gonna spend most of your time in front of your computer. But don't underestimate the social side of your job! As a developer, collaborating with your team is really important. Who do you ask if you face problems? How should you proceed when you discover a bug in production? What do you do when you want to take a break from work? Each company has its way to deal with specific situations. Talking with your colleagues opens you to know more about your company and the context within which you are developing.
It also makes it easier to work on a project's development with everyone. When you talk with your colleagues, you guarantee that you're not working on something which is already done or being developed by someone else at the moment. It is also a good thing to talk with the other developers if you have any blocking points as they might have experienced it before you. Being able to tackle problems quickly and release in the time allocated is a critical point for your developer career. It's your responsability to be productive and accurately estimate the time needed to complete tasks and complete them in the expected time.
This point is kind of related to the previous. As soon as you identify standards and best practices used within the company, you can work efficiently in compliance with what is expected from you. Talk with your team, ask questions, check all the things you can and agree on common conventions. This is not only important for the future of the current project you are assigned to, but also for your own career and reputation.
Although, don't fear to look for ways to improve the process if you think it can increase the productivity and the efficiency of everyone.
The first principle you should always follow when doing your dev job is to be lazy. But watch out, I'm not saying that you should chill out any time of the day. Nah! I mean that you should focus on delivering the minimum viable asked product. Don't implement something that hasn't been asked by the client because "it will be useful one day". That's bullshit. You are most likely to have an unused code which nobody wants to remove because they don't know its purpose and if its removal is going to break anything. Ew.
Don't Reinvent The Wheel is a beautiful example of being lazy. Don't spend your time doing something someone has already been doing far better than you. Just use their work! If you need to change a few things, you can still come back and edit it later.
This could sound silly but you are paid to make things work. But don't just throw instructions in a file and hope that they work properly. The sooner you make things good, the better the application will be. Navdeep Singh wrote a story about why writing good code matters, and how to do it. Check it out, it's neat!
It's cool to have a code that works and does what it's expected to do. However even if your code is understood by the computer, is it by humans? At some point, there will be another developer who will have to read your code and edit it. And it should be crystal clear for them.
Always think about how obvious your code is when writing it. Company's standards and best practices won't help you write understandable code. It's more or less the same situation when you're explaining your job to someone who's not IT: you make things simple. Keep in mind that you are actually writing a part of an app that will someday be refactored by someone else. And you obviously don't want people to curse you when they stumble on your code.
Why should you test your code? You're sure it works fine but still! You really don't know your end users...
I highly recommend project's managers to use the Test-Driven Development methodology for their projects. Testing in software development is in my humble opinion the most important step in the process of product development. And there are many reasons to support this fact. Here are a few examples:
- it ensures the product quality: it prevents introducing avoidable bugs in the production environment;
- it saves money and time: you can build things and be sure changes (e.g. optimization) won't break working stuff thus forcing you to check why feature X is not doing things as expected while you only edited feature Y;
- it helps secure the app: it makes sure there are as little breaches as possible (everybody knows "zero risk" is a myth).
Empathy is really a bonus for developers. To put yourself in the place of the customer allows you to build easy-to-understand and easy-to-use applications.
Talk with UX designers if you think your app feels too complicated to use when its purpose is as simple as drinking coffee from a cup...
It's also a good thing to have testers in your team who will act as end user and check if there is anything which doesn't feel right, produces bugs, is overcomplicated, etc. They obviously play an important role in the development of a project.
This is the last bit of my post and I wanted to share the best advice someone gave me once... Be curious about everything! There are plenty of things and everyday brings a full new set of libraries, protocols, etc. There isn't enough lifetime to learn all on everything although it doesn't mean you shouldn't stay up to date. Here are a few things I personally do to keep me updated on my favorite topics and improve my knowledge & skills:
I try to always choose the challenging and hard work over the easy and already-done-several-times tasks.
I go to events and meet people. For example, a lot of the ones I attend are organized by the MIC Belgique.
I get involved in communities. For example, I'm an active member of SpaceY!
I try to help people (e.g. lend a hand in open source projects).
The best thing you can do is to be proactive. Be passionate by your job like you are for everything that brings you joy!
Developers are not common resources. Good developer are even more rare. Stay involved and always question yourself. I am convinced this is how we learn!
What about you? What do you think makes a good developer?