What I Would Like to Know When I Started My Career As a Software Developer

When you start your career in any field, you probably have high expectations, but don’t really know what to expect. Should you lower your head and do what you are told, or should you only strive for ambitious projects? Here’s what I’ve learned from my experience in software development.

Let me make a few suggestions based on my experience and observations. This list is not exhaustive – because it cannot be. Your experience will be unique.

1. Don’t be afraid to learn on the job. Unfortunately, the bookshelves in most workplaces are mostly just decorations (look what our hackers claim to read!). It is rare to see anyone reading it , especially during regular business hours. However, you have a computer and can read newspapers and most books through an e-book. So let’s get down to it. You won’t learn much if you just do what you are assigned to do and a little more. You also won’t get ahead if you ask for more work and get the hard work. Be prepared to slow down and do things right, and get familiar with the basics. How do people gain experience in a coveted field like machine learning? One day at a time.

2. Manage your career aggressively. Take responsibility for your education and progress. One in ten people (if any) finds a mentor who clears paths, pulls strings, and ensures they come out on top in promotions and top projects. If you are in these nine, and will spend most of the time, then no one will look after you. So take care of yourself. Don’t ask for more work if you don’t trust that person with a better job than you would otherwise get. Whenever possible, do the minimum amount of work that does not advance your career or teach you anything; if it has no career value, people probably don’t care enough about it that it matters that you put in the least amount of effort as long as you don’t get in the way. After three years, if you are not being prepared for something more serious and bad, it is usually best to use external promotion (read: change of job).

3. Recognize and avoid under and over performance. Many low-effort players have been working for years. This is not a bad strategy if you are settled, but I would not fall too low. However, the only people who are usually fired for lack of performance are people who fail so badly that they create jobs for others. People who hide and do little usually don’t make enemies. At the same time, beware of oversupply. This is not like college, where challenging a professor’s ideas can score an A if you are good at arguing your point of view. Overly efficient employees often create extra work for their bosses and colleagues and attract unwanted attention (see: McNulty in The Wire ) and are more likely to be selected for “productivity” (98 percent of “performance management” in companies is politics) than of – for insufficient performance. -performers. I am not saying that you should not work hard, work hard, and learn as much as possible. This is not necessarily excessive performance; However, in my experience, over-performance – perhaps recklessly ambitious – is much more dangerous than under-performance. This can lead to your being fired, and it happens much faster. If you end up stuck in between, start dropping towards underperformance.

4. Never ask permission unless it is reckless. Want to spend a week researching on your own? Don’t ask permission. You won’t get it. You may not actually be doing your boss a favor when you ask permission; from their point of view, you are asking for the right to shift responsibility if your project fails. Since he may refuse you and your rejections ex post facto, anyway, because he is superior to you in rank, you really do not gain anything from the kind of promise that you might have made in the first place. So it’s not good to ask for this permission. Of course, if you are going to do something that poses a real risk to the business or where permission would reasonably be expected, then ask permission. If the losses are small and the risk is at your level in the company (and any programming job that you don’t trust for days or weeks of your own time doesn’t make sense), then don’t ask permission. Just do it and do it well.

5. Never apologize for being offline or using your time. You can admit that the project or investigation was not successful, although it is best if you can turn it into an exercise of discovery, but you should never apologize for a failed side project. This sets a precedent in which you obey, needing more supervision. After describing what you did on your own initiative, don’t tell your boss, “Don’t worry, I did it solely as a weekend project.” If your company does not allow you to work on something during normal business hours, do not do it on its behalf for any reason. Respect your time. Or no one else will do it.

6. Learn CS666 (what I call software development policy) and you can usually forget about it. Refuse to learn this and it will be with you forever. As we get older, we tend to see the value of transferable and shared skills: functional programming, not Spring / Hibernate; algorithms, not quirks of the legacy Java 1.4 system. Well, CS666 is ugly, but it can be used in an industry that no other programming language will have. I am not saying that you need to become a political animal or get hung up on politics because it will end badly, but you need to be politically conscious, because politics is in everything we do. It’s good to start learning people and their moves early, even if you don’t plan on playing (and when you’re young, you shouldn’t play often). Will you get the Hadoop cluster on time, who will make the technical decisions, will you get the feature freeze that was asked for so you can pay off some technical debt, and what projects are being assigned to you … all politics, man. For better or worse, meritocracy is a programmer’s Prince Charming, and in the real world, you’d better be on the side that defines merit and structures how you measure it. If you learn CS666, you will get some time to breathe and forget about it and just do a great job. If you don’t learn it, your career will be shaped by those who do it best.

7. Don’t be quixotic and try to prove your superiors wrong. When young engineers feel like their ideas are better than their leaders, but don’t find support, they often double up and spend many hours. “Let’s prove our bosses wrong … by sacrificing their time for what they own!” Sorry, but if you have to throw away the weekend (except on rare occasions like a production emergency) to get a project through to completion, that means your bosses do n’t really care about it. Otherwise, you would not have had the time and resources, and also would not have enough patience for quixoticism, either in yourself or in others. Instead of trying to home run with a cracked bat, you just have to let the game go. When bosses are “shown” by people they doubted, they don’t give that person an automatic promotion or promotion. They find a way to confirm their negative impression (and your sincere association with an unloved project made you smell bad), and even if you succeed, you will fail. At least there is always “He did a great job on this, but he was distracted from his assigned work and therefore I cannot trust him in the future” / we cannot let him create a precedent / it was actually my idea. “

8. Do not participate in other people’s battles. Since you are young and inexperienced, in most cases you probably have no real power. Your intelligence does not automatically give you trust. If you get involved in someone else’s fight or stand up for the unfair treatment of someone, you are simply mowed down. See movies “Mad Men”, “wire” and “Breaking Bad,” to find out what people really, when have any bets. Save all your energy for your own battles. The corporate world is not a place where social justice is valued – people protest when they leave, not picket – and you won’t find friends as a crusader. If you fight for yourself and it ends badly, you at least get some respect from some people (and it may pay off years later) for your self-preservation. If you fight for others, you are considered an arrogant young bastard who knows no rules.

9. Try not to think in terms of “good” and “bad”. Get ready to play anyway. Young people, especially in technology, often fall into these traps of calling something like work or company “good” or “bad” and thus react emotionally and sub-optimally. You might be thinking something like, “I’m not going to work hard because my boss yelled at Sam today and I’m upset,” or “I’m going to sacrifice my health and career goals and spend 90 hours a week grumbling. work because it’s a great startup and we’re changing the world. “

Yes, to hell with that. Every organization is a mixture of good and bad. Whatever the territory, use it to your advantage. Does the boss shout a lot? This actually makes him less of a threat to your career if he goes against you, because they are probably not trusted by their own bosses either. Have a boring project assigned? Your managers are probably bored too, which means they won’t look at you a lot. You can spend a few hours a week and you are left with 30-40+ to learn the skills for your next job. Damn culture? If you can handle it and others cannot, you are a valuable employee and can see this as a learning opportunity (“MBA by Counterexample”). The important thing is to stop thinking of every event as “good” or “bad” in some biblical sense and just look at it from an angle and how to act it out. This skill seems to improve significantly with age. You stop judging complex entities such as corporations as “good” or “evil” and simply study how the landscape is as it is.

10. Never deviate from the pay scale except for the founder. As a consequence, if you back down, expect to be treated like a founder. A 10% reduction is acceptable if you are changing industry (moving away from finance towards biotech research) or moving into an area with a lower cost of living. Also, the answer is no unless you are taking a steady step. Most people are really bad at judging how well someone is doing their job, which means that in the private sector, your salary is the best estimate of your global standing and a starting point for future negotiations. You better have a damn good reason if you step back, and you better have a high status. Employee positions in startups are no exception (for the purposes of this clause, the score is zero). If you quit your job at a $ 150,000 a year hedge fund for $ 90,000 “plus equity” (for example, how much? 0.05 percent?), Then congratulations, you are now a $ 90,000 a year programmer. It’s actually okay (as a $ 90k programmer) if you’ve moved to a less expensive area and are going to stay there, and that’s okay if the company is perhaps idealistic (like clean energy), because you probably can go back to where you were, if you are a good negotiator, but if you took this fall for other unjustified reasons, then you are just a moron and, no, you are not changing the world by fixing mistakes on ad servers.

11. Exercise. It affects your health, your self-confidence, your sex life, your balance, and your career. This hour of exercise pays off in increased productivity. If you find that you are no longer exercising, you are wasting too many hours and you need to waste your life.

12. Long hours: sometimes normal, usually harmful. The difference between 12% growth and 6% growth is significant. For a salary of $ 60,000 over 10 years, in the first case, you will receive $ 107,451, and in the other, $ 186,351. This is a big difference (not only in wages, but also in the level of work that these numbers suggest). When your work is multiplicative in nature, and your I / O ratios are truly exponential, work hard. Don’t work many hours on just additional things (“more of the same”) that don’t advance your career or knowledge in the long run. If you’re just doubling down on the rough work so that some dorky boss can save money because you work two jobs and get the same paycheck, then fuck it. Leave. It may seem that this is not so, but he needs you more than you need him.

13. Accept major technology trends beyond trivia. Half the buzzwords of NoSQL databases and big data technologies will disappear in 15 years. On the other hand, a good working knowledge of linear algebra (and no fear about this topic!) Will always work for you. There is a lot of nonsense in data science, but it has a bit of meat in it. Likewise, there is a lot of trivia and nonsense in NoSQL, but non-relational databases still have their place. It’s your job (and you get better over time, but you start to wonder when you’re young) to figure out which basic technology principles make sense and deserve to be learned in the long term (functional programming, for example) and which are just fads. It’s often helpful to be fluent in quirks (for example, if you need a job right now), but don’t spend too much time on them. Buzzword-minded programmers with little fundamental knowledge get stuck writing glue code and forced to learn new rubbish when their old silly knowledge goes out of style.

14. Finally, learn as much as you can. It’s complicated. It takes work. It’s probably overkill with some of the other points, but once you’ve learned enough politics to stay afloat, it’s important to technically level up. And when you’re out of school and probably won’t come back, it’s hard. Even really smart people find it difficult to read the most modern newspapers. (Partly because many articles are not well written, but that’s another topic.) No one is born with the ability to look at complex equations and just intuitively understand what they mean. It took the smartest people in the world hundreds of years to discover this material, and once it was discovered it will be much easier for the rest of us to follow … but it’s not easy. If you want to be a great programmer, you probably have to study like an adult (no grades!) Harder than 95% of college students (and perhaps 65% of graduate students) actually study.

What do software developers in their 30s and older know now that they would like to know in their 20s? »Originally appeared on Quora . You can follow Quora on Twitter , Facebook, and Google+ .

This answer has been edited for grammar and clarity.

More…

Leave a Reply