I still remember my very first day at work…
“Wow… what a big office, everyone seems to be working so hard! I must try to work hard as well!” Those were my initial thoughts on my very first day of work. Then there I was sitting in my newly furnished desk, I started my day off with high expectations!
An hour into my work day, all I did was blindly stared at my pc monitor. And no one seemed to care for the fact that I was doing nothing at all. So by taking the initiatives I walked to my manager or some one that I thought was my manager, I asked “Hi Sir! I am ready for some butt kicking coding sessions!!”
And my humble manager replied with a donut in his hand and a coffee in another “Well, aren’t you an energetic youngster?!” gave a pat on my back then continued “go have some fun with your fellow teammates, let them teach you a thing or 2.” He then walked out the door.
Taking his advice, I went to each and everyone in the development team. But then I realize ALL of them, yes! ALL of them were either serving the web or chatting… OMG! They are not even working!! And no one in the office seemed to care! Feeling depressed I ended my first day of work.
So that was my first day of work experience. But after years of being in the industry, my mentality towards their behaviors has completely changed.
I realized software development is a craft, not a process. It is a design, not an assembly. And programmers don’t need supervisions, their work speaks for them. Their chatting was to get them into programming mode, their web serving was to fill their minds with development ideas.
Many business oriented employers tried to rush software projects by forcing programmers to work longer hours, thinking that software development is like a factory production. But that assumption led many software projects to failure. They did not understand the fact that programming is a mental craft not a physical labor.
The number of lines of code on a program does not signify the quality, even quantity (number of features) on that program. A clean well written program could be half the size of a poorly written program and yet with double the features.
Maintainability is another issue with poorly written programs. Yes, one would be able to rush through a feature by putting a bunch of loops and if statements to it. But when requirements change (this happens all the time), maintenance will be a nightmare. More and more resources must be added to refactor the crumpling code base.
Scalability, extensibility, you name it, all will go down the drain with crappy rushing solutions.
And due to the nature of software development work. No management is best management for programmers. When I say no management I mean it at a micro level. For all you fellow programmers out there, how much work would you accomplish if your manager comes to check on you once every few hours asking “So how are things? Everything ok?”, then inspects your monitor to see what you are doing. I would go mad when managers especially from the business side (a marketing manager for example) start doing stuff like this to me!
So to conclude, if you are a fresh developer who is enthusiastic and want to contribute to the team, start by learning your team’s culture. Then learn the development environment. When you familiarize yourself with everyone and the environment, and you feel like there is nothing to do, or you don’t have any tasks until next iteration, start looking into the bug reports. Pick a bug and start working your way through the application. After a few bugs, the next iteration would come, and you will be ready to take on tasks WITH the team.