The other day, I was sitting at the office, quietly coding away, playing hide and seek with the bugs in the code, rushing to meet the deadline, basically — figuring out how to implement some feature that needed to be implemented, when a colleague of mine, wrote to me on our company chat app, congratulating me on a work anniversary. As it seems, a year has passed since I joined the company. I must say, two or three weeks ago, I saw this day was approaching, and I didn’t really put much thought into it since then. As the days passed by, It kind of creep up on me, and caught me off-guard. So there I was, the very same guy that walked in into the unknowns of employment one year ago, but something was not quite the same. As I am prone to introspection and a strong believer in self-development trough analyzing one-self and figuring out what went well and what can probably be done a lot better, in what follows, I will try to summarize what I have learned, and how my thoughts have evolved as a result of a year spent working as a software developer for a living.
Probably the first thing that comes to mind when I think about what I’ve learned, is that being a software developer, or a programmer, is no 9–5 job. I wouldn’t want to be disrespectful to other professions, and chosen career paths, but I don’t think that there is another field which changes quite as fast as the software development industry does. What you thought is relevant today, may be, and probably will be, obsolete tomorrow. You know that library you spent a few weeks learning, and can finally brag to your colleagues how well you’ve mastered it, and how easy is to do this and that with it? Well guess what, now there’s a new framework on the block, and its’ one-liners make your past weeks’ code look ancient. And that is just the tip of the ice-berg. The more important thing which steals your days, is the inherent complexity of software itself. It’s the need to know all the little gritty details, cross-domain, cross-layers, front-end, back-end, database, network stuff, to just be in a position of being aware of what is going on behind that one line of code you just wrote. In one of the chapters of his timeless book “The Mythical Man-Month”, Turing-award winner Fred Brooks, argues that the complexity of software, comes from the essential difficulties of modeling everyday processes and creating architectures that scale and go well with changes in the domain, and the high level programming languages, data-structures and algorithms software developers use, address just the small accidental complexity. I could not agree more. But in addition, one forgets that your knowledge of this latter, had better be pretty f-in good, so you can actually focus on the core problems.
The second thing I’ve learned is that it is from existential importance that you read code. You simply cannot develop your skills further, if you do not read code. Source code that is… I used to have this notion of something I called magic. That was my view on everything that I used and had no real idea of how it internally achieved what it did. There is an endless amount of what you can learn for a framework, or a library, or even a programming language just by reading the source-code of some library. Just by seeing how someone solved some problem, and what is their way of thinking.
The third thing that has changed in this past year, is how I approach everyday problems. I used to have this notion of what I can achieve, and what is just beyond my current understanding and I should not even waste time trying, but instead I should go read a couple more books, and then re-asses the situation. These days, I know that the most important thing is to challenge yourself everyday, try new things, do what you thought about doing for a long time but were too afraid to do, and push yourself as hard as you can, moving forward with each idea that pops into your head, and with each line of code you write.
Another thing that comes to my mind when I think about everyday work life, is the stress, and deadlines, and trying to do it good, but do it fast. For me, it is one of the most important things in life, that you choose to do, what you feel happy doing. Ever since I was a small boy, I have always found some kind of composure, some kind of calmness into the order of things. I’ve always kind of saw the world in a structured way. Even when I drew stuff, I would always draw stuff that were consisting of rectangular shapes, using my rulers. So there is a unique feeling I get when the program I am writing, or the software I am working on, does what it is supposed to do, but does it in an elegant, structured, easy way, without any hacks, in some ways so simple, that you just know it’s good. If you don’t feel like that everyday, while you work, you need to switch careers, ASAP, cause the pace of the work life today, will eat you alive. The most important thing for a man, is to start each day, motivated, to achieve something new, to reach a new height for himself and to help those around him grow. I sincerely believe that this is the way life should be lived, and this is the way that great things can be built.
When asked recently, about what in his opinion were the most important things for young people, just starting to work, the richest man in China, also the founder of Alibaba, Jack Ma, said and I quote:
It is not which company you work for, it is which boss you follow…
During my college years, very early I discovered that all those personal development books that say that you are — who you spend time with, kind of have a point. It is just becoming clear to me, how lucky I am to have two or three great mentors to direct me, and give me countless lessons each day. It has recently become clear to me the order of magnitude one can progress, just by being under a great mentors’ wing, and learning from first hand. Ask questions, listen and learn. You can thank him/them later, by implementing what you’ve learned each and every day. And by sharing that knowledge with the ones who need it.
The thing that strikes me most, is the ability of the mentor, to see something in you, that you yourself are unable to see. The ability to believe in you, and make you believe in yourself. When you combine this with a work-habit and willingness to do whatever it takes from your side, to learn, and to do what needs to be done, that’s the stuff that drives you, and motivates you. It’s the search for the new ceiling, that needs to be broken, and the new top that needs to be reached.
Thoughts about the Future
In her popular TED talk Angela Lee Duckworth, a management consultant turned math teacher, turned psychology professor, argues what is possibly the best thing you can learn as a young person, and that is the power of GRIT. Grit is passion and perseverance for very long term goals. Grit is sticking to your future, day in and day out. Putting in the effort, putting in the sweat, justifying it to your body and mind, with the sense of a higher goal, a mission that keeps you going whenever you feel like slowing down, or giving up. Not just for a week, not just for a month, but for years. Putting in the work, to make the future you desire a reality. Grit is living life, like its a marathon, and not a sprint. Grit is making smart decisions, when the crowd around you opts for the fast reward ones. Why am I focusing on this? Because to often, we have a thought in our mind, that creeps up, into our head, that we are not good enough. That we are not making progress fast enough. That we are not learning plenty enough. That we are not practicing enough. So how do we deal with this? With Grit. We form a habit of doing what needs to be done, no matter what. Of putting in the time. Of putting in the work. And after that, to quote a very dear colleague of mine, we just need to “give the time, some time”.