My first professional programming experience

Janez Čadež
5 min readFeb 7, 2017

--

As I am quitting my current job at the end of next week, I wanted to take a moment and reflect back on how did I experience my first programming job.

Background

Little background would be helpful here. I am a student of computer science faculty in Ljubljana and have also visited computer technician high school before that. Only real experience I got in the high school was internship as a Wordpress developer, which I didn’t like so much (was complete noob in programming back then) and I started moving from development to IT field.

Starting the faculty, I had some accumulated IT knowledge and was maily interested in the Ops/DevOps field. I got my first student job in the cool company working on customer support and maintaining virtual desktops (VDIs) for customers. The phone customer support and managing quite fragile virtual desktops was frustrating as hell, but also fun.

http://giphy.com/gifs/australianopen-tennis-australian-open-l0Exl0VRJhJFjjNFm

During my study, I slowly started shifting back to development and I was loving it. My love for web development returned and I promised myself that my next job will be software development.

First programming job

Searching for student jobs was quite a process. I knew a little bit about web development and latest technologies, so I could differentiate between “good stack” and “not so good tech stack”. Mainly I was avoiding any legacy system maintaing job as I wanted to explore latest web technologies and advance my carrer.

I was searching the student jobs portal and found a job offer where they were looking for fullstack web developer and listed good stack (ASP.NET, JS (AngularJS), CSS, HTML). I was immediately interested, sent my CV + references and waited. The thing was that I was not so sure in my programming skills, since I only had professional experience in IT field. But anyway, they soon replied, I went to the interview and a few days later, the emailed me: “you got the job!!!”.

http://giphy.com/gifs/dance-celebration-102VfCWF40oAuI

This was really exciting, but more excitement came on the first day of starting the job. So I came to the offices and was suprised, one of my good friends was there with the team. We soon found out that he also applied and got selected. Nice, I had a really good friend there, so that made the starting process even more fun.

Starting out

They say that the first days or weeks starting a job are the hardest. I agree, but as long as you have a mentor and he/she’s willing to help you out, you are going to have a good time.

The company assigned a team lead as my mentor and he was extremely helpful. He explained the development workflow to me, also described the products they were making and their architecture.

One additional job besides software development was assigned to me at the beggining of job. This was customer service via email. The memories from previous job came back and I though damn, that will be some unnecessary additional work. But I was completly wrong, let me tell you why.

So I was on team where we were developing a SaaS app which is available to users free and we offer a Pro package as well. So the emails we got were from all the customers and we differentiated support as bug/suggestion/help and so on.

http://giphy.com/gifs/feedback-u5DKU8Ps4Ktag

The volume of feedback we got from these emails was amazing. We got everything from bug reports, suggestions and also notes on how we could improve user experience and user interface. If you have a support system, you should totally embrace it because the knowledge from these emails will tell you how should you improve your application (kind of customer-driven product). This is especially true if you have some sort of Product Manager, who is last “wall” before you release new feature. For example, your PM doesn’t like trash icons for delete buttons, should you really change these icons as users are used to them in every freaking other app on the planet :)?

So I was doing about a hour of support every day and other was development. We had a good development velocity and were adding new features to the app, fixing bugs and overall gaining good number of new customers.

This went on for a year or so, but now I think it is time for a change in my life. During the year, I discovered that my programming job can be also remote and you are not tied to one location only. In the next months, I want to travel, finish my BA thesis, finish my first Udemy course and find a good remote software development job.

Key lessons learned

I gathered some of the key lessons that will help any software development team with their development workflow. Some of these suggestions require a team of at least two developers.

  • Attitude (I think your attitude is really important in software development. For example, you need to be positive, curious, willing to learn, driven and also critical. I think good attitude is half and competences are other half when it comes to any job. The term of soft skills also applies here (soft skills are the opposite of technical skills, like communication, teamwork, professionalism). A great book on soft skills which I highly recommend is Soft Skills: The software developer’s life manual.
  • Planning (We used Scrum in our team and sprint planning was one of the most important tasks. Good, detailed sprint items are the key to success, because if the item is not specified good, you are wandering around and producing wrong or/and bad code.
  • Code reviews (This is HUGE, code reviews along side tests (both unit tests and autotests) are the single most important thing your team should do on a regular basis. When I was developing some feature and it got complicated I knew that I was not writing the optimal code. When I was finished or during the process I asked collegue to help me out / review my code. This had huge benefits, as my collegue’s brain was fresh and usually they had great ideas how to clean the code. I think that every little feature/bugfix should go through code review process. This also decreases technical debt in ways you cannot imagine.
https://pbs.twimg.com/media/CKH1bA5WUAA1kou.png
  • Learning (Everybody should continuously improve their technical skills as well as their soft skills. There is soooo much value on the internet, learning sites like Pluralsight, Lynda.com and many more. Also, maybe a good tip for following the latest trends and good practices for your desired tech skill is to open a Twitter account. I follow many Angular experts on Twitter and this is the only “tech news” site I ever read because it is technical and non-bias. You should take time every day (on the job!) to improve yourself and your company should provide additional resources if needed (I am not talking about some fancy conferences, the online resources could be a good starting point, they are fairly cheap (ROI is big).

CFO asks CEO, “What happens if we invest in developing our people and then they leave us?”

CEO: “What happens if we don’t, and they stay?” ~Peter Baeklund

These were some of my observations during a year at my first programming job. If you read everything, thank you so much, I hope you liked it.

You can follow me on: Twitter or Youtube.

--

--

Janez Čadež

JavaScript Engineer @poviolabs, Udemy instructor, open source contributor. https://devhealth.io