Introduction
This text is a follow up from The Road to senior dev. What I want to share is some advice on how to be a well-rounded software dev and advance in your career to senior dev. Here I am covering a few points about best practices and your personal growth. If you did not read the previous post you can find it here: The road to senior dev. part one
Practices
11) We all know Kent Beck’s mantra, or at least we should
Make it work
Make it right
Make it fast
This doesn’t mean you have to go for perfection right away. First, make your software, do what it needs to do, doesn’t matter whether your code is not as clean as you want it to be, that’s what the second step is for. Refactor judiciously, remove duplicated code, simplify, improve your architecture… and finally, the third step is to optimize, not only for speed or resource consumption but also for the process, try to automate as much as possible.
12) Make it simple!
Complexity leads to coupling, coupling leads to high maintenance costs, and high maintenance costs lead to suffering. Complexity happens at all levels and one of the things you can do to avoid it is to frequently ask yourself the following question "Do I really need this?"
This question can be asked from a method level, where you should aim for a clean, easy-to-read code, to a macro level where the decision to use a library or a framework can seem to simplify some things at first glance but digging a little deeper you will find yourself coupling your application and, probably paying for this decision with a loss of flexibility later on. Make sure it's worth it, don't pollute your application with unnecessary code.
13) Tests and mocks are your friends
Sometimes you are reluctant to use unit tests and fakes, ending up testing your application all the way from the UI because you believe this is the only way to be sure that you are testing 'the real thing'. Well, the truth is, this method most of the time is cumbersome and represents a huge waste of time, the business logic really doesn't care whether the data comes from a JSON file or the UI.
14) Log of technical debt
Technical debt is a credit you have to pay, and often with a heavy interest, so you don't want to forget about it. It's ok to defer some things when the schedules are tight, but you have to keep a log for these decisions, so you can go back to clean your house later when the schedule clears up. Remember, the game we play is maintainability, and requires clean code.
15) Log of solved problems
How many times have you bumped into a problem just to remember back in your head you already solved it but can't pinpoint exactly how or when. I hate when that happens, so what I did is create a file where I log the problems I have dealt with, nothing fancy, is just a simple text file with a title for the problem, the project where it happened and the corresponding solution that sometimes is simply a link to a Stack Overflow page but this saves me a lot of frustration and time.
You
16) Continuous learning and new technologies
This is a hard profession for our brains, we need to be continuously learning new technologies just to keep up with the industry’s pace. Nowadays technology is totally different to what it was back when I started programming 20 years ago, so I had to learn lots and lots of new things through these years. But you must be aware of the following, companies don't like to change so fast, they are frequently risk-adverse and are not eager to try new technologies, they first need some assurance about the tool or technologies’ ability to withstand the test of time.
Nobody likes to spend a lot of money on something that could be deprecated for a new shiny thing in two years. So be patient when your technical leader is not so excited to use the new framework you just discovered. He is just playing smart.
17) Read the classics
I find the books by Martin Fowler, Ivar Jacobson, Uncle Bob… most interesting, because when you read them you are not reading recipes on the newest technologies, but rather deep reflections on why things are the way they are, tradeoff's implications, different points of view and sometimes colorful anecdotes.
18) Brain and attention
I read The Shallows:What the Internet is doing to our brains, a few months ago. This book had such a big impact on me and I recommend you all get a copy and read it too. This book is about the changes in our brain structure due to the use of the internet. How we are losing the ability to concentrate and to be creative while we pay attention to all those tweets and Facebook posts. At Zorbek we have been fighting this with mandatory reading time: The whole team, together, during business hours, read paper books, no screens and interruptions are allowed. And it has been working splendidly.
19) Drop the attitude and be kind
Please
20) Don’t burn your bridges
When you leave a job, you might feel the temptation to be rude to your now ex-boss and ex-coworkers, but please don't. There are many reasons not to do so. Probably all the grievances you may have now are not that important, and time will let you know that. Life is complex and the world turns around really fast, it is always good to keep doors open. And is also good for business, I am always getting business referrals from former bosses and coworkers and I’d like the same for you.
I hope you find these points useful, if you like to find out what we do at my company feel welcome to pay us a visit at Zorbek
Top comments (11)
I have read both of your articles, you have good points for sure, but I expected more detailed points.
The senior issue is a big one: it seems that people really cannot agree on WHO is a senior and who is not.
Some people think that to become a senior you have to answer all (or 90% of) the questions they ask you about a technology or about your work. Is that even possible in our line of work?
Some people talk about the 10000 hours. Some talk about company specific seniority... It is a mess!
How do you think someone can become a senior at their work? A senior software developer?
I believe it depends on the industry you work. At the end it comes tumbling down to the value you add. In certain sectors is more important that you know the business inside out, and in others your level of technology expertise.
For instance, here in Tijuana we have a lot of manufacturing plants, and in many work people who have written applications crucial for the plant operation, but they wouldn't be considered senior in a software house mainly because they are not up to date with new technologies. But they provide a lot of value for their companies and get rewarded accordingly
From top to bottom
1) Kanban and Scrum, making the most of both
2) 97 things every programmer should know
3) The clean coder
4) Building microservices: Sam Newman
5) The Pragmatic Programmer
6) Introduction to Algorithms
All the team select which books to buy, and everybody picks a book and we have a couple of reading sessions a week. No phone or screens allowed during reading time. We let our brains rest by learning
nice point. tried visiting your website but it seems that there is an issue with the SSL cert.
ohh, thanks, I'll forward this to the person in charge
My bad, is simply zorbek.com
Already fixed on the article.
Thanks!
Yap:
DLG_FLAGS_INVALID_CA
DLG_FLAGS_SEC_CERT_CN_INVALID
Thank you!!.a wonderful write up
Thanks mate!,
Saludos from Tijuana, México!
Really nice! I'd like to share a list of influential CS books -> github.com/cassiodias/influential-...
Thanks!