You may remember that few months ago we decided to add a new technology to our Innocodian stack and open .Net department (before that we did everything on Ruby, JS, Mobile, some Elixir and WordPress). Now we have 4 cool .Net developers in a team and the 5th one will join us in October:) But let’s see how it all started, when Sasha was the only one in a team!
Hi, I’m Oleksandr, and I joined Innocode 3 months ago as a Senior .Net Developer. At that time I was the first in a newly-created .Net team. Now there are 4 of us already, and we have 2 big .Net projects. I am working on one of them.
In general I have 10 years of experience with programming, 8 out of them — with .Net technologies.
Starting as the only .Net Developer
When I started, there was no one else in our .Net team, and no PM on the client’s side. So, from the very beginning all the communication was between me and the co-founder of the Norwegian business (our client). It was very important to build trust and show Innocode from the best side — this was my main focus.
Frankly, I was very lucky to work directly with the main stakeholder — that gave the possibility to make decisions fast. What is more, this project is a successfully working business, which already generates revenues. Now, from Innocode’s side we have two more people — Ivan & Volodya, and from client’s side — dedicated PM.
What were the first steps you took, when started to work on this project as the only .Net Dev?
When the project starts, every client stays focused on people’s competence. So, the first thing you do — prove your competence. How? Evaluate your new project, point out the problems and take the initiative to solve them. Your approach during first weeks plays a crucial role. That’s what we did, and later when we needed additional developers and QA, he listened to us.
Now we are on the architecture refactoring stage: we plan to bring all the versions to one style and improve the system’s performance. Next, we want to upgrade UI/UX, if client agrees.
About the best practices
There are a lot of various approaches, you could use all of them, but don’t do that :) unless you have a really good understanding of clients needs. How to pick the best one? It comes with the experience, but also with the understanding where the project heads to. When system is super complex and has a huge load, you’d use clouds (Amazon etc.). We have a middle size project, so we don’t need clouds just yet, but we have to improve the delivery processes.
Where to study those best practices?
60% I take from Microsoft’s MSDN platform — just read the documentation and you are up to date. But learning means always the switching between theory and practice. If you read the theory only — without practice you’ll be fast to forget everything. But if you try to implement your ideas without enough theory backup, sooner or later you’ll get stuck.
Learning is always the switching between theory and practice. If you only read the theory — without practice you’ll be fast to forget everything. But if you try to implement your ideas without enough theory backup, sooner or later you may face the lack of knowledge.
I often check Stackoverflow and read Medium topics — .Net, JS, Angular, React and other dedicated to commercial stuff or OS architecture. One lifehack from me: if you find it hard to understand the original documentation from MSDN, go to Metanit — Russian language website with the translated versions. Though topics are limited, it’s still useful to check if you have understood everything correctly, and then go back to the original sources (MSDN, ReactJS, Angular etc.).
About the importance of learning new technologies
About a year ago I used to work with NodeJS and Amazon Cloud, tried React and Angular 4,5 on production. So to stay updated I still read about those technologies.
When you are .Net developer, of course you can do back-end only, but most of the companies will require you to know front-end as well. Here at Innocode I do a lot of front-end on the project as well. The framework is a bit old and we plan to rewrite it, but that’s after we finish with the tasks on architecture.
The biggest value on the project I work with now is it’s business logic. The biggest risk — when you do a complex refactoring, you might miss something, which may break the functionality.
Also, we keep on looking for QA to join our .Net team :) and soon for another .Net Developer.
When you start a new project, what are first things you pay attention to?
First thing — Security. Next — architecture and code in general. You have to evaluate if it’s possible to make refactoring within the existing architecture. To take the risk and refactor everything at once — is not “OK”. When Ivan joined me on this project he suggested we partly leave the old architecture and in parallel write a new one. Thus, we can gradually move to the new one, test everything and lower our risks.
8 years — aren’t you bored yet?
I keep looking into new technologies. You have to try different new things. When I was a Junior Developer, it was so hard to learn new languages. But through time I developed own approach — before coding “Hello World” on a new lang, read Wikipedia and find out what was the main PAIN, of the person, who created this language. Thus, you’ll understand main advantages. The most important here (and the hardest) — not to stick to your current language thinking, but be open to the new approaches. Yes, I could have stayed as a .Net Dev forever, but there are so many new approaches and paradigms!
TOP topics you are now interested in?
Frameworks and languages. Sometimes I need to go hardcore, and there’s always algorithms/data science or discrete mathematics for e.g. People new to programming often tend to lack knowledge in math. In general you can work fine without it, but if you want to grow — you have to understand matrices, trees etc. before going to algorithms. Let’s put it this way: math won’t help you to write a perfect SQL without knowing SQL, but without math your SQL can play trick on you.
What is “nice to have” for the .Net developer you are looking for now?
I’d like to see somebody motivated enough to grow and learn new things. Being a nice problem solver. And don’t give up, asking for help, when something goes wrong - be curious to solve it on your own.
Regarding technical part: you could not know something, but I’d be happy to see that you can learn fast and close this knowledge gap in e.g. a month. I mean you don’t need to know all JS frameworks in the world — it can be easily learned. But if you don’t know the principles of Entity Framework, even if you worked with it for some time, you’d better start learning it now, otherwise, it can seriously put the project at risk.
Kudos to Sasha for sharing his story! And thank you, dear reader for stopping by! Was it interesting to read? Tell us!
+ Here are some links, which you (or your friends) may find useful:
P.S. We used ColorStory App to make photos look retro :)